07-25-2005 3:48 AM
Hi,
Given a transaction what r the ways to find the applicable BADIs ?
Should we only search the get_instance method or there exists some better ways to search the BADI ?
Also given a transaction what r the ways to search for user-exits / customer exits ?
In this case also should we only search call customer-function ?
What r the standard ways to find user-exits/ customer exits and BADIs applicable ?
Regards,
Nitin
07-25-2005 3:54 AM
hi,
there is a program to search user-exits:
REPORT ZUSEREXITS .
Finding the user-exits of a SAP transaction code
*
Enter the transaction code in which you are looking for the user-exit
and it will list you the list of user-exits in the transaction code.
Also a drill down is possible which will help you to branch to SMOD.
*
Written by : SAP Basis, ABAP Programming and Other IMG Stuff
*
TABLES : tstc,
tadir,
modsapt,
modact,
trdir,
tfdir,
enlfdir,
tstct.
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.
Transaction Code
PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
SELECT SINGLE * FROM tstc
WHERE tcode EQ p_tcode.
IF sy-subrc = 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 = '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 = enlfdir-area.
MOVE : tadir-devclass TO v_devclass.
ENDIF.
ENDIF.
SELECT * FROM tadir INTO TABLE jtab
WHERE pgmid = 'R3TR' AND
object = 'SMOD' AND
devclass = v_devclass.
SELECT SINGLE * FROM tstct
WHERE sprsl = sy-langu AND
tcode = 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.
WRITE:/(95) sy-uline.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
WRITE:/(95) sy-uline.
LOOP AT jtab.
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,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
ENDLOOP.
WRITE:/(95) sy-uline.
DESCRIBE TABLE jtab.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No of Exits:' , sy-tfill.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'No User Exit exists'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) 'Transaction Code Does Not Exist'.
ENDIF.
AT LINE-SELECTION.
GET CURSOR FIELD field1.
CHECK field1(4) = 'JTAB'.
SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
Regards,
Andrej.
07-25-2005 4:22 AM
This can not be a standard way of searching user exits.
Also this will not enlist the available BADI's for the transaction.
What is the technical way to search user exits / customer exits /BADIs ?
Regards,
Nitin
07-25-2005 5:14 AM
Hi Nitin
For what it's worth:
If you really need to search for a Badi (or other user exit) within a program, then maybe a technical approach is for you.
This seems that you have already made the design decision as to where the code should fit within the SAP application.
In SAP software, I think most would agree that there is normally more than one way to achieve what you want to do. I could certainly be wrong though.
Sometimes it may be better to approach from an application point of view and look from within the Implementation Guide. You can show BAdis as an additional information column in the IMG.
Alternatively you can simply search the definitions in SE18.
Or, if you drill down to the Package view in SE80 for the program you are looking at, you can browse the enhancements in that package.
Cheers
Dom