CALL TRANSACTION 和 SUBMIT 事务码之间的跳转

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.

      以上代码就可以实现这个需求

posted @ 2015-02-06 16:37  林中白狼-LBG  阅读(667)  评论(0编辑  收藏  举报