메뉴 건너뛰기

SAP 한국 커뮤니티



REPORT z_find_userexits

노름마치 2007.11.05 23:32 조회 수 : 6008

*&---------------------------------------------------------------------*
*& Report  Z_FIND_USEREXITS                                            *
*&                                                                     *
*&---------------------------------------------------------------------*
* Finding the user-exits of a SAP transaction code                     *
* Enter the transaction code in which you are looking for the user-exit*
* and it will list you the list of user-exits in the transaction code. *
* Also a drill down is possible which will help you to branch to SMOD. *
*&---------------------------------------------------------------------*


REPORT  z_find_userexits  NO STANDARD PAGE HEADING.


*----------------------------------------------------------------------*
*     TABLES
*----------------------------------------------------------------------*
TABLES : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.
TABLES : tstct.


*----------------------------------------------------------------------*
*     I N T E R N A L   T A B L E S
*----------------------------------------------------------------------*
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.


*----------------------------------------------------------------------*
*     SELECTION-SCREEN
*----------------------------------------------------------------------*
PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.


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


*----------------------------------------------------------------------*
*     AT LINE-SELECTION
*----------------------------------------------------------------------*
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.