查找增强的程序

网友投稿 261 2022-09-26

查找增强的程序

*&---------------------------------------------------------------------*

*& Report  ZLM_ENHANMENT_SEARCH

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  ZLM_ENHANMENT_SEARCH .

*&---------------------------------------------------------------------*

*&  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 .                                  "BADI

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  = 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 - ' ( 001 ) ,

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 .

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot读取resources下文件的方式详解
下一篇:使用txt动态上传数据至库表
相关文章

 发表评论

暂时没有评论,来抢沙发吧~