[ABAP]ENHANCE 찾는 프로그램

SAPWISE·2023년 9월 18일
0
*===============================================================*
* T-Code 또는 Program에 연결 되어 있는 exit , Badi 검색 하는 프로그램

*===============================================================*
REPORT zsearch_badi_user_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:/(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.
profile
SAP, ERP, ABAP

0개의 댓글