zoukankan      html  css  js  c++  java
  • 自开发 zfind 查找程序增强

    *&---------------------------------------------------------------------*
    *& Report  ZPZTEST
    *&
    *&---------------------------------------------------------------------*
    *& find_userexit_and_badi
    *&
    *&---------------------------------------------------------------------*

    REPORT  zfind NO STANDARD PAGE HEADING.
    *&---------------------------------------------------------------------*
    *&  Enter the transaction code that you want to search through in order
    *&  to find which Standard SAP User Exits and BADIs
    *&
    *&---------------------------------------------------------------------*
    *& For field 'SUBC' of table 'TRDIR':
    *&   M  Module Pool
    *&   F  Function group
    *&   S  Subroutine Pool
    *&   J  Interface pool
    *&   K  Class pool
    *&   T  Type Pool
    *&   X  XSLT Program
    *&---------------------------------------------------------------------*
    *& Tables
    *&---------------------------------------------------------------------*
    TABLES: tstc     " SAP Transaction Codes
            tadir    " Directory of Repository Objects
            modsapt  " SAP Enhancements - Short Texts
            sxs_attrt" SAP BADI - short text
            modact   " Modifications
            trdir    " System table TRDIR
            tfdir    " Function Module
            enlfdir  " Additional Attributes for Function Modules
            tstct    " Transaction Code Texts
    *&---------------------------------------------------------------------*
    *& Variables
    *&---------------------------------------------------------------------*
    DATA: jtab        LIKE tadir OCCURS WITH HEADER LINE.
    DATA: field1(30).
    DATA: v_devclass  LIKE tadir-devclass.
    DATA: object      LIKE tadir-object.
    DATA: bdcdata_wa  TYPE bdcdata,
          bdcdata_tab TYPE TABLE OF bdcdata.
    DATA: opt         TYPE ctu_params.

    *&---------------------------------------------------------------------*
    *& Selection Screen Parameters
    *&---------------------------------------------------------------------*
    SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
    *SELECTION-SCREEN SKIP.
    PARAMETERS: p_tcode LIKE tstc-tcode OBLIGATORY.
    *SELECTION-SCREEN SKIP.
    PARAMETERSexit RADIOBUTTON GROUP DEFAULT 'X',
                badi RADIOBUTTON GROUP 1.
    SELECTION-SCREEN END OF BLOCK a01.

    DEFINE bdc_program.
      clear bdcdata_wa.
      bdcdata_wa-program  = &1.
      bdcdata_wa-dynpro   = &2.
      bdcdata_wa-dynbegin = &3.
      append bdcdata_wa to bdcdata_tab.
    END-OF-DEFINITION.
    DEFINE bdc_detail.
      clear bdcdata_wa.
      bdcdata_wa-fnam = &1.
      bdcdata_wa-fval = &2.
      append bdcdata_wa to bdcdata_tab.
    END-OF-DEFINITION.



    *&---------------------------------------------------------------------*
    *& Start of main program
    *&---------------------------------------------------------------------*
    START-OF-SELECTION.
      IF exit 'X'.
        object 'SMOD'.  " User-exit!
      ELSE.
        object 'SXSD'.  " BADI!
      ENDIF.

    * Validate Transaction Code:
      SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.
    * Find Repository Objects for transaction code:
      IF sy-subrc EQ 0.                                         " IF 1
        SELECT SINGLE * FROM tadir WHERE pgmid    'R3TR'
                                     AND object   'PROG'
                                     AND obj_name = tstc-pgmna" Program name!
        MOVE: tadir-devclass TO v_devclass" Package



        IF sy-subrc NE 0.
          SELECT SINGLE * FROM trdir WHERE name = tstc-pgmna.
          IF trdir-subc EQ 'F'.  " Function Group
            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.

    *   Find SAP Modifactions:
        SELECT * FROM tadir INTO TABLE jtab WHERE pgmid    'R3TR'
    *                                          AND object   = 'SMOD'
                                              AND object   = object
                                              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.                               " IF 2
          WRITE: /(95) sy-uline.
          FORMAT COLOR COL_HEADING INTENSIFIED ON.
    *     Exit:
          IF exit 'X'.
            WRITE: /1  sy-vline,
                    2  'Exit Name',
                    22 sy-vline ,
                    23 'Description',
                    95 sy-vline.


    *     BADI:
          ELSE.
            WRITE: /1  sy-vline,
                    2  'BADI Name',
                    22 sy-vline ,
                    23 'Description',
                    95 sy-vline.
          ENDIF.
          WRITE:/(95) sy-uline.
          LOOP AT jtab.
    *       EXIT:
            IF exit 'X'.
              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,
                      22 sy-vline ,
                      23 modsapt-modtext,
                      95 sy-vline.

    *       BADI:
            ELSE.
              SELECT SINGLE * FROM sxs_attrt WHERE sprsl     = sy-langu
                                               AND exit_name = jtab-obj_name.
              FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
              WRITE: /1  sy-vline,
                      2  jtab-obj_name HOTSPOT ON,
                      22 sy-vline ,
                      23 sxs_attrt-text,
                      95 sy-vline.
            ENDIF.
          ENDLOOP.
          WRITE: /(95) sy-uline.
          DESCRIBE TABLE jtab.
          SKIP.
          FORMAT COLOR COL_TOTAL INTENSIFIED ON.
          IF exit 'X'.
            IF exit 'X'.
              WRITE: / 'No of Exits:', sy-tfill.
            ELSE.
              WRITE: / 'No of BADIs:', sy-tfill.         
    ENDIF.       
    ELSE.                                                   " IF 2         
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.         
    WRITE: /(95'No User Exit exists'.       
    ENDIF.                                                  " IF 2     
    ELSE.                                                     " IF 1       
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.       
    WRITE: /(95'Transaction Code Does Not Exist'.     
    ENDIF.                                                    " IF 1   
    ENDIF.
    * TAKE THE USER TO SMOD FOR THE EXIT THAT WAS SELECTED:
    AT LINE-SELECTION.   
    GET CURSOR FIELD field1.   
    CHECK field1(4EQ 'JTAB'.
    * For exit:   
    IF exit 'X'.     
    SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).     
    CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
    * For BADI:   
    ELSE.     
    CLEAR: bdcdata_wa, bdcdata_tab[].     bdc_program 
    'SAPLSEXO' '0100' 'X'.     bdc_detail 
    'BDC_CURSOR' 'G_IS_BADI'.     bdc_detail 
    'BDC_OKCODE' '=ISSPOT'.     bdc_detail 
    'G_IS_BADI' 'X'.     bdc_program 
    'SAPLSEXO' '0100' 'X'.     bdc_detail 
    'BDC_CURSOR' 'G_BADINAME'.     bdc_detail 
    'BDC_OKCODE' '=SHOW'.     bdc_detail 
    'G_BADINAME' sy-lisel+1(20).     opt
    -dismode 'E'.     opt
    -defsize 'X'.     
    CALL TRANSACTION 'SE18' USING bdcdata_tab OPTIONS FROM opt.   
    ENDIF.

  • 相关阅读:
    js导出excel增加表头、mso-number-format定义数据格式
    $.each() 与 $(selector).each()的区别
    【Linux常用命令】Linux kill, killall, kill -9,
    Shell 语法报错记录
    【常用脚本记录1----挂测问题脚本】
    【】系统一启动就会运行的程序
    【WAN】PPPOE宽带上网功能详解
    解决linux awk:line的问题
    Ubuntu 16.04安装测试MQTT Mosquitto
    【TCP协议详解】
  • 原文地址:https://www.cnblogs.com/springzt/p/5643997.html
Copyright © 2011-2022 走看看