Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

Find User Exits

Hi All,

can anyone tell me, how can I find a user exit of F-53 tcode?

I forgot a standard program name where I can mark break-point and see the exit name.

Regards,

Syed Tayab Shah

Tags:
Former Member replied

Hi Syed use below program ,

REPORT Z_USER_EXIT NO STANDARD PAGE HEADING line-size 150.

TABLES : TSTC, TADIR,
TRDIR, TFDIR, ENLFDIR.
TABLES : TSTCT.

TYPES: BEGIN OF T_INC,
NAME(72),
END OF T_INC.

TYPES: BEGIN OF T_TADIR,
PGMID LIKE TADIR-PGMID, "Program ID in Requests and Tasks
OBJECT LIKE TADIR-OBJECT, "Object Name in Object Directory
OBJ_NAME LIKE TADIR-OBJ_NAME, "Object Name in Object Directory
END OF T_TADIR.

TYPE-POOLS:ICON.

DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
DATA : FIELD1(30).
DATA: VALUE1(100).

DATA: PNAME LIKE TFDIR-PNAME,
TYPE(6),
INCLUDE LIKE TFDIR-INCLUDE,
T TYPE T_INC OCCURS 0 WITH HEADER LINE,
IC TYPE ICON_D,
V_DEVCLASS LIKE TADIR-DEVCLASS,
V_TEXT(60) TYPE C.
.

PARAMETERS : P_TCODE LIKE TSTC-TCODE OBLIGATORY.
TYPES: BEGIN OF T_MOD,
NAME LIKE MODSAPT-NAME,
MODTEXT LIKE MODSAPT-MODTEXT,
TYP LIKE MODSAP-TYP,
MEMBER LIKE MODSAP-MEMBER,
END OF T_MOD.
DATA: I_MOD TYPE T_MOD OCCURS 0 WITH HEADER LINE,
I_BADI TYPE STANDARD TABLE OF T_TADIR WITH HEADER LINE ,
I_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
WA_BDCDATA TYPE BDCDATA.


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

START-OF-SELECTION.

  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'.
* Function Module name
        SELECT SINGLE * FROM TFDIR WHERE PNAME = TSTC-PGMNA.

* Additional Attributes for Function Modules
        SELECT SINGLE * FROM ENLFDIR
          WHERE FUNCNAME = TFDIR-FUNCNAME.

* Directory of Repository Objects
        SELECT SINGLE * FROM TADIR WHERE PGMID = 'R3TR'
        AND OBJECT = 'FUGR'
        AND OBJ_NAME EQ ENLFDIR-AREA.

* Get development class of the object
        MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
      ENDIF.
    ENDIF.

* Get the SAP enhancements of the development class of the object
    SELECT * FROM TADIR INTO TABLE JTAB
    WHERE PGMID = 'R3TR'
    AND OBJECT = 'SMOD'
    AND DEVCLASS = V_DEVCLASS.
* Get Transaction Code Texts.
    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.
      LOOP AT JTAB.
* Getting the components of a exit.

        SELECT A~NAME A~MODTEXT B~TYP B~MEMBER
        INTO CORRESPONDING FIELDS OF TABLE I_MOD
        FROM MODSAPT AS A
        INNER JOIN MODSAP AS B ON B~NAME = A~NAME
        WHERE A~SPRSL = SY-LANGU
        AND A~NAME = JTAB-OBJ_NAME
        AND B~TYP <> ''.
        LOOP AT I_MOD.
          AT NEW MODTEXT.
            FORMAT COLOR COL_GROUP INTENSIFIED OFF.
            WRITE:/(150) SY-ULINE.
            WRITE:/1 SY-VLINE,
            2 JTAB-OBJ_NAME HOTSPOT ON,
            21 SY-VLINE ,
            22 I_MOD-MODTEXT,
            92 SY-VLINE,
            /1 SY-ULINE(150).
          ENDAT.
          CLEAR:PNAME,INCLUDE.
* Deriving the include name inorder to chech whether the exit is *
*implemented or not

          SELECT PNAME INCLUDE INTO
          (PNAME ,INCLUDE)
          FROM TFDIR
          WHERE FUNCNAME = I_MOD-MEMBER.
          endselect.
          PNAME = PNAME+3(37).
          CONCATENATE PNAME 'U' INCLUDE INTO PNAME.
* Reads the function module
          READ REPORT PNAME INTO T.

          LOOP AT T WHERE NAME CS 'include'.
            CLEAR:PNAME,field1.
            SHIFT T-NAME LEFT DELETING LEADING SPACE.
            SPLIT T-NAME AT ' ' INTO field1 PNAME.
            SHIFT PNAME RIGHT DELETING TRAILING ''.
            SHIFT PNAME RIGHT DELETING TRAILING '.'.
            SHIFT PNAME LEFT DELETING LEADING SPACE.

          ENDLOOP.

          FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
