SAP 详细聊聊CALL TRANSACTION用法

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

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

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

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

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

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

 

 

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值