Skip to Content

Finding a user exit – code to do so

This is some code that I have archived on another site:

It specifies in it’s initial comments the primary contributers to the best of my knowledge.

Good luck!

*&———————————————————————*

*& Report  Z_FIND_USEREXIT_RNW

*&

*&———————————————————————*

*&

*&

*&———————————————————————*

*&———————————————————————*

*& Report  Z_FIND_EXIT

*&

*&———————————————————————*

*&

*I’m thinking that this is based on a post by

*

*SimonaD86 in http://sap.

*ittoolbox.com/groups/technical-functional/sap-abap/determinate-the-transaction-that-called-a-certain-userexitfrom-the-user-exit-2760810

*

*or  santoshkj in http://sap.

*ittoolbox.com/groups/technical-functional/sap-dev/developing-screen-exits-in-sap-520079

*

*or Deertay in http://sap.

*ittoolbox.com/groups/technical-functional/sap-dev/user-exit-for-a-transaction-code-mb1bmigo-1155130

*&

*&———————————————————————*

REPORT  z_find_exit.

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:/001(19) ‘Transaction Code – ‘,

           020(20) p_tcode,

           045(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:/001 sy-vline,

               002 wa_tadir-obj_name HOTSPOT ON,

               041 sy-vline ,

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

14 Comments
You must be Logged on to comment or reply to a post.