CALL TARNSACTION AND SUBMIT
通常有这样的需求:事务码之间的跳转
1)首先会想到submit的使用当从A程序跳转到B程序时,顺带传入B程序的输入参数值
submit 的使用方法为: submit program-name with p_werks = p_werks and return.
实现的效果就是跳转到B程序,然后返回到A程序
2)如果B程序有两个屏幕,先执行一个屏幕1,再跳转到另一个屏幕2,我们需要A调用完B以后,
顺带给屏幕1赋完值,紧接着给屏幕2赋值 这样的需求submit就有了局限性,这个时候可以用call transaction 来实现
具体的实现方法:
data: gs_bdcdata type bdcdata,
gs_opt type ctu_params,
gt_btcdata type table of bdcdata.
refresh gt_btcdata[]. clear gs_bdcdata.
gs_bdcdata-program = '程序B'. "调用程序名
gs_bdcdata-dynpro = '屏幕1'. "程序B的第一个屏幕
gs_bdcdata-dynbegin = 'X'.
append gs_bdcdata to gt_bdcdata.
clear gs_bdcdata.
gs_bdcdata-fnam = 'P_WERKS'. "程序B第一个屏幕的输入字段
gs_bdcdata-fval = 'P_WERKS'. "程序A的传入值
append gs_bdcdata to gt_bdcdata.
clear gs_bdcdata.
gs_bdcdata-fnam = 'BDC_OKCODE'. "程序B的执行按钮
gs_bdcdata-fval = 'ONLI'. "执行按钮的功能码
append gs_bdcdata to gt_bdcdata.
clear gs_bdcdata.
gs_bdcdata-fnam = 'G_INPUT'. "程序B第二个屏幕的输入字段
gs_bdcdata-fval = '12345'. "该字段的传入值
append gs_bdcdata to gt_bdcdata.
clear gs_bdcdata.
gs_bdcdata-fnam = 'BDC_OKCODE'. "程序B的执行按钮
gs_bdcdata-fval = '/00'. "回车
append gs_bdcdata to gt_bdcdata.
gs_opt-dismode = 'E'.
gs_opt-defsize = ''.
call tsransaction '事务码' using gt_bdcdata options from gs_opt.
以上代码就可以实现这个需求