Friday, October 30, 2009

Report to find the user-exits for given Transaction


REPORT yacpr0002.


* This code doesn't follow standard naming conventions.

*& Enter the transaction code that you want to search through in order

*& to find which Standard SAP User Exits exists.



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.



PERFORM find_repository_objects.

PERFORM find_sap_modifications.

PERFORM display_data.



* 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.



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

*& @FORMS

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





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

*& Form find_repository_objects

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

* Find the repository objects related to a transaction code.

*---------------------------------------------------------------------*

FORM find_repository_objects.



* 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.

ELSE.

FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.

WRITE:/(95) 'Transaction Code Does Not Exist'.

ENDIF.

ENDFORM. "find_repository_objects





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

*& Form find_sap_modifications

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

* Find the SAP modifications

*---------------------------------------------------------------------*

FORM find_sap_modifications.



* 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.



ENDFORM. "find_sap_modifications



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

*& Form display_data

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


* Display the list of exits

*---------------------------------------------------------------------*

FORM display_data.

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.

endform

No comments:

Post a Comment