Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BADI's

Former Member
0 Likes
966

Hi Experts,

I am working on a project to create a BADI for automatic address check. I have to write the functional spec first then create technical spec and write code. Can any one please send me the functional spec and technical specs for BADI. And any good documents or real time work on BADI like how to find a BADI and How to create them.

points will be rewarded.

Thank you,

Admir.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
886

Hi,

BADI

BADI(Business Add-In) is the object oriented method of user exits...

Each BAdI has a definition and more than one implementation. The definition means the methods(in class concept) that are used for performing various functions. The BAdI definition can be viewed in SE18 transaction(for standard ones) and user-defined BAdIs can be created in the same transaction as well.

When you create a BAdI definition, an class interface will be automatically created and you can define your methods in the interface. The implementation of the methods can be done in SE19 transaction .

YOu can go through these links...

http://esnips.com/doc/10016c34-55a7-4b13-8f5f-bf720422d265/BADIs.pdf

http://esnips.com/doc/e06e4171-29df-462f-b857-54fac19a9d8e/ppt-on-badis.ppt

http://esnips.com/doc/43a58f51-5d92-4213-913a-de05e9faac0d/Business-Addin.doc

http://esnips.com/doc/1e10392e-64d8-4181-b2a5-5f04d8f87839/badi.doc

http://esnips.com/doc/365d4c4d-9fcb-4189-85fd-866b7bf25257/customer-exits--badi.zip

http://esnips.com/doc/3b7bbc09-c095-45a0-9e89-91f2f86ee8e9/BADI-Introduction.ppt

Some Other Links

BADI

http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm

http://support.sas.com/rnd/papers/sugi30/SAP.ppt

http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm

http://support.sas.com/rnd/papers/sugi30/SAP.ppt

http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm

http://members.aol.com/_ht_a/skarkada/sap/

http://www.ct-software.com/reportpool_frame.htm

http://www.saphelp.com/SAP_Technical.htm

http://www.kabai.com/abaps/q.htm

http://www.guidancetech.com/people/holland/sap/abap/

http://www.planetsap.com/download_abap_programs.htm

http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm

/people/thomas.weiss/blog/2006/04/03/how-to-define-a-new-badi-within-the-enhancement-framework--part-3-of-the-series

/people/thomas.weiss/blog/2006/04/18/how-to-implement-a-badi-and-how-to-use-a-filter--part-4-of-the-series-on-the-new-enhancement-framework

http://www.esnips.com/web/BAdI

http://www.allsaplinks.com/badi.html

http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm

http://support.sas.com/rnd/papers/sugi30/SAP.ppt

Regards,

Ranjit Thakur.

<b>Please Mark The Helpful Answer.</b>

Hi Experts,

I am working on a project to create a BADI for automatic address check. I have to write the functional spec first then create technical spec and write code. Can any one please send me the functional spec and technical specs for BADI. And any good documents or real time work on BADI like how to find a BADI and How to create them.

points will be rewarded.

Thank you,

Admir.

6 REPLIES 6
Read only

Former Member
0 Likes
886

Hi Experts,

My email id is [email protected].

Thank you,

Admir.

Read only

Former Member
0 Likes
887

Hi,

BADI

BADI(Business Add-In) is the object oriented method of user exits...

Each BAdI has a definition and more than one implementation. The definition means the methods(in class concept) that are used for performing various functions. The BAdI definition can be viewed in SE18 transaction(for standard ones) and user-defined BAdIs can be created in the same transaction as well.

When you create a BAdI definition, an class interface will be automatically created and you can define your methods in the interface. The implementation of the methods can be done in SE19 transaction .

YOu can go through these links...

http://esnips.com/doc/10016c34-55a7-4b13-8f5f-bf720422d265/BADIs.pdf

http://esnips.com/doc/e06e4171-29df-462f-b857-54fac19a9d8e/ppt-on-badis.ppt

http://esnips.com/doc/43a58f51-5d92-4213-913a-de05e9faac0d/Business-Addin.doc

http://esnips.com/doc/1e10392e-64d8-4181-b2a5-5f04d8f87839/badi.doc

http://esnips.com/doc/365d4c4d-9fcb-4189-85fd-866b7bf25257/customer-exits--badi.zip

http://esnips.com/doc/3b7bbc09-c095-45a0-9e89-91f2f86ee8e9/BADI-Introduction.ppt

Some Other Links

BADI

http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm

