首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

SAP Code 加强

2013-10-15 
SAP Code 增强REPORTZ_FIND_BADI.*&---------------------------------**& Enter the transaction code th

SAP Code 增强
REPORT Z_FIND_BADI.*&---------------------------------**& Enter the transaction code that you want to search through in order **& to find which Standard SAP User Exits and BADI exists. **& **&---------------------------------**&---------------------------------**& Tables **&---------------------------------*TABLES : TSTC, " SAP Transaction Codes TADIR, " Directory of Repository Objects MODSAPT, " SAP Enhancements - Short Texts MODACT, " Modifications TRDIR, " System table TRDIR TFDIR, " Function Module ENLFDIR, " Additional Attributes for Function Modules TSTCT, " Transaction Code Texts RSSTCD, " Screen fields for transaction code maintenance TRKEY. " Complete Key of a Transport Object*&---------------------------------**& Definition of Types **&---------------------------------*TYPES: BEGIN OF T_BADI_LIST, OBJ_NAME TYPE SOBJ_NAME , " Object Name in Object Directory DEVCLASS TYPE DEVI_CLASS , " Function Group Package DLVUNIT TYPE DLVUNIT, " Software Component IMP_NAME TYPE EXIT_IMP , " Business Add-In Implementation PACKNAME TYPE DEVCLASS , " Package DLVUNIT2 TYPE DLVUNIT, " Software Component TEXT TYPE SXC_ATTRT-TEXT," Exit: Text tableEND OF T_BADI_LIST.TYPES: BEGIN OF T_BADI_LIST2, OBJ_NAME TYPE SOBJ_NAME , DEVCLASS TYPE DEVI_CLASS , DLVUNIT TYPE DLVUNIT,END OF T_BADI_LIST2.*&---------------------------------**& Data Declaration **&---------------------------------*DATA: LT_BADI_LIST TYPE TABLE OF T_BADI_LIST, LT_BADI_LIST2 TYPE TABLE OF T_BADI_LIST2, LS_BADI_LIST TYPE T_BADI_LIST OCCURS 0 WITH HEADER LINE, LS_BADI_LIST2 TYPE T_BADI_LIST2.RANGES: R_BADI FOR TADIR-OBJ_NAME , " Directory of Repository Objects RT_BADI FOR TADIR-OBJ_NAME .*&---------------------------------**& Variables **&---------------------------------*DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE, P_TRKEY LIKE TRKEY. " Complete Key of a Transport ObjectDATA : FIELD1(30), BADINAME(20), COUNT TYPE P.DATA : V_DEVCLASS LIKE TADIR-DEVCLASS, P_DEVCLASS LIKE TADIR-DEVCLASS, P_OLD_LANGU LIKE SY-LANGU, P_MOD_LANGU LIKE SY-LANGU.*&---------------------------------**& Selection Screen Parameters **&---------------------------------*SELECTION-SCREEN BEGIN OF BLOCK A01 WITH FRAME TITLE TEXT-001.SELECTION-SCREEN SKIP.PARAMETERS:P_TCODE LIKE TSTC-TCODE OBLIGATORY. " SAP Transaction CodesSELECTION-SCREEN SKIP.SELECTION-SCREEN END OF BLOCK A01.*&---------------------------------**& Start of report **&---------------------------------*START-OF-SELECTION.* Validate Transaction Code SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.*Find Repository Objects for transaction code 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.* This section is used if a FGR is involved! CALL FUNCTION 'RS_ACCESS_PERMISSION' EXPORTING GLOBAL_LOCK = 'X' OBJECT = P_TCODE OBJECT_CLASS = 'TRAN' MODE = 'SHOW' LANGUAGE_UPD_EXIT = 'RS_TRANSACTION_LANGUAGE_EXIT' SUPPRESS_LANGUAGE_CHECK = SPACE IMPORTING NEW_MASTER_LANGUAGE = P_OLD_LANGU MODIFICATION_LANGUAGE = P_MOD_LANGU TRANSPORT_KEY = P_TRKEY DEVCLASS = P_DEVCLASS EXCEPTIONS CANCELED_IN_CORR = 1 OTHERS = 2. IF SY-SUBRC = 0. " Success MOVE: P_DEVCLASS TO V_DEVCLASS. ELSE. " For the case that nothing is found! 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 = P_DEVCLASS. MOVE: TADIR-DEVCLASS TO V_DEVCLASS. ENDIF. ENDIF. ENDIF.*Find SAP Modifactions 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. WRITE:/(19) 'Transaction Code - ', 20(20) P_TCODE, 45(50) TSTCT-TTEXT. FORMAT COLOR COL_POSITIVE INTENSIFIED ON. SKIP. WRITE:/1 'The application area is:', V_DEVCLASS. SKIP. 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. SKIP. WRITE:/(83) SY-ULINE. FORMAT COLOR COL_HEADING INTENSIFIED ON. WRITE:/1 SY-VLINE, 2 'Badi Name', 22 SY-VLINE, 23 'Description', 83 SY-VLINE. WRITE:/(83) SY-ULINE.* select the BAdI Definitions from the tables sxc_exit and sxc_attr SELECT T~OBJ_NAME T~DEVCLASS TC~DLVUNIT SX~IMP_NAME SAT~TEXT INTO CORRESPONDING FIELDS OF TABLE LT_BADI_LIST FROM ( ( ( ( TADIR AS T INNER JOIN TDEVC AS TC ON T~DEVCLASS = TC~DEVCLASS ) INNER JOIN SXC_EXIT AS SX ON SX~EXIT_NAME = T~OBJ_NAME ) INNER JOIN SXC_ATTR AS SA ON SX~IMP_NAME = SA~IMP_NAME ) INNER JOIN SXC_ATTRT AS SAT ON SX~IMP_NAME = SAT~IMP_NAME ) WHERE T~PGMID = 'R3TR' AND T~OBJECT = 'SXSD' "means BAdI AND T~DEVCLASS = V_DEVCLASS "narrow down seach with Dev.Class AND SAT~SPRSL = SY-LANGU. SORT LT_BADI_LIST. DELETE ADJACENT DUPLICATES FROM LT_BADI_LIST.* create Ranges LOOP AT LT_BADI_LIST INTO LS_BADI_LIST. R_BADI-SIGN = 'I' . R_BADI-OPTION ='EQ' . R_BADI-LOW = LS_BADI_LIST-IMP_NAME. R_BADI-HIGH = LS_BADI_LIST-IMP_NAME. APPEND R_BADI TO RT_BADI . ENDLOOP.* select the implementations SELECT T~OBJ_NAME T~DEVCLASS TC~DLVUNIT INTO CORRESPONDING FIELDS OF TABLE LT_BADI_LIST2 FROM TADIR AS T INNER JOIN TDEVC AS TC ON T~DEVCLASS = TC~DEVCLASS FOR ALL ENTRIES IN RT_BADI WHERE T~OBJ_NAME = RT_BADI-LOW AND T~PGMID = 'R3TR' AND T~OBJECT = 'SXCI'. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. WRITE:/(83) SY-ULINE. COUNT = '0'. LOOP AT LT_BADI_LIST INTO LS_BADI_LIST . WRITE:/1 SY-VLINE, 2 LS_BADI_LIST-OBJ_NAME HOTSPOT ON, 22 SY-VLINE, 23 LS_BADI_LIST-TEXT, 83 SY-VLINE. COUNT = COUNT + 1. ENDLOOP. WRITE:/(83) SY-ULINE. DESCRIBE TABLE LS_BADI_LIST. SKIP. FORMAT COLOR COL_TOTAL INTENSIFIED ON. WRITE:/ 'No of BADIs:' , COUNT. ELSE. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(95) 'No User Exit exists'. ENDIF. ELSE. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(95) 'Transaction Code Does Not Exist'. ENDIF.*&---------------------------------**& Call SMOD or SE18 to lead the user to the selected exit or badi **&---------------------------------*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(12) EQ 'LS_BADI_LIST'. CALL FUNCTION 'SXO_BADI_SHOW' EXPORTING EXIT_NAME = SY-LISEL+1(20) EXCEPTIONS ACTION_CANCELED ACCESS_FAILURE BADI_NOT_EXIXTING. ELSE. ENDIF.

?

?

?

?

REPORT Z_FIND_USEREXIT2 NO STANDARD PAGE HEADING.*&---------------------------------**&  Enter the transaction code that you want to search through in order*&  to find which Standard SAP User Exits exists.*&*&---------------------------------**&---------------------------------**& Tables*&---------------------------------*TABLES : TSTC,      " SAP Transaction Codes         TADIR,     " Directory of Repository Objects         MODSAPT,   " SAP Enhancements - Short Texts         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.*&---------------------------------**& 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.SELECTION-SCREEN END OF BLOCK A01.*&---------------------------------**& Start of main program*&---------------------------------*START-OF-SELECTION.* Validate Transaction Code  SELECT SINGLE *    FROM TSTC   WHERE TCODE EQ P_TCODE.* Find Repository Objects for transaction code  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.* Find SAP Modifactions    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.    WRITE :/(19) 'Transaction Code - ',            20(20) P_TCODE,            45(50) TSTCT-TTEXT.    SKIP.    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) 'No User Exit exists'.    ENDIF.  ELSE.    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.    WRITE :/(95) 'Transaction Code Does Not Exist'.  ENDIF.* Take the user to SMOD for the Exit that was selected.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.

?

热点排行