查找增强出口和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.
时间: 2024-10-04 14:15:07

查找增强出口和BADI程序的相关文章

查找SAP标准程序用户出口及BADI的方法

查找SAP标准事务代码中使用的BADI: 在SE24中,查看类对象CL_EXITHANDLER,在其方法(Methods)GET_INSTANCE 的第14行打断点,之后运行事务代码: 当有BADI将会被执行的时候,这时候会进入类CL_EXITHANDLER的GET_INSTANCE方法,按F6执行这个方法之后,参数EXIT_NAME中的值便是BADI定义(SE18中看到的东西),参数CLASS_NAME则是类对象名称(SE24里面看到的东西),所有的方法实现都是存在于类对象中: 通过查找类方法

SAP ABAP之第一,二,三代出口类型BADI实现 概念解释

BADI是用户的第三代出口类型,我们来看看其具体的是如何实现的. 一,用户出口的类型 1,第一代 sap提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求.这类增强都需要修改sap的标准代码.示例:USEREXIT.. in SAPMV45A 2,第二代 sap提供的是CUSTOMER-FUNCTION,它是通过SMOD和CMOD完成实现. 3,第三代 sap提供的第三代的用户出口就是BADI,他的调用方式是CALL METHOD (instance),(相关的TCOD

page61-将二分查找重写为一段面向对象的程序

1 将二分查找重写为一段面向对象的程序 (用于在整数集合中进行查找的一种抽象数据类型) public class StaticSETofInts [API] StaticSETofInts(int[] a )根据 a[]中的所有值创建一个集合 boolean contains(int key) key是否存在于集合中. [数据实现] import java.util.Arrays; public class StaticSETofInts { private int[] a; public St

SAP ABAP 查找用户出口

1.查找事物代码程序名 2.查找用户出口 T-CODE:SE80 在子例程中查找以USEREXIT开头的子程序.

SAP 增强篇 Method1 BADI增强的查找方法

查找BADI的方法:(1)通过SE24,输入CL_EXITHANDLER,然后在方法GET_INSTANCE中设置断点,然后运行事务代码判断 exit_name的值,操作过程如下:输入se24,然后输入cl_exithandler 找到 GET_INSTANCE 方法,双击get_instance设置断点查看exit_name的值: 示例:  我们要找PO保存的增强,可以用哪个BADI ?前台输入 ME21N,进入断点, EXIT_NAME = ME_GUI_PO_CUST F8 , EXIT_

【学习】几种查找增强的方法

***方法一**************************************** 通过SE30,运行TCODE后,点Evaluate后,查看运行时间分析评估:命中清单. 找以“exit”开头的SAP程序,如:EXIT_SAPLIE01_007, 这个FUNCTION就是TCODE提供的一个出口. 至于如何查看这个增强是属于哪个SMOD,能够查阅 MODSAP这个表(SAP Enhancements). ***方法二***********************************

windows下查找指定端口被哪个程序占用

在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用. eg.查看端口号为61078被哪个程序占用 1.查看端口号为61079被哪个PID所占用:Netstat –ano|findstr "<端口号>" 从结果中可以找到端口61078被PID为5576的进程占用 2.通过该PID查找对应的进程名称 从结果中可以判断PID为5576的进程名为YoukuMediaCenter.exe 3.通过用任务管理器查看找到该进程的安装目录

入门命令13-字符串查找增强:findstr

http://www.cnblogs.com/doupip/archive/2011/12/23/2299210.html 在文件中寻找字符串. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file] [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]] strings [[drive:][path]filename[

BDIA增强

SE24     CL_EXITHANDLER的方法GET_INSTANCE中有基本上所有的增强都会走这边,打上断点查找增强名称,或者在程序中全局搜索GET_INSTANCE关键字 然后 SE19 下 class  badi 下的badi名称输入,创建badi实现,code增强业务逻辑 BDIA增强,码迷,mamicode.com