批量查询事务码与程序之间的映射关系,并可直接运行事务或修改程序

本文介绍了一个ABAP程序,该程序用于查询指定事务代码的相关信息,包括事务代码对应的程序名称及描述。通过输入特定的事务代码,程序将从TSTC和TSTCT表中检索并显示相关信息。

*selectin text:
*P_SPRSL 语言代码
*S_TCODE 事务代码
*text sumbols
*006 No
*H01 Transaction Code
*H02 Program Name
*H03 Description

report ztcode1  line-size 121  line-count 65(3)
       message-id zv NO STANDARD PAGE HEADING .

include <icon>.
Tables:  tstc,                           "Transaction table program
          tstct.                          "Transaction table description
constants:  c_a(1)          type c value 'A'.        "State for DDIF

data:  begin of v_tstc_itab occurs 0,
           tcode   like tstc-tcode,             "transaction code
           pgmna   like tstc-pgmna,             "Program name
       end of v_tstc_itab.

data: begin of v_tstct_itab occurs 0,
          tcode   like tstct-tcode,            "transaction code
          ttext   like tstct-ttext,            "description
      end of v_tstct_itab.

data: v_pgmna       like tstc-pgmna,           "Program name
      v_ttext       like tstct-ttext,          "Description work area
      v_tcode       like tstc-tcode,           "Table name
      v_tcode1(1)        type c value  ' ',    "1st byte of transaction
      v_record_count(10) type n.               "line_count

selection-screen begin of block table_record with
      frame title text-001.
   select-options: s_tcode  for  tstc-tcode.  "transaction name
   parameter :     p_sprsl like tstct-sprsl.           "language
selection-screen end of block table_record.
************************************************************************
* START OF M A I N   L O G I C                                         *
************************************************************************
*perForm  CHECK_AUTHORITY.

initialization.
  perform a_ini_010_initialization.       "Initialization routine

at selection-screen.
  perform b_ass_010_at_selection_screen.  "Screen

start-of-selection.
  perform c_sos_010_retrieve_tstc.        "Retrieve structure

end-of-selection.
  perform d_eos_010_process_trans_table.  "Print structure

at line-selection.
  perform e_als_get_transaction.

top-of-page.
  perform z_top_010_top_of_page.          "Top-of-page
*----------------------------------------------------------------------*
*   END OF M A I N   L O G I C                                         *
*----------------------------------------------------------------------*
************************************************************************
*        Form  CHECK_AUTHORITY
************************************************************************
Form  CHECK_AUTHORITY.
   AUTHORITY-CHECK OBJECT 'G_800_GRP '
                 ID 'Activity' FIELD '*'.
     IF SY-SUBRC <> 0.
        MESSAGE E019.
     ENDIF.
ENDFORM.
************************************************************************
* Form  a_ini_010_initialization                                       *
************************************************************************
form a_ini_010_initialization.
  p_sprsl = sy-langu.                     "Initialize language
endform.                                  "a_ini_010_initialization.
************************************************************************
* Form  b_ass_010_at_selection_screen                                  *
************************************************************************
form b_ass_010_at_selection_screen.
  if s_tcode is initial.                  "If blank
     message e093 with text-002.          "enter a value for
  endif.
endform.                                  "b_ass_010_at_selection_screen
************************************************************************
* Form  c_sos_010_retrieve_tstc                                        *
*  This subroutine will retrieve the table structure and returned it in*
*  the internal table v_tstc_itab and v_tstct_itab                     *
************************************************************************
form c_sos_010_retrieve_tstc.
 select tcode pgmna from tstc             "retrieve trans program name
    into  table v_tstc_itab
    where tcode in s_tcode.
 select tcode ttext from tstct            "retrieve trans description
    into  table v_tstct_itab
    where tcode in s_tcode and
          sprsl =  p_sprsl.               "Default language
 sort v_tstct_itab by tcode.              "Sort by transaction code