http://support.sas.com/rnd/papers/sugi30/SAP.ppt

http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm

http://support.sas.com/rnd/papers/sugi30/SAP.ppt

http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm

http://members.aol.com/_ht_a/skarkada/sap/

http://www.ct-software.com/reportpool_frame.htm

http://www.saphelp.com/SAP_Technical.htm

http://www.kabai.com/abaps/q.htm

http://www.guidancetech.com/people/holland/sap/abap/

http://www.planetsap.com/download_abap_programs.htm

http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm

/people/thomas.weiss/blog/2006/04/03/how-to-define-a-new-badi-within-the-enhancement-framework--part-3-of-the-series

/people/thomas.weiss/blog/2006/04/18/how-to-implement-a-badi-and-how-to-use-a-filter--part-4-of-the-series-on-the-new-enhancement-framework

http://www.esnips.com/web/BAdI

http://www.allsaplinks.com/badi.html

http://help.sap.com/saphelp_erp2005/helpdata/en/73/7e7941601b1d09e10000000a155106/frameset.htm

http://support.sas.com/rnd/papers/sugi30/SAP.ppt

Regards,

Ranjit Thakur.

<b>Please Mark The Helpful Answer.</b>

Read only

uwe_schieferstein
Active Contributor
0 Likes
886

Hello Admir

If you are already working on SAP release 6.20 (or higher) the BAdI <b>ADDRESS_CHECK</b> may be the one you are looking for.

The BAdI interface has a method <b>ADDRESS_POSTAL_CHECK</b> where you can check the address (provided in structure <b>ADRC_STRUC</b>). The errors resulting from the address check have to be returned in CHANGING parameter CH_T_ERROR_TABLE.

Regards

Uwe

Read only

0 Likes
886

Can any one please send me the sample functional and technical specs. My email id is [email protected]

Read only

Former Member
0 Likes
886

Hi

There is no std Technical and Functional Spec for any objects

Depending upon the orgn where you are working and depending on the client, they vary and they are not of std format.

so that won't be a criteria for you once you know how to work with BADI's practically

See the following

u can find BADI's in different ways...

1>First go to any transaction->iN THE menu bar SYSTEM->STATUS->Get the program name ->double click->u will go to the program attached to the tcode.Now search term will be CALL CL_EXITHANDLER.Now u will get list of BADI'S available..

2>Goto SE24->Give class name as CL_EXITHANDLER->Display->double click on get_instance mathod->Now u will go inside the method->Now put break point on the cl_exithandler.Now go to any transaction code and pass dat..U will see that it will be stopped on the break point which u set on the cl_exithandler...In the exit name u can find list of badi's attached to the tcode..

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).

1. Go to the Transaction, for which we want to find the BADI, take the example of Transaction VD02. Click on System->Status. Double click on the 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. Double click on the method to enter the source code.Definition of Instance would give you the Interface name.

2. Start transaction ST05 (Performance Analysis).

Set flag field "Buffer trace"

Remark: We need to trace also the buffer calls, because BADI database tables are buffered. (Especially view V_EXT_IMP and V_EXT_ACT)

Push the button "Activate Trace". Start transaction VA02 in a new GUI session. Go back to the Performance trace session.

Push the button "Deactivate Trace".

Push the button "Display Trace".

The popup screen "Set Restrictions for Displaying Trace" appears.

Now, filter the trace on Objects:

• V_EXT_IMP

• V_EXT_ACT

Push button "Multiple selections" button behind field Objects

Fill: V_EXT_IMP and V_EXT_ACT

All the interface class names of view V_EXT_IMP start with IF_EX_. This is the standard SAP prefix for BADI class interfaces. The BADI name is after the IF_EX_.

So the BADI name of IF_EX_CUSTOMER_ADD_DATA is CUSTOMER_ADD_DATA

3. 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.

Here you get a list of all the Enhancement BADI’s for the given package MB.

The simplese way for finding BADI is

1. chooes Tcode Program & package for that Tcode.

2. Go to Tcode se18

3. Press F4

4. search by package or by program.

see the links

http://help.sap.com/saphelp_nw04/helpdata/en/eb/3e7cf7940e11d295df0000e82de14a/frameset.htm

and

http://help.sap.com/saphelp_nw04/helpdata/en/eb/3e7cf7940e11d295df0000e82de14a/frameset.htm

Sample code for a PO Badi:

BAdI Name: ZCHECK_PO_LINE_ITEM (Implementation name) PO Account assignment

