*&---------------------------------------------------------------------*
*& Report  ZFIND_EXIT_BADI
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT z_find_userexit_and_badi 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 0 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.
PARAMETERS: exit RADIOBUTTON GROUP 1 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'.
        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

* Take the user to SMOD for the Exit that was selected:

AT LINE-SELECTION.
  
GET CURSOR FIELD field1.
  
CHECK field1(4) EQ '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.

ZFIND_EXIT_BADI的更多相关文章

随机推荐

  1. 杭电 4707 pet(并查集求元素大于k的集合)

    Description One day, Lin Ji wake up in the morning and found that his pethamster escaped. He searche ...

  2. Leetcode 224.基本计算器

    基本计算器 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格  . 示例 1: 输入: "1 + 1 ...

  3. Relocation(状压DP)

    Description Emma and Eric are moving to their new house they bought after returning from their honey ...

  4. [Poi2011]Meteors 题解

    题目大意: 给定一个环,每个节点有一个所属国家,k次事件,每次对[l,r]区间上的每个点点权加上一个值,求每个国家最早多少次操作之后所有点的点权和能达到一个值. 思路: 整体二分(二分答案),对于每个 ...

  5. POJ 2288 汉密尔顿回路 DP解决

    题目大意: 有n个岛屿,令Vi为岛屿Ci的权值.一条汉密尔顿路径C1,C2,C3...Cn的值为3部分 第一部分,将路径中的岛的权值相加,第二部分将每条边上的(Ci,Cj),加上所有的Vi*Vj 第三 ...

  6. BZOJ 1303: [CQOI2009]中位数图 【水题】

    给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. Input 第一行为两个正整数n和b ,第二行为1~n 的排列. Out ...

  7. MYSQL常见运算符和函数【重要】

    字符函数 (1)CONCAT():字符连接 SELECT CONCAT(‘IMOOC’,’-‘,’MySQL’);//IMOOC-MySQL SELECT CONCAT (first_name,las ...

  8. PB编译

    java -jar wire-compiler-1.8.0-jar-with-dependencies.jar --java_out=./  ngame.proto 其中java_out是指输出要放在 ...

  9. CodeForces 592D Super M

    先把没用的边去掉,求出包含m个点的最小树.然后求出最小树的直径就可以得到答案了. #include <cstdio> #include <cstring> #include & ...

  10. BZOJ——T 1707: [Usaco2007 Nov]tanning分配防晒霜

    http://www.lydsy.com/JudgeOnline/problem.php?id=1707 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 8 ...