查找增强出口和BADI程序详解编程语言

*&---------------------------------------------------------------------* 
*& Report  Z_FIND_EXIT_AND_BADI 
*& 
*&---------------------------------------------------------------------* 
*& 
*& 
*&---------------------------------------------------------------------* 
report z_find_exit_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.

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18619.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论