* Program Title:查找使用者出口跟BADI
*
* Created by:
*
* Description: 查找使用者出口跟BADI 輸入相應的Tcode
* Module name: 無
* Type: REPORT
* Special note: None
**----------------------------------------------------------------------
* Associated program: No programs are associated
*-----------------------------------------------------------------------
* Restriction: No restriction
REPORT ZUSER_EXIT NO STANDARD PAGE HEADING.
&---------------------------------------------------------------------
*& Enter the transaction code that you want to search through in order
*& to find which Standard SAP User Exits and BADIs
*&
&---------------------------------------------------------------------
*& For field ‘SUBC’ of table ‘TRDIR’:
*& M Module Pool
*& F Function group
*& S Subroutine Pool
*& J Interface pool
*& K Class pool
*& T Type Pool
*& X XSLT Program
&---------------------------------------------------------------------
*& Tables
&---------------------------------------------------------------------
TABLES: TSTC , " SAP Transaction Codes
TADIR , " Directory of Repository Objects
MODSAPT , " SAP Enhancements - Short Texts
SXS_ATTRT, " SAP BADI - short text
MODACT , " Modifications
TRDIR , " System table TRDIR
TFDIR , " Function Module
ENLFDIR , " Additional Attributes for Function Modules
TSTCT . " Transaction Code Texts
&---------------------------------------------------------------------
*& Variables
&---------------------------------------------------------------------
DATA: JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
DATA: FIELD1(30).
DATA: V_DEVCLASS LIKE TADIR-DEVCLASS.
DATA: OBJECT LIKE TADIR-OBJECT.
DATA: BDCDATA_WA TYPE BDCDATA,
BDCDATA_TAB TYPE TABLE OF BDCDATA.
DATA: OPT TYPE CTU_PARAMS.
&---------------------------------------------------------------------
*& Selection Screen Parameters
&---------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK A01 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP.
PARAMETERS: P_TCODE LIKE TSTC-TCODE OBLIGATORY.
SELECTION-SCREEN SKIP.
PARAMETERS: EXIT RADIOBUTTON GROUP 1 DEFAULT ‘X’,
BADI RADIOBUTTON GROUP 1.
SELECTION-SCREEN END OF BLOCK A01.
DEFINE BDC_PROGRAM.
CLEAR BDCDATA_WA.
BDCDATA_WA-PROGRAM = &1.
BDCDATA_WA-DYNPRO = &2.
BDCDATA_WA-DYNBEGIN = &3.
APPEND BDCDATA_WA TO BDCDATA_TAB.
END-OF-DEFINITION.
DEFINE BDC_DETAIL.
CLEAR BDCDATA_WA.
BDCDATA_WA-FNAM = &1.
BDCDATA_WA-FVAL = &2.
APPEND BDCDATA_WA TO BDCDATA_TAB.
END-OF-DEFINITION.
&---------------------------------------------------------------------
*& Start of main program
&---------------------------------------------------------------------
START-OF-SELECTION.
IF EXIT = ‘X’.
OBJECT = ‘SMOD’. " User-exit!
ELSE.
OBJECT = ‘SXSD’. " BADI!
ENDIF.
* Validate Transaction Code:
SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.
* Find Repository Objects for transaction code:
IF SY-SUBRC EQ 0. " IF 1
SELECT SINGLE * FROM TADIR WHERE PGMID = ‘R3TR’
AND OBJECT = ‘PROG’
AND OBJ_NAME = TSTC-PGMNA. " Program name!
MOVE: TADIR-DEVCLASS TO V_DEVCLASS. " Package
IF SY-SUBRC NE 0.
SELECT SINGLE * FROM TRDIR WHERE NAME = TSTC-PGMNA.
IF TRDIR-SUBC EQ ‘F’. " Function Group
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.
* Find SAP Modifactions:
SELECT * FROM TADIR INTO TABLE JTAB WHERE PGMID = ‘R3TR’
* AND object = ‘SMOD’
AND OBJECT = OBJECT
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: /(19) 'Transaction Code - ',
20(20) P_TCODE,
45(50) TSTCT-TTEXT.
SKIP.
IF NOT JTAB[] IS INITIAL. " IF 2
WRITE: /(95) SY-ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
* Exit:
IF EXIT = ‘X’.
WRITE: /1 SY-VLINE,
2 ‘Exit Name’,
22 SY-VLINE ,
23 ‘Description’,
95 SY-VLINE.
* BADI:
ELSE.
WRITE: /1 SY-VLINE,
2 ‘BADI Name’,
22 SY-VLINE ,
23 ‘Description’,
95 SY-VLINE.
ENDIF.
WRITE:/(95) SY-ULINE.
LOOP AT JTAB.
* EXIT:
IF EXIT = ‘X’.
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,
22 SY-VLINE ,
23 MODSAPT-MODTEXT,
95 SY-VLINE.
* BADI:
ELSE.
SELECT SINGLE * FROM SXS_ATTRT WHERE SPRSL = SY-LANGU
AND EXIT_NAME = JTAB-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE: /1 SY-VLINE,
2 JTAB-OBJ_NAME HOTSPOT ON,
22 SY-VLINE ,
23 SXS_ATTRT-TEXT,
95 SY-VLINE.
ENDIF.
ENDLOOP.
WRITE: /(95) SY-ULINE.
DESCRIBE TABLE JTAB.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
IF EXIT = ‘X’.
WRITE: / ‘No of Exits:’, SY-TFILL.
ELSE.
WRITE: / ‘No of BADIs:’, SY-TFILL.
ENDIF.
ELSE. " IF 2
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE: /(95) ‘No User Exit exists’.
ENDIF. " IF 2
ELSE. " IF 1
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE: /(95) ‘Transaction Code Does Not Exist’.
ENDIF. " IF 1
* Take the user to SMOD for the Exit that was selected:
AT LINE-SELECTION.
GET CURSOR FIELD FIELD1.
CHECK FIELD1(4) EQ ‘JTAB’.
* For exit:
IF EXIT = ‘X’.
SET PARAMETER ID ‘MON’ FIELD SY-LISEL+1(10).
CALL TRANSACTION ‘SMOD’ AND SKIP FIRST SCREEN.
* For BADI:
ELSE.
CLEAR: BDCDATA_WA, BDCDATA_TAB[].
BDC_PROGRAM ‘SAPLSEXO’ ‘0100’ ‘X’.
BDC_DETAIL ‘BDC_CURSOR’ ‘G_IS_BADI’.
BDC_DETAIL ‘BDC_OKCODE’ ‘=ISSPOT’.
BDC_DETAIL ‘G_IS_BADI’ ‘X’.
BDC_PROGRAM ‘SAPLSEXO’ ‘0100’ ‘X’.
BDC_DETAIL ‘BDC_CURSOR’ ‘G_BADINAME’.
BDC_DETAIL ‘BDC_OKCODE’ ‘=SHOW’.
BDC_DETAIL ‘G_BADINAME’ SY-LISEL+1(20).
OPT-DISMODE = ‘E’.
OPT-DEFSIZE = ‘X’.
CALL TRANSACTION ‘SE18’ USING BDCDATA_TAB OPTIONS FROM OPT.
ENDIF.
————————————————
版權聲明:本文為CSDN部落客「SAP劍客」的原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/zhongguomao/article/details/8030035