zoukankan      html  css  js  c++  java
  • 根据T-Code查看用户出口的代码

    在此非常非常感谢源作者,这段代码真的非常非常有用好用!


    REPORT  YLBTEST.

    TABLES :
      tstc,     "SAP Transaction Codes(SAP 事务代码)
      tadir,    "Directory of Repository Objects(资源库对象的目录)
      modsapt,  "SAP Enhancements - Short Texts(SAP增强-短文件)
      modact,   "Modifications(修正)
      trdir,    "System table TRDIR(系统表 TRDIR)
      tfdir,    "Function Module(功能模块)
      enlfdir,  "Additional Attributes for Function Modules(功能模块的附加属性)
      tstct.    "Transaction Code Texts(事务代码文本)

    DATA : jtab LIKE tadir OCCURS WITH HEADER LINE.
    DATA : field1(30).
    DATA : v_devclass LIKE tadir-devclass.

    SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
    SELECTION-SCREEN SKIP.
    PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN END OF BLOCK a01.

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

            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 = 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:/(12) '事务代码 - ',
              13(20) p_tcode,
              34(10) '功能 - ' ,
              45(50) tstct-ttext.

        SKIP.

        IF NOT jtab[] IS INITIAL.

          WRITE:/(95) sy-uline.

          FORMAT COLOR COL_HEADING INTENSIFIED ON.

          WRITE:/1 sy-vline,
                '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:/ '用户出口数量:' , sy-tfill.

        ELSE.

          FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.

          WRITE:/(95) '此TCode木有用户出口!'.

        ENDIF.

      ELSE.

        FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
        WRITE:/(95) '事务代码不存在!'.

      ENDIF.

    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.
      
     
    版本更新V0.2(附加了根据程序名查询UserExit的功能),代码:
    *************************************************************************


    REPORT  YLBTEST2.

    TABLES: TSTC,
            TADIR,
            MODSAPT,
            MODACT,
            TRDIR,
            TFDIR,
            ENLFDIR,
            SXS_ATTRT ,
            TSTCT.

    PARAMETERS: P_TCODE LIKE TSTC-TCODE,   "事务码
                P_PGMNA LIKE TSTC-PGMNA.   "程序名

    DATA : JTAB LIKE TADIR OCCURS WITH HEADER LINE.
    DATA : FIELD1(30).
    DATA : V_DEVCLASS LIKE TADIR-DEVCLASS.
    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,
              '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.
     
    ************************************************************************
  • 相关阅读:
    newcoder 筱玛的迷阵探险(搜索 + 01字典树)题解
    str&repr的使用&format模板的自定义
    内置函数的补充与getattrebuit & item系列
    python几种常用模块
    面向对象的反射&动态导入模块
    面向对象的封装&定制数据类型
    面向对象的多态
    面向对象的继承
    面向对象的属性与方法
    面向对象的属性及类的增删改查
  • 原文地址:https://www.cnblogs.com/libo2019/p/10431732.html
Copyright © 2011-2022 走看看