Definition Name: ME_PROCESS_PO_CUST

Interface Name : IF_EX_ME_PROCESS_PO_CUST

Implementing Class: ZCL_IM_BADIN_ACCOUNT_ASSGN

Method : PROCESS_HEADER

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

METHOD if_ex_me_process_po_cust~process_header .

DATA : re_data TYPE mepoheader.

*get the item data

CALL METHOD im_header->get_data

RECEIVING

re_data = re_data.

re_header = re_data.

IF ( re_data-bsart NE 'ZOC' AND re_data-bsart NE 'ZPC' ).

IF ( re_data-bsart <> 'ZIC' AND re_data-bsart <> 'UB' ).

IF re_data-bukrs NE '1001'.

MESSAGE ID 'ZM_MSG' TYPE 'E' NUMBER '000' WITH 'Use only Sipchem Company'

'Code for External Procurement'.

ENDIF.

ENDIF.

ENDIF.

ENDMETHOD.

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

Method : PROCESS_ITEM

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

METHOD if_ex_me_process_po_cust~process_item .

DATA: v_menge TYPE bamng, " PR Quantity

v_statu. " PR Status

DATA : re_data TYPE mepoitem,

re_data1 TYPE mepoaccounting,

re_accountings TYPE purchase_order_accountings ,

header TYPE purchase_order_accounting.

*get the item data

CALL METHOD im_item->get_data

RECEIVING

re_data = re_data.

IF ( re_header-bsart NE 'ZOC' AND re_header-bsart NE 'ZPC' ).

IF re_header-bsart EQ 'ZRL'.

IF re_data-konnr EQ space.

MESSAGE ID 'ZM_MSG' TYPE 'E' NUMBER '000' WITH 'You cant create a Release order'

'without a reference to Outline Agreeement'.

ENDIF.

ENDIF.

  • IF ( re_header-bsart NE 'ZOC' AND re_header-bsart NE 'ZPC' ).

IF ( re_data-banfn EQ space AND re_data-anfnr EQ space ).

MESSAGE ID 'ZM_MSG' TYPE 'E' NUMBER '000' WITH 'You can create a Purchase order'

'only with reference to a PR or RFQ'.

ENDIF.

  • ENDIF.

    • call method IM_ITEM->GET_ACCOUNTINGS

    • RECEIVING

    • RE_ACCOUNTINGS = RE_ACCOUNTINGS.

**get the accounting reference variable,this reference is needed to get

**the GL account *number and Asset number

*loop at RE_ACCOUNTINGS into header.

**get the accounting info.

  • call method header-ACCOUNTING->GET_DATA

  • RECEIVING

  • re_data = re_data1.

**if the account assignment is K then check for GL account

**if its A then check for Asset number

  • if re_data-KNTTP eq 'K'.

  • if re_data1-SAKTO IS INITIAL.

  • MESSAGE ID 'ZM_MSG'

  • TYPE 'E' NUMBER '000' WITH 'Enter G/L account'.

  • ENDIF.

  • ELSEIF re_data-KNTTP eq 'A'.

  • if re_data1-ANLN1 IS INITIAL.

*

  • MESSAGE ID 'ZM_MSG' TYPE 'E' NUMBER '000' WITH 'Enter Asset Number'.

  • ENDIF.

  • ENDIF.

*endloop.

IF re_data-knttp NE 'K' AND re_data-pstyp NE '9' .

IF syst-cprog EQ 'RM_MEPO_GUI'.

IF re_data-uebto IS NOT INITIAL OR

re_data-uebtk IS NOT INITIAL OR

re_data-untto IS NOT INITIAL.

MESSAGE ID 'ZM_MSG' TYPE 'E' NUMBER '000' WITH 'You cant change delivery settings'.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

  • Checking PO quantity with PR Quantity

  • select single statu menge into (v_statu, v_menge) from eban

  • where banfn = re_data-banfn and

  • bnfpo = re_data-bnfpo.

*

  • if v_statu <> 'B'.

  • if re_data-menge gt v_menge.

  • message e000(zm_msg) with 'You cant create PO exceeding' 'the PR Quantity'.

  • endif.

  • else.

  • MESSAGE e000(ZM_MSG) WITH 'You cant create a PO with reference' 'to Completed PR'.

  • endif.

ENDMETHOD.

reward points if useful

regards

Anji

Read only

0 Likes
886

Thank you Experts.