运行程序,输入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 0 WITH HEADER LINE . "SMOD
DATA : ITAB LIKE TADIR OCCURS 0 WITH HEADER LINE . "SE18-BADI
DATA : KTAB LIKE TADIR OCCURS 0 WITH HEADER LINE . "Enhancement implementation-ENHO
DATA : LTAB LIKE TADIR OCCURS 0 WITH HEADER LINE . "Enhancement Spot-ENHS
DATA : MTAB LIKE TADIR OCCURS 0 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 ,
2 '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 ,
2 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 ,
2 '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 ,
2 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 ,
2 '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 ,
2 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 ,
2 '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 ,
2 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 ,
2 '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 ,
2 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 .