SAP 根据TCODE查找增强出口(用代码)

本程序用于查询指定SAP事务代码的所有用户出口、Badi增强及复合增强实现等详细信息,并允许直接跳转到相关增强实现进行修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行程序,输入t-code,在第一个模Exit Name 就是出口增强,后面的是Badi增强。

查看描述寻找需要的出口。

REPORT  ZBB_FIND_EXIT

NO STANDARD PAGE HEADING LINE-SIZE 255.

TABLES TSTC,     "SAP Transaction Codes(SAP 事务代码)
         TADIR,    "Directory of Repository Objects(资源库对象的目录)
         MODSAPT,  "SAP Enhancements - Short Texts(SAP增强-短文件)
         SXS_ATTRT,"Exit: Definition side: Attributes, Text table
         MODACT,   "Modifications(修正)
         TRDIR,    "System table TRDIR(系统表 TRDIR)
         TFDIR,    "Function Module(功能模块)
         ENLFDIR,  "Additional Attributes for Function Modules(功能模块的附加属性)
         TSTCT.    "Transaction Code Texts(事务代码文本)

DATA JTAB LIKE TADIR OCCURS WITH HEADER LINE"SMOD
DATA ITAB LIKE TADIR OCCURS WITH HEADER LINE"SE18-BADI
DATA KTAB LIKE TADIR OCCURS WITH HEADER LINE"Enhancement implementation-ENHO
DATA LTAB LIKE TADIR OCCURS WITH HEADER LINE"Enhancement Spot-ENHS
DATA MTAB LIKE TADIR OCCURS WITH HEADER LINE"Composite Enhancement implementation-ENHC
DATA FIELD1(30).
DATA V_DEVCLASS LIKE TADIR-DEVCLASS.
DATA T_COUNT LIKE SY-TFILL.
DATABDCDATA_WA  TYPE BDCDATA,
      BDCDATA_TAB TYPE TABLE OF BDCDATA.

DATA OPT TYPE CTU_PARAMS.


SELECTION-SCREEN BEGIN OF BLOCK A01 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP.
PARAMETERS P_TCODE LIKE TSTC-TCODE OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK A01.


