REPORT zuserexit1. TABLES: tstc, tstct, tadir, trdir, tfdir, enlfdir, modsapt, modact. DATA: jtab LIKE tadir OCCURS 0 WITH HEADER LINE, field1(30), v_devclass LIKE tadir-devclass.
PARAMETERS: p_tcode LIKE tstc-tcode OBLIGATORY.
SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode. IF sy-subrc EQ 0. SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR' AND object = 'PROG' AND obj_name = tstc-pgmna. MOVE tadir-devclass TO v_devclass.
IF sy-subrc NE 0. SELECT SINGLE * FROM trdir WHERE name = tstc-pgmna. IF trdir-subc EQ 'F'.
SELECT SINGLE * FROM tfdir WHERE pname = tstc-pgmna.
SELECT SINGLE * FROM enlfdir WHERE funcname = tfdir-funcname.
SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR' AND object = 'FUGR' AND obj_name = enlfdir-area. MOVE tadir-devclass TO v_devclass. ENDIF. ENDIF.
SELECT * FROM tadir INTO TABLE jtab WHERE pgmid = 'R3TR' AND object = 'SMOD' AND devclass = v_devclass.
SELECT SINGLE * FROM tstct WHERE sprsl EQ sy-langu AND tcode EQ p_tcode. FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
IF NOT jtab[] IS INITIAL. WRITE:/(95) sy-uline. FORMAT COLOR COL_HEADING INTENSIFIED ON. WRITE:/1 sy-vline, 2 'Exit Name', 21 sy-vline , 22 'Description', 95 sy-vline. WRITE:/(95) sy-uline. LOOP AT jtab. SELECT SINGLE * FROM modsapt WHERE sprsl = sy-langu AND name = jtab-obj_name. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. WRITE:/1 sy-vline, 2 jtab-obj_name HOTSPOT ON, 21 sy-vline , 22 modsapt-modtext, 95 sy-vline. ENDLOOP. WRITE:/(95) sy-uline. DESCRIBE TABLE jtab. SKIP. FORMAT COLOR COL_TOTAL INTENSIFIED ON. WRITE:/ 'No of Exits:' , sy-tfill. ELSE. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(95) 'User Exit doesn''t exist'. ENDIF. ELSE. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(95) 'Transaction Code Does Not Exist'. ENDIF.
AT LINE-SELECTION. GET CURSOR FIELD field1. CHECK field1(4) EQ 'JTAB'. SET PARAMETER ID 'MON' FIELD sy-lisel+1(10). CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
执行示例
处理时,输入事务代码 ME01,然后按 F8(执行)按钮。
💥使用方法
运行程序,输入要查询的事务代码
按 F8 执行
程序会列出该事务代码关联的所有用户出口
点击出口名称可跳转到 SMOD 进行查看
🏗️ SAP增强技术对比
graph TD
A[SAP增强技术] --> B[用户出口<br>User Exit]
A --> C[客户出口<br>Customer Exit]
A --> D[BADI<br>Business Add-In]
B --> B1["仅SD模块<br>修改标准程序"]
C --> C1["模块化增强<br>函数模块调用"]
D --> D1["面向对象<br>可多次实现<br>支持过滤器"]