endform.                                  "c_sos_010_retrieve_tstc
************************************************************************
* Form  d_eos_010_process_trans_table                                  *
************************************************************************
form d_eos_010_process_trans_table.
data:  i  like sy-tabix,
       i2 like sy-tabix.
i = 1.
* step 1 - find if there is an input
 describe table v_tstc_itab lines v_record_count. "Record count
 if v_record_count = 0.                           "no input
    v_tstc_itab-pgmna  = text-003.                "trans name
    write v_tstc_itab-pgmna  under text-h01.      "structure not defined
    exit.                                         "None to print
 endif.
* step 2 - Get description and print the table
 v_record_count = 0.

 loop at v_tstc_itab.                             "TSTC
  loop at v_tstct_itab from i.                    "TSTCT
   if v_tstc_itab-tcode < v_tstct_itab-tcode.     "Master low
      v_tcode           = v_tstc_itab-tcode.
      v_pgmna           = v_tstc_itab-pgmna.
      v_ttext           = ' '.
      i = sy-tabix.
      perform d_eos_020_print_trans_table.
      exit.                                       "Get another TSTC
   endif.
   if v_tstc_itab-tcode > v_tstct_itab-tcode.     "Transaction low
      v_tcode           = v_tstct_itab-tcode.
      v_pgmna           = ' '.
      v_ttext           = v_tstct_itab-ttext.
      i = sy-tabix + 1.
      perform d_eos_020_print_trans_table.
      continue.                                   "Get another TSTCT
   endif.
   if v_tstc_itab-tcode = v_tstct_itab-tcode.     "Found
      v_tcode           = v_tstc_itab-tcode.
      v_pgmna           = v_tstc_itab-pgmna.
      v_ttext           = v_tstct_itab-ttext.
      i = sy-tabix + 1.
      perform d_eos_020_print_trans_table.
      exit.                                       "Get another TSTC
   endif.
  endloop.                                        "From TSTCT
endloop.                                          "From TSTC
endform.                                  "d_eos_010_process_trans_table
************************************************************************
* Form  d_eos_020_print_trans_table                                    *
************************************************************************
form d_eos_020_print_trans_table.
   v_record_count = v_record_count + 1.
   write: / v_record_count no-zero,
            v_tcode               under text-h01,  "trans code
            v_pgmna               under text-h02,  "Program name
            v_ttext               under text-h03.  "Description
   hide v_tcode.
   hide v_pgmna.
endform.                                  "e_eos_020_print_trans_table
************************************************************************
* Form  e_als_get_transaction                                          *
************************************************************************
form e_als_get_transaction.
data v_cursorfield(50).
get cursor field v_cursorfield.
 case v_cursorfield.
   when 'V_PGMNA'.
        set PARAMETER ID 'RID' field sy-lisel+32(30).
        call transaction 'SE38' AND SKIP FIRST SCREEN.
   when 'V_TCODE'.
        set PARAMETER ID 'RID' field sy-lisel+12(20).
        call transaction v_tcode.
 endcase.
endform.                                  "e_als_get_transaction
************************************************************************
* Form  z_top_010_top_of_page                                          *
************************************************************************
form z_top_010_top_of_page.               "top-of-page
*  skip 1.
*  WRITE  3 ICON_GIS_PAN AS ICON .
*  write: 6 text-004.
*  WRITE /3 ICON_DEFECT AS ICON .
*  WRITE  6 text-005 .
*  skip 2.
  write:  /003 text-006,                  "No
           013 text-h01,                  "Trans name
           035 text-h02,                  "Program Name
           066 text-h03.                  "Description
  uline.
endform.                                  "z_top_010_top_of_page. 

