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

运行程序,输入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 .
DATA BDCDATA_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 .
   CLEAR ITAB ,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 ( 20 P_TCODE ,
     34 ( 10 '功能 - '  ,
     45 ( 50 TSTCT -TTEXT .
     SKIP .
     IF  NOT JTAB[]  IS  INITIAL .
       WRITE :/ ( 117 SY - ULINE .
       FORMAT  COLOR COL_HEADING  INTENSIFIED  ON .
       WRITE :/1 SY -VLINE ,
       'Exit Name' ,
       43 SY -VLINE  ,
       44  'Description' ,
       117 SY -VLINE .
       WRITE :/ ( 117 SY - 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 :/ ( 117 SY - ULINE .
       FORMAT  COLOR COL_HEADING  INTENSIFIED  ON .
       WRITE :/1 SY -VLINE ,
       'Badi Name(definition)' ,
       43 SY -VLINE  ,
       44  'Description' ,
       117 SY -VLINE .
       WRITE :/ ( 117 SY - 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 :/ ( 117 SY - ULINE .
       FORMAT  COLOR COL_HEADING  INTENSIFIED  ON .
       WRITE :/1 SY -VLINE ,
       'Enhancement Implementation' ,
       43 SY -VLINE  ,
       44  'Description' ,
       117 SY -VLINE .
       WRITE :/ ( 117 SY - 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 :/ ( 117 SY - ULINE .
       FORMAT  COLOR COL_HEADING  INTENSIFIED  ON .
       WRITE :/1 SY -VLINE ,
       'Enhancement Spot' ,
       43 SY -VLINE  ,
       44  'Description' ,
       117 SY -VLINE .
       WRITE :/ ( 117 SY - 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 :/ ( 117 SY - ULINE .
       FORMAT  COLOR COL_HEADING  INTENSIFIED  ON .
       WRITE :/1 SY -VLINE ,
       'Composite Enhancement Implementation' ,
       43 SY -VLINE  ,
       44  'Description' ,
       117 SY -VLINE .
       WRITE :/ ( 117 SY - 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 :/ ( 117 SY - 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 ( 4 EQ  'JTAB' .
     SET  PARAMETER  ID  'MON'  FIELD SY -LISEL+1 ( 10 ) .
     CALL  TRANSACTION  'SMOD'  AND  SKIP  FIRST  SCREEN .
   ELSEIF FIELD1 ( 4 EQ  '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 ( 4 EQ  '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 ( 4 EQ  '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 ( 4 EQ  '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 .
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值