SAP 详细聊聊CALL TRANSACTION用法

2023-10-13 15:17:24 浏览数 (1)

CALL TRANSACTION 'tcode' USING bdc_tab ... 是 ABAP 里提供的一个方便的执行批量输入的语句,使用它可以通过程序代码完成多个事务码的连续执行。

bdc_tab 这个批输入任务表的填写方式,网上有很多例子了,大家用到的时候可以搜索。用事务码 SHDB 可以生成填写这个表的内容,按照 ABAP 字典结构类型 BDCDATA 的定义对应填写就可以了。

下面详细介绍一下这种调用方式中的执行参数:

... { {[MODE mode] [UPDATE upd]}      | [OPTIONS FROM opt] }      [MESSAGES INTO itab] ... .

MODE 确定批输入的执行模式,有下面几个可选值:

UPDATE 确定批输入的更新模式,有下面几个可选值:

代码语言:javascript复制
1.使用屏幕传入
               REFRESH BDCDATA.
               CLEAR   BDCDATA.
               BDCDATA-PROGRAM = 'SAPLCSDI'.      "Programm St點kliste
               BDCDATA-DYNPRO   = '0100'.          "Dynpro
               BDCDATA-DYNBEGIN = 'X'.             "Sofort starten
               APPEND BDCDATA.
               CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'   "HW 81070
                    EXPORTING
                         INPUT   = H_MATNR
                    IMPORTING
                         OUTPUT = H_MATNR
                    EXCEPTIONS
                         OTHERS = 0.
               CLEAR   BDCDATA.
               BDCDATA-FNAM     = 'RC29N-MATNR'.     "Material
               BDCDATA-FVAL     = H_MATNR.
               APPEND BDCDATA.
               CLEAR   BDCDATA.
               BDCDATA-FNAM     = 'RC29N-WERKS'.     "Werks
               BDCDATA-FVAL     = H_WERKS.
               APPEND BDCDATA.
               CLEAR   BDCDATA.
               BDCDATA-FNAM     = 'RC29N-STLAN'.     "Verwendung
               BDCDATA-FVAL     = H_STLAN.
               APPEND BDCDATA.
              CLEAR   BDCDATA.
               BDCDATA-PROGRAM = 'SAPLCSDI'.      "Programm St點kliste
               BDCDATA-DYNPRO   = '0150'.          "Dynpro
               BDCDATA-DYNBEGIN = 'X'.             "Sofort starten
               APPEND BDCDATA.
              CLEAR   BDCDATA.
               BDCDATA-FNAM     = 'BDC_OKCODE'.
               BDCDATA-FVAL     = '/BDA'.
               APPEND BDCDATA.
              CALL TRANSACTION 'CS03' USING BDCDATA MODE 'E'.
 2.使用parameter
       SET PARAMETER ID 'MAT' FIELD P_MATNR."ID为按FI可以查到
       SET PARAMETER ID 'WRK' FIELD P_WERKS.
       SET PARAMETER ID 'CSV' FIELD P_STLAN.

      CALL TRANSACTION 'CS03' AND SKIP FIRST SCREEN.
 3.使用memory
 data:
 wfbomcom       type rc29n.
 move-corresponding bom_key to wfbomcom. "#EC ENHOK        "note0526541
 wfbomcom-aennr = display_aennr.
 wfbomcom-datuv = display_datuv.
 wfbomcom-datub = display_datub.
 export wfbomcom to memory id 'WFBOMCOM'.
 * display bom
 call transaction 'CS03' and skip first screen.
程序调用语句:
在程序中使用 submit关键字 调用 下一个程序
1)        Submit prog_name_2 (restart)
2)        Submit prog_name_2 and return  (insertion)
3)        Submit prog_name_2 via selection-screen and return   (insertion)

 via selection-screen作用: 如果程序2中有选择屏幕,则程序2被调用时 会弹出屏幕

 Restart
Leave to transaction <T-code>: 功能相当于 输入”/n<T-code>”,当程序执行该语句时,该程序就会在内存被清空,接着转到相应的TCODE程序中去
insertion
call transaction <T_CODE> [and skip first screen 忽略被调用程序的第一个屏幕]
执行下一个程序, 当前程序会被压到栈的下一个位置而不会被清空
重点: and skip first screen 忽略被调用程序的第一个屏幕 ,但是 PBO 和 PAI 的Module还会被执行.

0 人点赞