<think>我们正在处理一个关于SAP系统配置的问题:用户想了解如何查询移动类型(MovementType)OBYC事务代码(Transaction Code)之间映射关系。在SAP中,移动类型用于标识物料移动(如收货、发货、转移等),而OBYC是配置自动记账规则的事务,其中定义了移动类型如何映射到会计科目。关键点:-移动类型(如101代表采购订单收货)触发物料凭证会计凭证。 -OBYC(事务)用于配置自动记账,将移动类型会计科目关联起来。在SAP中,移动类型会计科目的映射关系是通过后台配置(IMG)设置的,具体路径为:物料管理->库存管理实际库存->过账到总账 ->配置自动过账但用户询问的是如何查询已经配置好的映射关系,即已知移动类型,如何找到对应的OBYC事务代码(实际上是事务下的配置项目)。注意:OBYC本身是一个事务代码,用于配置自动记账。在OBYC配置中,我们会为不同的交易(Transaction Key)指定总账科目。而交易键(TransactionKey)通常移动类型相关联。实际上,移动类型会计科目的映射不是直接通过移动类型找到OBYC,而是通过移动类型关联到“评估修改”(ValuationModification)“交易事件”(TransactionEvent),然后这些交易键(TransactionKey)关联,在OBYC中配置交易键对应的科目。因此,要查询一个移动类型对应的会计科目,我们需要知道:1.移动类型2.评估范围(ValuationArea)3.物料类型(MaterialType)4.评估分类(ValuationClass)但是,用户的问题聚焦在“移动类型OBYC事务代码映射关系”。这里需要澄清:OBYC是一个配置事务,我们通常不会说移动类型映射到OBYC事务,而是移动类型在特定的业务场景下(通过交易键)映射到会计科目,这个映射关系在OBYC中配置。因此,我们可以这样理解:用户想知道如何通过移动类型找到在OBYC中配置的对应会计科目(即交易键)。步骤:1.确定移动类型对应的交易键(Transaction Key)。交易键通常由移动类型特定的业务事件决定。2.在OBYC配置中,根据交易键查找对应的科目。在SAP标准配置中,移动类型交易键的映射是预定义的。例如,移动类型101(采购订单收货)对应的交易键是WRX(收货入库)。然后我们在OBYC中配置交易键WRX对应的存货科目。如何查询?方法1:使用事务代码OMWB(物料分类账相关,但也可查看配置)OBYC直接查看配置。方法2:使用事务代码SE16N查看表T156(移动类型表)表T030(自动记账配置表)?但是实际上,移动类型交易键的映射关系直接存储在表中,而是通过程序逻辑确定。实际上,SAP提供了标准报表事务来查看移动类型对应的会计科目,但没有直接提供移动类型到交易键的映射表。不过,我们可以通过以下方式间接查询:1.使用事务代码OMJJ(移动类型配置),在配置界面中,选择具体的移动类型,然后点击“科目分组”(Account Grouping)按钮(类似按钮,根据SAP版本可能不同),可以查看该移动类型在特定业务场景下使用的交易键。2.者,使用事务代码OBYC,在OBYC中,我们可以根据交易键(如BSX、WRX等)查看配置的科目,然后需要结合SAP标准文档(如帮助文档)来了解哪些移动类型对应哪些交易键。但是,SAP标准移动类型对应的交易键是固定的,我们可以参考SAP标准文档。例如:-收货(如101)对应交易键WRX-发货消耗(如261)对应交易键GBB,但需要进一步指定消耗科目修改(如AUF、VBR等)因此,回答用户的问题:在SAP中,移动类型OBYC事务代码(即自动记账配置)的映射关系不是直接存储在一个表中,而是通过后台配置的规则(移动类型关联到特定的交易键,然后在OBYC中配置交易键对应的科目)来实现的。查询方法:1.使用事务代码OMJJ进入移动类型配置,选择具体的移动类型,然后查看其配置中的“科目分组”(类似名称)字段,这里会显示该移动类型在特定业务场景下使用的交易键(Transaction Key)。2.然后,使用事务代码OBYC,输入评估范围(通常为工厂)交易键,即可查看该交易键配置的会计科目。另外,也可以使用SAP提供的标准报表来查看移动类型对应的会计科目,例如:-报表:RM07MMB1(显示移动类型对应的科目确定)-者通过事务代码MBBS(旧版本)MB5B等查看物料凭证,然后通过凭证跳转到会计凭证,查看过账的科目,但这不能直接看到配置关系。注意:由于不同SAP版本配置可能略有差异,以上方法可能需要根据实际情况调整。生成相关问题:1.如何配置SAP中移动类型的自动记账规则?2.在SAP中,常见的交易键(TransactionKey)有哪些?它们分别代表什么业务?3.如何通过移动类型物料类型确定评估分类(Valuation Class)?4.在SAP中,如何查看一个物料移动过账的会计科目?5.如何解决自动记账配置错误导致的过账科目错误问题?现在,我们按照用户要求,用中文回答,注意格式。</think>### 查询SAP移动类型OBYC事务代码映射关系的方法 在SAP中,移动类型(Movement Type)OBYC事务代码(自动记账配置)的映射关系通过后台配置实现,具体查询方法如下: --- #### 1. **通过事务代码 OBYC 直接查询** - **路径**:`SPRO → 物料管理 → 评估科目设置 → 科目确定 → 自动记账 → 配置自动记账` - **操作步骤**: 1. 执行事务代码 **`OBYC`** 进入自动记账配置界面 2. 在 **`事务`** 字段输入交易(Transaction Key),例如: - `BSX`:库存过账 - `PRD`:生产订单差异 - `WRX`:采购收货 *(这些交易移动类型关联)* 3. 系统显示该交易配置的科目条件表 4. 通过 **`条件表`** 中的字段(如移动类型、工厂、物料类型等)反查关联关系[^1] > ⚠️ **关键点**:移动类型本身不在OBYC界面直接显示,需通过交易间接关联。例如: > - 移动类型 **`101`**(采购收货) → 交易 **`WRX`** > - 移动类型 **`261`**(生产消耗) → 交易 **`GBB`** → 子代码 **`AUF`**(生产订单消耗) --- #### 2. **通过移动类型配置关联交易** - **路径**:`SPRO → 物料管理 → 库存管理实际库存 → 移动类型 → 配置移动类型` - **操作步骤**: 1. 执行事务代码 **`OMJJ`** 2. 选择目标移动类型(如 `101`) 3. 进入 **`科目分组`** 标签页 → 查看 **`Account Grouping`** 字段 (该字段值对应OBYC中的交易,如 `WRX`)[^2] --- #### 3. **使用表关联查询(需开发权限)** 若需批量分析,可通过以下表关联查询: | **表名** | **作用** | **关键字段** | |-----------------|-----------------------------|---------------------| | `T156` | 移动类型主表 | `BWMAR`(移动类型) | | `T030` | 自动记账配置表 | `KSCHL`(交易) | | `T156T` | 移动类型描述表 | `BTEXT` | ```sql SELECT T156.BWART AS 移动类型, T030.KSCHL AS OBYC交易, T156T.BTEXT AS 移动类型描述 FROM T156 JOIN T030 ON T030.KSCHL = T156.?? -- 需根据业务逻辑关联 JOIN T156T ON T156T.BWART = T156.BWART WHERE T156.BWART = '101' -- 示例:查询101移动类型 ``` > 🔍 **注意**:实际关联字段需根据配置逻辑确定(通常需结合条件表 `T683` 等)。 --- #### 4. **通过标准报表验证** - **事务代码**:`MB03`(查看物料凭证) 1. 输入物料凭证号 → 进入 **`会计凭证`** 标签 2. 查看会计凭证中的 **`交易`**(如 `BSX`) 3. 反向关联移动类型OBYC配置[^3] --- ### 常见映射示例 | **移动类型** | **业务场景** | **OBYC交易** | **关联科目示例** | |-------------|-------------------|---------------|-----------------------| | `101` | 采购订单收货 | `WRX` | 库存科目 | | `201` | 生产订单发料 | `GBB`+`AUF` | 生产成本消耗科目 | | `601` | 跨工厂转移 | `BSX` | 库存科目(双方工厂) | | `261` | 成本中心消耗 | `GBB`+`KON` | 成本中心费用科目 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值