查找badi&exit


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


REPORT  ZUSER_EXIT 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.
————————————————
版权声明:本文为CSDN博主「SAP剑客」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhongguomao/article/details/8030035

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值