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

本文介绍了如何使用BDC(Batch Data Communication)技术来解决ALV报告中行点击事件多级跳转的问题。传统方法通过设置参数和调用事务代码跳转存在限制,例如只能跳转到第一个屏幕和可能的日期格式问题。通过参考ZMM1036并记录屏幕操作,BDC提供了解决这些问题的方案。
摘要由CSDN通过智能技术生成

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

最常用的方法是:

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 .
*&---------------正常跳转,只能跳转一级------
下面是一个简单的 ABAP Report BDC 实现创建采购合同的示: 1. 创建一个自定义的屏幕布局,包含需要输入的采购合同信息。 2. 使用 TCODE SHDB 记录一个标准的采购合同创建过程的 BDC 数据。 3. 通过 ABAP 代码将该 BDC 数据读入内存中,并替换其中需要输入的信息为用户在屏幕上输入的信息。 4. 执行 BDC 事务,创建采购合同。 以下是一个示 ABAP Report 代码: ``` REPORT z_create_purchase_contract. DATA: BEGIN OF bdcdata OCCURS 0, program LIKE sy-repid, dynpro LIKE sy-dynnr, dynbegin(1) TYPE c, fnam LIKE bdcdata-fnam, fval LIKE bdcdata-fval, END OF bdcdata. DATA: v_ebeln TYPE ekko-ebeln, v_bsart TYPE ekko-bsart, v_bukrs TYPE ekko-bukrs, v_lifnr TYPE ekko-lifnr, v_waers TYPE ekko-waers. PARAMETERS: p_ebeln TYPE ekko-ebeln, p_bsart TYPE ekko-bsart, p_bukrs TYPE ekko-bukrs, p_lifnr TYPE ekko-lifnr, p_waers TYPE ekko-waers. v_ebeln = p_ebeln. v_bsart = p_bsart. v_bukrs = p_bukrs. v_lifnr = p_lifnr. v_waers = p_waers. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = v_ebeln IMPORTING output = v_ebeln. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0100'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_SELECT-EKGRP'. bdcdata-fval = v_bsart. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0101'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_SELECT-BUKRS'. bdcdata-fval = v_bukrs. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0102'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_SELECT-LIFNR'. bdcdata-fval = v_lifnr. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0103'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_SELECT-WAERS'. bdcdata-fval = v_waers. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-EBELN'. bdcdata-fval = v_ebeln. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-EKORG'. bdcdata-fval = '1000'. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-BSART'. bdcdata-fval = v_bsart. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-BUKRS'. bdcdata-fval = v_bukrs. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-LIFNR'. bdcdata-fval = v_lifnr. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-WAERS'. bdcdata-fval = v_waers. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-ABSAK'. bdcdata-fval = 'X'. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-BEDAT'. bdcdata-fval = sy-datum. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-ERNAM'. bdcdata-fval = sy-uname. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0200'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-LOEKZ'. bdcdata-fval = 'X'. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0210'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-EBELN'. bdcdata-fval = v_ebeln. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0211'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-EBELN'. bdcdata-fval = v_ebeln. APPEND bdcdata. CLEAR bdcdata. bdcdata-program = 'SAPLMEGUI'. bdcdata-dynpro = '0211'. bdcdata-dynbegin = 'X'. APPEND bdcdata. bdcdata-fnam = 'MEPO_CREATE-PO_TEXT'. bdcdata-fval = '采购合同文本'. APPEND bdcdata. CALL FUNCTION 'BDC_INSERT' EXPORTING program = bdcdata-program dynpro = bdcdata-dynpro dynbegin = bdcdata-dynbegin TABLES bdcdata = bdcdata. CALL FUNCTION 'BDC_TRANSACTION' EXPORTING update_task = 'S' EXCEPTIONS OTHERS = 1. ``` 在该示中,我们使用了 PARAMETERS 语句定义了用户需要输入的采购合同信息,然后将这些信息替换到 BDC 数据中。最后通过调用 BDC_INSERT 和 BDC_TRANSACTION 函数执行 BDC 事务,创建采购合同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值