找出口程序

************************************************************************
* Program Title:查找用户出口跟BADI
*
* Created by:毛建                                     Date :2012年9月28日
*
* Description:  查找用户出口跟BADI   输入相应的Tcode
* Module name: 无
* Type: REPORT
* Special note: None
**----------------------------------------------------------------------
* Associated program: No programs are associated
*-----------------------------------------------------------------------
* Restriction:  No restriction
************************************************************************

REPORT  Z_FIND_EXIT_BADI NO STANDARD PAGE HEADING.

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.
      SORT JTAB BY OBJECT.

      DATA : WF_TXT(60TYPE C,
          WF_SMOD TYPE I ,
          WF_BADI TYPE I ,
          WF_OBJECT2(30TYPE C.

      CLEAR : WF_SMOD, WF_BADI , WF_OBJECT2.

      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(8EQ '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.

你可能感兴趣的:(程序人生,ABAPer,SAP,ABAP)