陷阱2

REPORT yfind_exit.

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

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.

DATA: L_NAME LIKE MODSAP-NAME,
L_MEMBER LIKE MODSAP-MEMBER,
L_STEXT LIKE TFTIT-STEXT.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP.
PARAMETERS: P_TCODE LIKE TSTC-TCODE OBLIGATORY.
SELECTION-SCREEN SKIP.

PARAMETERS: P_EXIT RADIOBUTTON GROUP 1 DEFAULT 'X',
                         P_BADI RADIOBUTTON GROUP 1.

SELECTION-SCREEN END OF BLOCK B1.

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-SELECTION.
IF EXIT = ‘X’.
OBJECT = ‘SMOD’. " User-exit!
ELSE.
OBJECT = ‘SXSD’. " BADI!
ENDIF.

SELECT SINGLE * FROM TSTC WHERE TCODE = 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 <> 0.
  SELECT SINGLE * FROM TRDIR WHERE NAME = TSTC-PGMNA.
  IF TRDIR-SUBC  =  '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   = 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,
             40(67) TSTCT-TTEXT.
SKIP.

IF NOT JTAB[] IS INITIAL.                             
  WRITE: /(107) SY-ULINE.
  FORMAT COLOR COL_HEADING INTENSIFIED ON.

  IF EXIT = 'X'.
    WRITE: /1  SY-VLINE,
               (40)  'Exit Name',
               SY-VLINE ,
              (60)  'Description',
               SY-VLINE.

  ELSE.
    WRITE: /1  SY-VLINE,
               (40) 'BADI Name',
               SY-VLINE ,
               (60)  'Description',
               SY-VLINE.
  ENDIF.
  WRITE:/(107) SY-ULINE.

LOOP AT JTAB.

    IF EXIT = 'X'.
      SELECT SINGLE * FROM MODSAPT WHERE SPRSL = SY-LANGU
                                     AND NAME  = JTAB-OBJ_NAME.
      FORMAT COLOR COL_NORMAL INTENSIFIED ON.
      
      WRITE: /1  SY-VLINE,
                       JTAB-OBJ_NAME HOTSPOT ON,
                       SY-VLINE ,
                      MODSAPT-MODTEXT,
                      SY-VLINE.

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,                   
                        JTAB-OBJ_NAME HOTSPOT ON,                   
                        SY-VLINE ,                   
               		    SXS_ATTRT-TEXT,                   
               		    SY-VLINE.         
 ENDIF.       

ENDLOOP.

WRITE: /(107) SY-ULINE.
DESCRIBE TABLE JTAB.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
IF EXIT = ‘X’.
WRITE: / (95) ‘No of Exits:’, SY-TFILL.
ELSE.
WRITE: / (95) ‘No of BADIs:’, SY-TFILL.
ENDIF.

ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE: /(107) ‘No User Exit exists’.
ENDIF.

ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE: /(107) ‘Transaction Code Does Not Exist’.
ENDIF.

AT LINE-SELECTION.
GET CURSOR FIELD FIELD1.
CHECK FIELD1(4) EQ ‘JTAB’.

IF EXIT = ‘X’.
SET PARAMETER ID ‘MON’ FIELD SY-LISEL+2(10).
CALL TRANSACTION ‘SMOD’ AND SKIP FIRST SCREEN.
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+2(20).
OPT-DISMODE = ‘E’.
OPT-DEFSIZE = ‘X’.
CALL TRANSACTION ‘SE18’ USING BDCDATA_TAB OPTIONS FROM OPT.
ENDIF.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值