参考原文连接:https://blog.youkuaiyun.com/qq_33539438/article/details/116016267
- 使用BDC 参数调用事务码并进行跳转(本人没尝试过这种方法)
REPORT YTEST.
INCLUDE BDCRECXY. "使用BDC一定要包含此文件
DATA L_OPT TYPE CTU_PARAMS.
SELECTION-SCREEN PUSHBUTTON /1(20) PUBU1 USER-COMMAND ABCD."在选择界面上创建一个按钮
AT SELECTION-SCREEN OUTPUT.
MOVE 'My Button' TO PUBU1.
AT SELECTION-SCREEN.
CASE SY-UCOMM.
WHEN 'ABCD'.
PERFORM BDC_DYNPRO USING 'ZRPP_008' '1000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'GW_HEADER-FILENO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ZREFLESH'.
PERFORM BDC_FIELD USING 'GW_HEADER-FILENO' '100000000034'.
L_OPT-DISMODE = 'E'.
L_OPT-DEFSIZE = 'X'.
CALL TRANSACTION 'ZPP083' WITH AUTHORITY-CHECK USING BDCDATA OPTIONS FROM L_OPT. "WITH WITHOUT
ENDCASE.
2、使用 PARAMETER ID 调用事务码并进行跳转(我自己用的)
使用场景:双击调用事务CS03并将参数填进事务CS03的PARAMETER ID里面。
注:如何查看事务CS03的PARAMETER ID:
*定义结构体
TYPES: BEGIN OF t_str,
mandt TYPE mast-mandt, "公司
werks TYPE mast-werks, "工厂
matnr TYPE mast-matnr, "物料编号
stlan TYPE mast-stlan, "物料清单用途
maktx TYPE makt-maktx, "物料描述
meinh TYPE marm-meinh, "计量单位
beskz TYPE marc-beskz, "采购类型
beskz_zh TYPE c LENGTH 20, "采购类型中文描述
sobsl TYPE marc-sobsl, "特殊采购类型
END OF t_str.
*定义内表和结构
DATA: gt_alv TYPE TABLE OF t_str,
gs_alv TYPE t_str.
DATA:grid TYPE REF TO cl_gui_alv_grid, "调用avl控件
container TYPE REF TO cl_gui_custom_container.
*定义事件类
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS: handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
ENDCLASS.
*实现事件方法
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_double_click.
CONDENSE e_row NO-GAPS.
CONDENSE e_column NO-GAPS.
IF e_column EQ 'MATNR'.
CLEAR gs_alv.
READ TABLE gt_alv INTO gs_alv INDEX e_row. "根据INDEX读取内表的目标行数据
SET PARAMETER ID 'MAT' FIELD gs_alv-matnr. "设置目标参数ID的值
SET PARAMETER ID 'CSV' FIELD gs_alv-stlan.
SET PARAMETER ID 'WRK' FIELD gs_alv-werks.
CALL TRANSACTION 'CS03' AND SKIP FIRST SCREEN. "调用事务并跳过初始界面
ENDIF.
ENDMETHOD.
ENDCLASS.
DATA: event_receiver TYPE REF TO lcl_event_receiver. "创建事件类
CREATE OBJECT event_receiver. "创建事件类对象
SET HANDLER event_receiver->handle_double_click FOR grid."注册事件
3、以上两种方式都能使用 ABAP4_CALL_TRANSACTION 来进行跳转
"仅事务跳转
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
EXPORTING
TCODE = 'SE38'.
"使用 PARAMETER ID
DATA:GT_RFC_SPAGPA TYPE TABLE OF RFC_SPAGPA,
GW_RFC_SPAGPA LIKE LINE OF GT_RFC_SPAGPA.
GW_RFC_SPAGPA-PARID = 'BES'.
GW_RFC_SPAGPA-PARVAL = '4110000051'.
APPEND GW_RFC_SPAGPA TO GT_RFC_SPAGPA.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
EXPORTING
TCODE = 'ME23N'
SKIP_SCREEN = 'X' "SKIP FIRST SCREEN
TABLES
SPAGPA_TAB = GT_RFC_SPAGPA.
"使用BDC 参数
DATA:BDCDATA LIKE BDCDATA OCCURS WITH HEADER LINE.
DATA:MESSTAB LIKE BDCMSGCOLL OCCURS WITH HEADER LINE.
PERFORM BDC_DYNPRO USING 'ZRPP_008' '1000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'GW_HEADER-FILENO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ZREFLESH'.
PERFORM BDC_FIELD USING 'GW_HEADER-FILENO' '100000000034'.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
EXPORTING
TCODE = 'ZPP083'
MODE_VAL = 'A' "A:前台,显示屏幕 E:遇到错误停止并显示 N:后台模式
UPDATE_VAL = 'S' "A:异步 S:同步 L:本地模式
TABLES
USING_TAB = BDCDATA
MESS_TAB = MESSTAB.
4、调用TH_CREATE_MODE (调用TCODE并在新窗口展示)
CALL FUNCTION 'TH_CREATE_MODE'
EXPORTING
transaktion = 'SE38'.
————————————————
版权声明:本文为优快云博主「qq_986119050」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_33539438/article/details/116016267