找增强

来源:互联网 发布:马基雅维利主义知乎 编辑:程序博客网 时间:2024/04/27 21:59

1、用SE24事物代码运行在对象类型里输入 CL_EXITHANDLER,然后点显示按钮  ----->选择GET_INSTANCE方法,在方法CALL METHOD cl_exithandler=>get_class_name_by_interface 设置断点,然后运行需要设置增强的事物代码 ------>系统会自动跑到断点的地方,点击 exit_name,点击下一步按钮运行,在值里可以找到相应的出口(badi)名,----->复制出口名 用事物代码SE18运行------- >然后点击BADI名称,输入复制好的出口(badi)名点击显示,然后点击“接口”视图,找到增强后用SE19创建并修改增强点,输入SE19,然后在创建实施块选择"典型业务加载项",在业务加载项名称里输入找到的增强,比如MB_MIGO_BADI,然后点创建实施,在弹出的窗体中输入实施名称,比如 输入ZMB_MIGO_BADI,然后点钩按钮。创建好之后然后在编辑实施,选择典型业务加载项实施里输入刚创建的zmb_migo_badi点更改,然后选择接口,在里面输入代码就可以实现功能了。


2、用程序查询:

*&---------------------------------------------------------------------*
*& Report  YTEST099
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  YTEST099 NO STANDARD PAGE HEADING.

DATABEGIN OF ITAB OCCURS 0.
  INCLUDE STRUCTURE mara.
DATAEND OF ITAB.

datag_itab TYPE mara OCCURS WITH HEADER LINE .


TABLES TSTC,
TADIR,
MODSAPT,
MODACT,
TRDIR,
TFDIR,
ENLFDIR,
SXS_ATTRT ,
TSTCT.
DATA JTAB LIKE TADIR OCCURS WITH HEADER LINE.
DATA FIELD1(30).
DATA V_DEVCLASS LIKE TADIR-DEVCLASS.
PARAMETERS P_TCODE LIKE TSTC-TCODE,
P_PGMNA LIKE TSTC-PGMNA .
DATA WA_TADIR TYPE TADIR.
START-OF-SELECTION.


break abap10.

IF NOT P_TCODE IS INITIAL.
SELECT SINGLE FROM TSTC WHERE TCODE EQ P_TCODE.
ELSEIF NOT P_PGMNA IS INITIAL.
TSTC-PGMNA P_PGMNA.
ENDIF.
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 NE 0.
SELECT SINGLE FROM TRDIR
WHERE NAME TSTC-PGMNA.
IF TRDIR-SUBC EQ '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 EQ ENLFDIR-AREA.
MOVE TADIR-DEVCLASS TO V_DEVCLASS.
ENDIF.
ENDIF.
SELECT FROM TADIR INTO TABLE JTAB
WHERE PGMID 'R3TR'
AND OBJECT IN ('SMOD''SXSD')
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(20P_TCODE,
45(50TSTCT-TTEXT.
SKIP.
IF NOT JTAB[] IS INITIAL.
WRITE:/(105SY-ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
* Sorting the internal Table
SORT JTAB BY OBJECT.
DATA WF_TXT(60TYPE C,
WF_SMOD TYPE ,
WF_BADI TYPE ,
WF_OBJECT2(30TYPE C.
CLEAR WF_SMODWF_BADI WF_OBJECT2.
* Get the total SMOD.
LOOP AT JTAB INTO WA_TADIR.
AT FIRST.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 SY-VLINE,
'Enhancement/ Business Add-in',
41 SY-VLINE ,
42 'Description',
105 SY-VLINE.
WRITE:/(105SY-ULINE.
ENDAT.
CLEAR WF_TXT.
AT NEW OBJECT.
IF WA_TADIR-OBJECT 'SMOD'.
WF_OBJECT2 'Enhancement' .
ELSEIF WA_TADIR-OBJECT 'SXSD'.
WF_OBJECT2 ' Business Add-in'.
ENDIF.
FORMAT COLOR COL_GROUP INTENSIFIED ON.
WRITE:/1 SY-VLINE,
WF_OBJECT2,
105 SY-VLINE.
ENDAT.
CASE WA_TADIR-OBJECT.
WHEN 'SMOD'.
WF_SMOD WF_SMOD + 1.
SELECT SINGLE MODTEXT INTO WF_TXT
FROM MODSAPT
WHERE SPRSL SY-LANGU
AND NAME WA_TADIR-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WHEN 'SXSD'.
* For BADis
WF_BADI WF_BADI + .
SELECT SINGLE TEXT INTO WF_TXT
FROM SXS_ATTRT
WHERE SPRSL SY-LANGU
AND EXIT_NAME WA_TADIR-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
ENDCASE.
WRITE:/1 SY-VLINE,
WA_TADIR-OBJ_NAME HOTSPOT ON,
41 SY-VLINE ,
42 WF_TXT,
105 SY-VLINE.
AT END OF OBJECT.
WRITE /(105SY-ULINE.
ENDAT.
ENDLOOP.
WRITE:/(105SY-ULINE.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:'No.of Exits:' WF_SMOD.
WRITE:'No.of BADis:' WF_BADI.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105'No userexits or BADis exist'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105'Transaction does not exist'.
ENDIF.
AT LINE-SELECTION.
DATA WF_OBJECT TYPE TADIR-OBJECT.
CLEAR WF_OBJECT.
GET CURSOR FIELD FIELD1.
CHECK FIELD1(8EQ 'WA_TADIR'.
READ TABLE JTAB WITH KEY OBJ_NAME SY-LISEL+1(20).
MOVE JTAB-OBJECT TO WF_OBJECT.
CASE WF_OBJECT.
WHEN 'SMOD'.
SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
WHEN 'SXSD'.
SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).
CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
ENDCASE.