START-OF-SELECTION.
  CLEARITAB,JTAB.
  REFRESH:ITAB,JTAB.
  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 FROM TADIR
      INTO TABLE ITAB
      WHERE PGMID    'R3TR'
        AND OBJECT   'SXSD'
        AND DEVCLASS V_DEVCLASS.
    SELECT FROM TADIR
      INTO TABLE KTAB
      WHERE PGMID    'R3TR'
        AND OBJECT   'ENHO'
        AND DEVCLASS V_DEVCLASS.
    SELECT FROM TADIR
      INTO TABLE LTAB
      WHERE PGMID    'R3TR'
        AND OBJECT   'ENHS'
        AND DEVCLASS V_DEVCLASS.
    SELECT FROM TADIR
      INTO TABLE MTAB
      WHERE PGMID    'R3TR'
        AND OBJECT   'ENHC'
        AND DEVCLASS V_DEVCLASS.

    SELECT SINGLE FROM TSTCT
      WHERE SPRSL EQ SY-LANGU
        AND TCODE EQ P_TCODE.


    FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
    WRITE:/(12'事务代码 - ',
    13(20P_TCODE,
    34(10'功能 - ' ,
    45(50TSTCT-TTEXT.
    SKIP.
    IF NOT JTAB[] IS INITIAL.
      WRITE:/(117SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
      WRITE:/1 SY-VLINE,
      'Exit Name',
      43 SY-VLINE ,
      44 'Description',
      117 SY-VLINE.
      WRITE:/(117SY-ULINE.

      LOOP AT JTAB.
        CLEAR MODSAPT.
        SELECT SINGLE FROM MODSAPT
        WHERE SPRSL SY-LANGU AND
        NAME JTAB-OBJ_NAME.
        FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
        WRITE:/1 SY-VLINE,
        JTAB-OBJ_NAME HOTSPOT ON,
        43 SY-VLINE ,
        44 MODSAPT-MODTEXT,
        117 SY-VLINE.
      ENDLOOP.
      WRITE:/(117SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
      WRITE:/1 SY-VLINE,
      'Badi Name(definition)',
      43 SY-VLINE ,
      44 'Description',
      117 SY-VLINE.
      WRITE:/(117SY-ULINE.
      LOOP AT ITAB.
        CLEAR SXS_ATTRT.
        SELECT SINGLE FROM SXS_ATTRT
        WHERE SPRSL SY-LANGU AND
        EXIT_NAME ITAB-OBJ_NAME.
        FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
        WRITE:/1 SY-VLINE,
        ITAB-OBJ_NAME HOTSPOT ON,
        43 SY-VLINE ,
        44 SXS_ATTRT-TEXT,
        117 SY-VLINE.
      ENDLOOP.

      WRITE:/(117SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
      WRITE:/1 SY-VLINE,
      'Enhancement Implementation',
      43 SY-VLINE ,
      44 'Description',
      117 SY-VLINE.
      WRITE:/(117SY-ULINE.
      LOOP AT KTAB.
        CLEAR SXS_ATTRT.
        SELECT SINGLE FROM SXS_ATTRT
        WHERE SPRSL SY-LANGU AND
        EXIT_NAME KTAB-OBJ_NAME.
        FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
        WRITE:/1 SY-VLINE,
        KTAB-OBJ_NAME HOTSPOT ON,
        43 SY-VLINE ,
        44 SXS_ATTRT-TEXT,
        117 SY-VLINE.
      ENDLOOP.

      WRITE:/(117SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
      WRITE:/1 SY-VLINE,
      'Enhancement Spot',
      43 SY-VLINE ,
      44 'Description',
      117 SY-VLINE.
      WRITE:/(117SY-ULINE.
      LOOP AT LTAB.
        CLEAR SXS_ATTRT.
        SELECT SINGLE FROM SXS_ATTRT
        WHERE SPRSL SY-LANGU AND
        EXIT_NAME LTAB-OBJ_NAME.
        FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
        WRITE:/1 SY-VLINE,
        LTAB-OBJ_NAME HOTSPOT ON,
        43 SY-VLINE ,
        44 SXS_ATTRT-TEXT,
        117 SY-VLINE.
      ENDLOOP.

      WRITE:/(117SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
      WRITE:/1 SY-VLINE,
      'Composite Enhancement Implementation',
      43 SY-VLINE ,
      44 'Description',
      117 SY-VLINE.
      WRITE:/(117SY-ULINE.
      LOOP AT MTAB.
        CLEAR SXS_ATTRT.
        SELECT SINGLE FROM SXS_ATTRT
        WHERE SPRSL SY-LANGU AND
        EXIT_NAME MTAB-OBJ_NAME.
        FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
        WRITE:/1 SY-VLINE,
        MTAB-OBJ_NAME HOTSPOT ON,
        43 SY-VLINE ,
        44 SXS_ATTRT-TEXT,
        117 SY-VLINE.
      ENDLOOP.


      WRITE:/(117SY-ULINE.
      CLEAR T_COUNT.
      DESCRIBE TABLE JTAB.
      T_COUNT SY-TFILL.
      DESCRIBE TABLE ITAB.
      T_COUNT T_COUNT + SY-TFILL.
      DESCRIBE TABLE KTAB.
      T_COUNT T_COUNT + SY-TFILL.
      DESCRIBE TABLE LTAB.
      T_COUNT T_COUNT + SY-TFILL.
      DESCRIBE TABLE MTAB.
      T_COUNT T_COUNT + SY-TFILL.

      SKIP.
      FORMAT COLOR COL_TOTAL INTENSIFIED ON.
      WRITE:'用户出口数量:' T_COUNT.
    ELSE.
      FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
      WRITE:/(95'此TCode没有用户出口!'.
    ENDIF.
  ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(95'事务代码不存在!'.
  ENDIF.

AT LINE-SELECTION.
  GET CURSOR FIELD FIELD1.
  IF FIELD1(4EQ 'JTAB'.
    SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
    CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
  ELSEIF FIELD1(4EQ 'ITAB'.
*    SET PARAMETER ID 'EXN' FIELD sy-lisel+1(40).
*    CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
    CLEAR BDCDATA_WA.
    BDCDATA_WA-PROGRAM  'SAPLSEXO'.
    BDCDATA_WA-DYNPRO   '0100'.
    BDCDATA_WA-DYNBEGIN 'X'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'BDC_CURSOR'.
    BDCDATA_WA-FVAL 'G_ENHSPOTNAME'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'G_IS_BADI'.
    BDCDATA_WA-FVAL 'X'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'BDC_OKCODE'.
    BDCDATA_WA-FVAL '=ISSPOT'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-PROGRAM  'SAPLSEXO'.
    BDCDATA_WA-DYNPRO   '0100'.
    BDCDATA_WA-DYNBEGIN 'X'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'BDC_CURSOR'.
    BDCDATA_WA-FVAL 'G_BADINAME'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.
    CLEAR BDCDATA_WA.

    BDCDATA_WA-FNAM 'G_BADINAME'.
    BDCDATA_WA-FVAL SY-LISEL+1(40).
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    OPT-DISMODE 'E'.
    OPT-DEFSIZE 'X'.

    CALL TRANSACTION 'SE18' USING BDCDATA_TAB OPTIONS FROM OPT.
    REFRESH BDCDATA_TAB.
  ELSEIF FIELD1(4EQ 'KTAB'.
*    SET PARAMETER ID 'IMN_BADI' FIELD sy-lisel+1(40).
*    CALL TRANSACTION 'SE19' AND SKIP FIRST SCREEN.
    CLEAR BDCDATA_WA.
    BDCDATA_WA-PROGRAM  'SAPLENHANCEMENTS'.
    BDCDATA_WA-DYNPRO   '0100'.
    BDCDATA_WA-DYNBEGIN 'X'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'BDC_CURSOR'.
    BDCDATA_WA-FVAL 'RSEUX-CXH_VALUE'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'RSEUX-CXH'.
    BDCDATA_WA-FVAL 'X'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'RSEUX-CXH_VALUE'.
    BDCDATA_WA-FVAL SY-LISEL+1(40).
    APPEND BDCDATA_WA TO BDCDATA_TAB.

*    CLEAR bdcdata_wa.
*    bdcdata_wa-fnam = 'BDC_OKCODE'.
*    bdcdata_wa-fval = '/00'.
*    APPEND bdcdata_wa TO bdcdata_tab.

    OPT-DISMODE 'E'.
    OPT-DEFSIZE 'X'.

    CALL TRANSACTION 'SE20' USING BDCDATA_TAB OPTIONS FROM OPT.
    REFRESH BDCDATA_TAB.
  ELSEIF FIELD1(4EQ 'LTAB'.
*    SET PARAMETER ID 'ENHSPOT' FIELD sy-lisel+1(40).
*    CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
    CLEAR BDCDATA_WA.
    BDCDATA_WA-PROGRAM  'SAPLENHANCEMENTS'.
    BDCDATA_WA-DYNPRO   '0100'.
    BDCDATA_WA-DYNBEGIN 'X'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'BDC_CURSOR'.
    BDCDATA_WA-FVAL 'RSEUX-C_XS_VALUE'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'RSEUX-C_XS'.
    BDCDATA_WA-FVAL 'X'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'RSEUX-C_XS_VALUE'.
    BDCDATA_WA-FVAL SY-LISEL+1(40).
    APPEND BDCDATA_WA TO BDCDATA_TAB.

*    CLEAR bdcdata_wa.
*    bdcdata_wa-fnam = 'BDC_OKCODE'.
*    bdcdata_wa-fval = '/00'.
*    APPEND bdcdata_wa TO bdcdata_tab.

    OPT-DISMODE 'E'.
    OPT-DEFSIZE 'X'.

    CALL TRANSACTION 'SE20' USING BDCDATA_TAB OPTIONS FROM OPT.
    REFRESH BDCDATA_TAB.
  ELSEIF FIELD1(4EQ 'MTAB'.
*    SET PARAMETER ID 'IMN_BADI' FIELD sy-lisel+1(40).
    CLEAR BDCDATA_WA.
    BDCDATA_WA-PROGRAM  'SAPLENHANCEMENTS'.
    BDCDATA_WA-DYNPRO   '0100'.
    BDCDATA_WA-DYNBEGIN 'X'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'BDC_CURSOR'.
    BDCDATA_WA-FVAL 'RSEUX-CXT_VALUE'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'RSEUX-CXT'.
    BDCDATA_WA-FVAL 'X'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'RSEUX-CXT_VALUE'.
    BDCDATA_WA-FVAL SY-LISEL+1(40).
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    CLEAR BDCDATA_WA.
    BDCDATA_WA-FNAM 'BDC_OKCODE'.
    BDCDATA_WA-FVAL '/00'.
    APPEND BDCDATA_WA TO BDCDATA_TAB.

    OPT-DISMODE 'E'.
    OPT-DEFSIZE 'X'.

    CALL TRANSACTION 'SE20' USING BDCDATA_TAB OPTIONS FROM OPT.
    REFRESH BDCDATA_TAB.
  ENDIF.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值