* read the include file
          READ REPORT PNAME INTO T.
          IF SY-SUBRC = 0.
            IC = ICON_OKAY.
          ELSE.
            IC = ''.
          ENDIF.
* For Exit Types
          IF I_MOD-TYP = 'E'.
            TYPE = 'Func.'.
          ELSEIF I_MOD-TYP = 'S'.
            TYPE = 'Screen'.
          ELSEIF I_MOD-TYP = 'C'.
            TYPE = 'Menu'.
          ENDIF.
          WRITE: /92 SY-VLINE,
          93 IC,
          98 SY-VLINE,
          99 TYPE,
          106 SY-VLINE,
          107 I_MOD-MEMBER HOTSPOT ON,
          150 SY-VLINE.
          CLEAR:PNAME,IC,field1,TYPE.
        ENDLOOP.

      ENDLOOP.
      WRITE:/(150) 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.

*For Badi's..
* Select BADI entries
    SELECT PGMID
    OBJECT
    OBJ_NAME
    FROM TADIR
    INTO CORRESPONDING FIELDS OF TABLE I_BADI
    WHERE ( PGMID = 'R3TR' ) AND
    ( OBJECT = 'SXSD' ) AND
    ( DEVCLASS = V_DEVCLASS ).


* Write BADI detail header
    data:v_count type i.
    DESCRIBE TABLE I_BADI LINES V_COUNT.
    IF V_COUNT > 0.

      WRITE: /(95) SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
      WRITE: /1 SY-VLINE,
      2 'BADI',
      31 SY-VLINE,
      32 'Description',
      95 sy-vline.
      WRITE: /(95) SY-ULINE.
* Write BADI results
      LOOP AT I_BADI.
        CLEAR V_TEXT.
        SELECT SINGLE TEXT
        FROM SXS_ATTRT
        INTO V_TEXT
        WHERE ( SPRSL = SY-LANGU ) AND
        ( EXIT_NAME = I_BADI-OBJ_NAME ).

        FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
        WRITE: /1 SY-VLINE,
        2 I_BADI-OBJ_NAME HOTSPOT ON,
        31 SY-VLINE,
        32 V_TEXT,
        95 SY-VLINE.
      ENDLOOP.

      FORMAT COLOR COL_TOTAL INTENSIFIED ON.
      WRITE: /(95) SY-ULINE.
      WRITE: /1 SY-VLINE,
      2 'Total BADI''s:',
      31 SY-VLINE,
      32 V_COUNT,
      95 SY-VLINE.
      WRITE: /(95) SY-ULINE.

    ELSE.
      WRITE: /(95) 'No BADI''s exist.'.
    ENDIF.




  ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(95) 'Transaction Code Does Not Exist'.
  ENDIF.

AT LINE-SELECTION.
  GET CURSOR FIELD FIELD1 VALUE VALUE1.
  IF FIELD1(4) EQ 'JTAB'.
* Jump to transaction SMOD

    SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
    CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
  ELSEIF FIELD1(5) EQ 'I_MOD'.
* Viewing the function
    SUBMIT WB_MNGR_START_FROM_TOOL_ACCESS AND RETURN
    WITH ACTION = 'DISPLAY'
* WITH OBJDATA = p_object_data
    WITH OBJ_TYPE = 'FF'
    WITH OBJ_NAME = VALUE1
    WITH ENCL_OBJ = ''
    WITH POSITION = ''
    WITH INCLUDE = ''
    WITH VERSION = ''
    WITH TOOL = 'CL_FUNCTION_BUILDER'
    WITH NEWWNDOW = ''
    WITH OBJLIST = ''.
* Direct BADI to transaction SE18

  ELSEIF FIELD1(6) EQ 'I_BADI'.
    SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(29).
    CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
  ENDIF.


TOP-OF-PAGE.

  WRITE:/(150) SY-ULINE.
  FORMAT COLOR COL_HEADING INTENSIFIED ON.
  WRITE:/1 SY-VLINE,
  2 'Exit Name',
  21 SY-VLINE ,
  22 'Description',
  92 SY-VLINE,
  93 'Imp.',
  98 SY-VLINE,
  99 'Type',
  106 SY-VLINE,
  107 'Function Name',
  150 SY-VLINE,
  /1 SY-ULINE.

0 View this answer in context
Not what you were looking for? View more on this topic or Ask a question