用BDC实现ALV事件多级跳转(例MEK2)

来源:互联网 发布:mac系统怎么看配置 编辑:程序博客网 时间:2024/05/21 10:09

自己做的报表有时候需要点击某行跳转到标准事务代码的需求

最常用的方法是:

SET PARAMETER ID 'XXX' FIELD 'VALUE'.  “传值

CALL TRANSACTION  'T-CODE' AND  SKIP  FIRST  SCREEN.  "跳转到第一个屏幕

但是发现两个问题:

1,此方法只能跳转到第一个屏幕,如果屏幕中有需要执行才能往下走的就跳转不过去

2,日期格式貌似传值不过去(这个问题有待研究)

 

这个问题后面在网上找了好多方法,最后老大用BDC解决了(参考ZMM1036,例跳转MEK2)

user_command :

FORM user_command USING ucomm LIKE sy-ucomm    selfield TYPE slis_selfield.  READ TABLE i_list INDEX selfield-tabindex.  CHECK sy-subrc = 0.  CASE ucomm.    WHEN '&IC1'.  "&DATA_SAVE响应保存键 &IC1双击事件*      CASE selfield-sel_tab_field.  "不判断列 点击任意一列都可以跳转*        WHEN  '1-LLIEF'.*&-----------------用bdc 跳转 ,可以跳转多级---------------------      PERFORM skip_to_mek2 .*&---------------正常跳转,只能跳转一级------*      SET PARAMETER ID 'VKS' FIELD i_list-kschl. "传条件类型PB77*      SET PARAMETER ID 'LLI' FIELD i_list-llief. "传供应商*      SET PARAMETER ID 'WRK' FIELD i_list-werks. "传工厂*      SET PARAMETER ID 'EKO' FIELD i_list-ekorg. "传采购组织*      SET PARAMETER ID 'MAT' FIELD i_list-matnr. "传物料编码**      SET PARAMETER ID 'ESO' FIELD i_list-esokz. "*      SET PARAMETER ID 'KDA' FIELD i_list-datab. "传有效期 这里传开始日期 传不过去?*      CALL TRANSACTION  'MEK2' AND  SKIP  FIRST  SCREEN. "跳到第一个屏幕 怎么跳第二次?**      ENDCASE.  ENDCASE.ENDFORM.                    "USER_COMMAND


BDC 跳转到屏幕

*&---------------------------------------------------------------------**&      Form  skip_to_mek2*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*FORM skip_to_mek2.  DATA: bdcdata_wa  TYPE bdcdata,       bdcdata_tab TYPE TABLE OF bdcdata.  DATA opt TYPE ctu_params.  CLEAR bdcdata_wa.  bdcdata_wa-program  = 'SAPMV13A'.  bdcdata_wa-dynpro   = '0100'.  bdcdata_wa-dynbegin = 'X'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'BDC_OKCODE'.  bdcdata_wa-fval = '/00'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'RV13A-KSCHL'.  bdcdata_wa-fval = i_list-kschl.  "'PB77'.条件类型  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-program  = 'RV13A777'.  bdcdata_wa-dynpro   = '1000'.  "屏幕编号  bdcdata_wa-dynbegin = 'X'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'BDC_CURSOR'.  bdcdata_wa-fval = 'SEL_DATE'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'BDC_OKCODE'.  bdcdata_wa-fval = '/00'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F001'.  bdcdata_wa-fval = i_list-llief.  "'3365'. 供应商  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F002'.  bdcdata_wa-fval = i_list-werks."'1000'. 工厂  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F003'.  bdcdata_wa-fval = i_list-ekorg. "'2000'. 采购组织  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F004'.  bdcdata_wa-fval = i_list-matnr. "'120101689'.物料编码  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F005-LOW'.  bdcdata_wa-fval = i_list-esokz. "'0'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'SEL_DATE'.  bdcdata_wa-fval = i_list-datab. "'20140818'. 有效期  APPEND bdcdata_wa TO bdcdata_tab.CLEAR bdcdata_wa.  bdcdata_wa-program  = 'RV13A777'.  bdcdata_wa-dynpro   = '1000'.  bdcdata_wa-dynbegin = 'X'.  APPEND bdcdata_wa TO bdcdata_tab. CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'BDC_CURSOR'.  bdcdata_wa-fval = 'SEL_DATE'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'BDC_OKCODE'.  bdcdata_wa-fval = '=ONLI'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F001'.  bdcdata_wa-fval = i_list-llief. "'3365'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F002'.  bdcdata_wa-fval = i_list-werks. "'1000'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F003'.  bdcdata_wa-fval = i_list-ekorg. "'2000'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F004'.  bdcdata_wa-fval = i_list-matnr. "'120101689'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'F005-LOW'.  bdcdata_wa-fval = i_list-esokz. "'0'.  APPEND bdcdata_wa TO bdcdata_tab.  CLEAR bdcdata_wa.  bdcdata_wa-fnam = 'SEL_DATE'.  bdcdata_wa-fval = i_list-datab. "'20140818'.  APPEND bdcdata_wa TO bdcdata_tab.  opt-dismode = 'E'.  opt-defsize = 'X'.  CALL TRANSACTION 'MEK2' USING bdcdata_tab OPTIONS FROM opt.ENDFORM.                    "skip_to_mek2


上面的BDC子程序先录屏,(以后可以依葫芦画瓢实现):

 

 

0 0