admin 管理员组

文章数量: 1087139


2024年1月10日发(作者:网页设计模板中国素材)

SAP程序用户出口、BAPI查找方法

1、编写一个查找用户出口的程序代码(可在网上找到):

REPORT z_find_userexit_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 - '(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.

2、操作界面:

找到合适的用户出口程序

点击“显示”

双击功能模块名进入:

找到用户出口名:,然后在SE38中,以用户出口名ZXV50SU01为

程序名建一个增强程序即可。


本文标签: 出口 用户 查找 设计