Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
cancel
Showing results for 
Search instead for 
Did you mean: 
former_member193326
Active Contributor

A couple of months ago I found an interesting programm that listed all user exits that could be used in a transaction. I wrote this in the blog:

 

Looking for user exits for a specific transaction?

 

Now I found one even better: ZAG_FIND_BADI. With this programm you get not only the exits, but also the BADIS. I hope you enjoy it as much as i have:

 

*&---------------------------------------------------------------------*

*& Report ZAG_FIND_BADI

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT ZAG_FIND_BADI.

TABLES : TSTC,

TADIR,

MODSAPT,

MODACT,

TRDIR,

TFDIR,

ENLFDIR,

SXS_ATTRT ,

TSTCT.

DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.

DATA : FIELD1(30).

DATA : V_DEVCLASS LIKE TADIR-DEVCLASS.

PARAMETERS : P_TCODE LIKE TSTC-TCODE,

P_PGMNA LIKE TSTC-PGMNA .

 

DATA WA_TADIR TYPE TADIR.

START-OF-SELECTION.

IF NOT P_TCODE IS INITIAL.

SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.

ELSEIF NOT P_PGMNA IS INITIAL.

TSTC-PGMNA = P_PGMNA.

ENDIF.

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 EQ ENLFDIR-AREA.

MOVE : TADIR-DEVCLASS TO V_DEVCLASS.

ENDIF.

ENDIF.

SELECT * FROM TADIR INTO TABLE JTAB

WHERE PGMID = 'R3TR'

AND OBJECT IN ('SMOD', 'SXSD')

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:/(105) SY-ULINE.

FORMAT COLOR COL_HEADING INTENSIFIED ON.

 

 

* SORTING THE INTERNAL TABLE

SORT JTAB BY OBJECT.

DATA : WF_TXT(60) TYPE C,

WF_SMOD TYPE I ,

WF_BADI TYPE I ,

WF_OBJECT2(30) TYPE C.

CLEAR : WF_SMOD, WF_BADI , WF_OBJECT2.

*GET THE TOTAL SMOD.

LOOP AT JTAB INTO WA_TADIR.

AT FIRST.

FORMAT COLOR COL_HEADING INTENSIFIED ON.

WRITE:/1 SY-VLINE,

2 'Enhancement/ Business Add-in',

41 SY-VLINE ,

42 'Description',

105 SY-VLINE.

WRITE:/(105) SY-ULINE.

ENDAT.

CLEAR WF_TXT.

AT NEW OBJECT.

IF WA_TADIR-OBJECT = 'SMOD'.

WF_OBJECT2 = 'Enhancement' .

ELSEIF WA_TADIR-OBJECT = 'SXSD'.

WF_OBJECT2 = ' Business Add-in'.

ENDIF.

FORMAT COLOR COL_GROUP INTENSIFIED ON.

WRITE:/1 SY-VLINE,

2 WF_OBJECT2,

105 SY-VLINE.

ENDAT.

CASE WA_TADIR-OBJECT.

WHEN 'SMOD'.

WF_SMOD = WF_SMOD + 1.

SELECT SINGLE MODTEXT INTO WF_TXT

FROM MODSAPT

WHERE SPRSL = SY-LANGU

AND NAME = WA_TADIR-OBJ_NAME.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

WHEN 'SXSD'.

 

* FOR BADIS

WF_BADI = WF_BADI + 1 .

SELECT SINGLE TEXT INTO WF_TXT

FROM SXS_ATTRT

WHERE SPRSL = SY-LANGU

AND EXIT_NAME = WA_TADIR-OBJ_NAME.

FORMAT COLOR COL_NORMAL INTENSIFIED ON.

ENDCASE.

 

WRITE:/1 SY-VLINE,

2 WA_TADIR-OBJ_NAME HOTSPOT ON,

41 SY-VLINE ,

42 WF_TXT,

105 SY-VLINE.

AT END OF OBJECT.

WRITE : /(105) SY-ULINE.

ENDAT.

 

ENDLOOP.

WRITE:/(105) SY-ULINE.

 

 

SKIP.

FORMAT COLOR COL_TOTAL INTENSIFIED ON.

WRITE:/ 'No.of Exits:' , WF_SMOD.

WRITE:/ 'No.of BADis:' , WF_BADI.

ELSE.

FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.

WRITE:/(105) 'No userexits or BADis exist'.

ENDIF.

ELSE.

FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.

WRITE:/(105) 'Transaction does not exist'.

ENDIF.

AT LINE-SELECTION.

DATA : WF_OBJECT TYPE TADIR-OBJECT.

CLEAR WF_OBJECT.

 

GET CURSOR FIELD FIELD1.

CHECK FIELD1(8) EQ 'WA_TADIR'.

READ TABLE JTAB WITH KEY OBJ_NAME = SY-LISEL+1(20).

MOVE JTAB-OBJECT TO WF_OBJECT.

CASE WF_OBJECT.

WHEN 'SMOD'.

SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).

CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

WHEN 'SXSD'.

SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).

CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.

ENDCASE.

5 Comments