Skip to Content
author's profile photo Former Member
Former Member

how to find out the exact BAdI

hi all,

can any one tell me how to find out the exact badi for the given transaction

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

5 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Jun 15, 2008 at 05:51 AM

    Hi Sravan

    Check out this link it will surely be helpful for u

    How to find badi's

    Reward points if it is helpful for u

    Regards

    Karan

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jun 15, 2008 at 07:02 AM

    Hi,

    You can find the BADI In diffrent approches, finding thourgh class CL_EXITHANDLER is 1 method.

    Here are the steps.

    1. Go to Tcode SE24

    2. In object type specify object name as CL_EXITHANDLER

    3. Double click on method - GET_INSTANCE

    4. on line no 25 , i.e. is case statement, set a debug point

    5. execute any desire transaction code in a new screen for which

    you want to find a BADI

    6. it will take you in debugging mode, debugging the program

    press F5 until you are in method

    CALL METHOD cl_badi_flt_data_trans_and_db=>act_imps_per_flt_val

    7. check the value of exit_name in exporting parameter

    8. it will list all badi's available for that transaction

    2)Finding thourgh SQL TRACE ST05 is another apporach,see the blog

    /people/alwin.vandeput2/blog/2006/04/13/how-to-search-for-badis-trace-it

    Regards

    Kiran Sure

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jun 15, 2008 at 07:08 AM

    Hi,

    Execute this report !

    It gives you all the badis and user exits present for that particular transaction !

    **********************************************************************

    REPORT z_user_exits_n_badis.

    TABLES:

    tstc,

    tadir,

    modsapt,

    modact,

    trdir,

    tfdir,

    enlfdir,

    sxs_attrt ,

    tstct.

    DATA: jtab LIKE tadir OCCURS 0 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.

    u2022 START-OF-SELECTION *

    START-OF-SELECTION.

    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(20) p_tcode,

    45(50) tstct-ttext.

    SKIP.

    IF NOT jtab[] IS INITIAL.

    WRITE:/(105) sy-uline.

    FORMAT COLOR COL_HEADING INTENSIFIED ON.

    u2022 Sorting the internal Table

    SORT jtab BY object.

    DATA : wf_txt(60) TYPE c,

    wf_smod TYPE i ,

    wf_badi TYPE i ,

    wf_object2(30) TYPE c.

    CLEAR : wf_smod, wf_badi , wf_object2.

    u2022 Get the total SMOD.

    LOOP AT jtab INTO wa_tadir.

    AT FIRST.

    FORMAT COLOR COL_HEADING INTENSIFIED ON.

    WRITE:/1 sy-vline,

    2 'Enhancement/ Business Add-in',

    41 sy-vline ,

    42 'Description',

    105 sy-vline.

    WRITE:/(105) sy-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,

    2 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'.

    u2022 For BADis

    wf_badi = wf_badi + 1 .

    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,

    2 wa_tadir-obj_name HOTSPOT ON,

    41 sy-vline ,

    42 wf_txt,

    105 sy-vline.

    AT END OF object.

    WRITE : /(105) sy-uline.

    ENDAT.

    ENDLOOP.

    WRITE:/(105) sy-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(8) EQ '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.

    Thanks

    Sarada

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jun 15, 2008 at 07:55 AM

    Hi,

    There are multiple ways of searching for BADI.

    • Finding BADI Using CL_EXITHANDLER=>GET_INSTANCE

    • Finding BADI Using SQL Trace (TCODE-ST05).

    • Finding BADI Using Repository Information System (TCODE- SE84).

    •Finding BADI Using CL_EXITHANDLER=>GET_INSTANCE

    Go to the Transaction, for which we want to find the BADI,

    Get the Program Name of Corresponding Transaction.

    (Click on System->Status. Double Click on Program Name)

    Once inside the program search for ‘CL_EXITHANDLER=>GET_INSTANCE’.

    Make sure the radio button “In main program” is checked.

    A list of all the programs with call to the BADI’s will be listed.

    The export parameter ‘EXIT_NAME’ for the method GET_INSTANCE of class CL_EXITHANDLER will have the user exit assigned to it.

    The changing parameter ‘INSTANCE’ will have the interface assigned to it.

    •Finding BADI Using SQL Trace (TCODE-ST05).

    /people/alwin.vandeput2/blog/2006/04/13/how-to-search-for-badis-trace-it

    •Finding BADI Using Repository Information System (TCODE- SE84).

    Go to “Maintain Transaction” (TCODE- SE93).

    Enter the Transaction VD02 for which you want to find BADI.

    Click on the Display push buttons.

    Get the Package Name. (Package VS in this case)

    Go to TCode: SE84->Enhancements->Business Add-inns->Definition

    Enter the Package Name and Execute.

    Thanks

    Vikranth

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Jun 15, 2008 at 08:03 AM

    hi,

    A transaction can have

    many no. of badi's or nothing.

    The program given in above posts will get u all avilable badi's for a transaction.

    To know particular badi depends on ur reuirement.

    for example u want to trigger a badi when saving that transaction.

    then put a breakpoint in all the available badi's for that transaction and execute ur transaction.then u will get the badi which will trigger at saving.

    this is only in somecase,in others by looking at structures avilabe and documentation u can get them directly.

    reward points if hlpful.

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.