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

diff between BADI and USER EXITs

Former Member
0 Kudos


What is the difference between the BADI and USER EXITs?




Former Member
0 Kudos

These are two different ways of implmenting similar functionality.

1. BADI's - Use Classes / Methods to implement the custom functionality

2. User Exits - Use functions to implement the same.

Other wise its all the same.



Note : Please mark all the helpful answers

Former Member

Badi is a OO concept.

You can do multiple implementation of BADI but user exit only once.

For badi use se18 and se19 t-code

for user exit use smod and cmod t-code

0 Kudos


From the BADI help:

A Comparison of Different Enhancement Techniques

Due to the necessity of adjusting R/3 to meet the specific needs of a variety of customers, several different enhancement techniques were developed in the past. A short description of each of the various enhancement techniques follows.

Business Transaction Events (Open FI)

The Open FI enhancement technique was developed in the Financial Accounting component. Open FI is based upon the following principles:

Application developers must define their interface in a function module, an assignment table is read in the accompanying (generated) code, and the customer modules assigned are called dynamically.

This technique differentiates between enhancements that are only allowed to have one implementation and enhancements that can call multiple implementations in any sequence desired. Both industry-specific and country-specific enhancements may be defined.

The concepts behind the Business Add-Ins enhancement technique and Open FI are basically the same. However, the two enhancement techniques do differ from each other in the following points:

Open FI can only be used to make program enhancements, that is, you can only enhance source code using Open FI. You cannot enhance user interface elements with Open FI like you can with Business Add-Ins.

Open FI assumes that enhancement will only take place on three levels (SAP - partners - customers), whereas with Business Add-Ins you can create and implement enhancements in as many software layers as you like.

Open FI uses function modules for program enhancements. With Business Add-Ins, ABAP Objects are used enhance programs.

Enhancements in Transactions SMOD/CMOD

Making enhancements using the transactions SMOD/CMOD has the following disadvantages:

This enhancement technique assumes a two-tiered system infrastructure (SAP – customers).

The naming conventions in effect do not tolerate name extension.

Taking Stock of Your Options:

None of the techniques mentioned above can easily be extended to fulfill the requirements of a system infrastructure containing country versions, industry solutions, partners, and customers.

Business Add-Ins should be considered generalized Business Transaction Events that can be used to bundle menu and program enhancements into a single add-in (and in the future, screen and table enhancements as well). Business Add-Ins can be created and employed in each of the various software levels.



Reward If it helps..

Former Member
0 Kudos

Hi satish,

BADI or user exit, I don't think it is a choice between the two. Both serve the same purpose, add some custom logic to the standard logic. It depends on your requirement, the point when the user exit or BADI is called, information that is available to you in that user exit/BADI and information that you can change in that user exit/BADI.

I don't think there is a straight answer. Implementation wise, BADIs are futuristic user exits, in that they are object oriented. But other than that basic difference, you have to look at your requirement and the other factors that influence this decision as mentioned above.

check this link.

Former Member
0 Kudos



Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. They can be inserted into the SAP System to accommodate user requirements too specific to be included in the standard delivery. Since specific industries often require special functions, SAP allows you to predefine these points in your software.

As with customer exits two different views are available:

In the definition view, an application programmer predefines exit points in a source that allow specific industry sectors, partners, and customers to attach additional software to standard SAP source code without having to modify the original object.

In the implementation view, the users of Business Add-Ins can customize the logic they need or use a standard logic if one is available.

In contrast to customer exits, Business Add-Ins no longer assume a two-level infrastructure (SAP and customer solutions), but instead allow for a multi-level system landscape (SAP, partner, and customer solutions, as well as country versions, industry solutions, and the like). Definitions and implementations of Business Add-Ins can be created at each level within such a system infrastructure.

SAP guarantees the upward compatibility of all Business Add-In interfaces. Release upgrades do not affect enhancement calls from within the standard software nor do they affect the validity of call interfaces. You do not have to register Business Add-Ins in SSCR.

The Business Add-In enhancement technique differentiates between enhancements that can only be implemented once and enhancements that can be used actively by any number of customers at the same time. In addition, Business Add-Ins can be defined according to filter values. This allows you to control add-in implementation and make it dependent on specific criteria (on a specific Country value, for example).

All ABAP sources, screens, GUIs, and table interfaces created using this enhancement technique are defined in a manner that allows customers to include their own enhancements in the standard. A single Business Add-In contains all of the interfaces necessary to implement a specific task.

The actual program code is enhanced using ABAP Objects. In order to better understand the programming techniques behind the Business Add-In enhancement concept, SAP recommends reading the section on ABAP Objects.

What is difference between badi and user-exists?

What is difference between enhancements and user-exists? and what is the full form of BADI?

I have another doubt in BDC IN BDC WE HAVE MSEGCALL (i did not remember the > correct name) where the error logs are stored, MSEGCALL is a table or structure.

What is the system landscape?

1) Difference between BADI and USER-EXIT.

i) BADI's can be used any number of times, where as USER-EXITS can be used only one time.

Ex:- if your assigning a USER-EXIT to a project in (CMOD), then you can not assign the same to other project.

ii) BADI's are oops based.

2) About 'BDCMSGCOLL' it is a structure. Used for finding error records.

3) Full form of BADI 'Business addins'.

3) System land scape will be depends on your project

Ex:- 'Development server'>'Quality server'-> 'Production server'......



Former Member
0 Kudos

Hi Satish ,

Diff is

Important Note: As of Release 4.6A SAP provides a new enhancement technique, the Business Add-Ins. Among others, this enhancement technique has the advantage of being based on a multi-level system landscape (SAP, country versions, IS solutions, partner, customer, and so on) instead of a two-level landscape (SAP, customer) as with the customer exits. You can create definitions and implementations of business add-ins at any level of the system landscape.

and Second Diff is

u cannt Raise error message when Program is Update Mode it will give Update Error, But i can achieve this one BADI by raising error and posted into Error Log.

3.BADI uses OOPs Concept.



Former Member
0 Kudos

Hi Satish,

Apart from the points already covered , would like to point out important aspect that is - using BADI's capability of multiple use, we can have multiple customer implemetations being executed, whereas in case of usr exits, only single implemetation ata time is possible.

Hope it helps.


Akshay Bhagwat

0 Kudos

hi akshay i hav a doubt what do u mean by multiple customer implementation.

how can we prove ur thought of answer.

plzz suggest.



0 Kudos

Hi rajesh ,

Multiple Usability for BADI Definitions
Multiple use for BADI definitions means that there can be several active BADI implementations. When there is a call, they are all called up - however, in an unpredictable sequence.

If you have multiple-use BADI definitions, the sequence must not play any role therefore. A typical example is the execution of checks before a save.



0 Kudos

prabhu thanks for ur answer but can u make it more clear.

0 Kudos

Rajesh ,

multiple use will be useful when u are using Fliter Objects .

If country eq IN .

i am going to Implement AT_SAVE Method.( this is one implemnetation )


if country is US

i am going to use / implement AT_POST) ( which is second implementation )

PS: Guys , is anything wrong please correct me.



Former Member
0 Kudos

user exits are used to provide enhancements to existing standard sap programs .it is just like hooks and we can hang on that. we can use the user exits only if they are provided with standard sap programs.the transaction code is smod/smod.the main difference between cmod and smod is ,smod is the superset of all enhancements.

we have 4 kinds of user exits field exits, fuction module exits, menu exits and screen exits.out of which field exit cannot be classical procedural model we have user exits to enhance the functionality of standard abap programs.

badi is the object oriented form of providing additional the advent of abap objects they became popular.the transaction code is se18

the main differences

1.user exits cannot be if u assign one enhancement to one project the same exit cannot be used in other project. but badis are reusable.

2.user exits are based on classical model of abap but badis are based on ababp objects .ie object oriented

tino george

Former Member
0 Kudos


BADI's: Will be implemented by Object oriented Methods.

User Exits: Using Function Modules

But if you use User Exits and create a project with any enhancements then the same enhancements cannot be used for any other purpose/ cannot be used in any other project ( Project means in the transaction CMOD).

But you can do multiple implementation using BAID's.


Venkat Ramanan

Former Member
0 Kudos

Hi Satish,

There are three generations of user-exits in SAP ABAP now.

First generation: there had been empty subroutines in place in the coding where you could add your code. However, this required to modify code of SAP standard programs. Example: search for forms starting USEREXIT.. in SAPMV45A

Second generation: CUSTOMER-FUNCTION. In certain places of SAP standard code there are calls CALL CUSTOMER-FUNCTION ‚001' . These routines can be defined with SMOD edited with transaction CMOD.

Third generation: using ABAP objects instances, they are called BADI. They are call with CALL METHOD (instance) .... they are created with transactions SE18/SE19. To find BADI search for the word EXIT_HANDLER in the coding.

Another differences are:

In user exits we go by general method for enhancements while BADIs we use objects (oops concepts)

methods for enhancement.

UserExits r used for adding additional functionality to the existing SAP standard transactions.Using UserExits

we can add additional functionality standard SAP functionality without making any changes to the original code.

BADI is a standardized interface for ABAP sources that enables partners and customers to enhance

SAP-delivered programs in their namespace.



Former Member
0 Kudos

Let me try to put my point.

User exit, firstly as you know it is coding done inside SAP codes. So SAP has provided standard user exists, for various purpose. So you can write your code inside that.

But one user exit for one purpose. Suppose you have done coding inside a user exit say xyz.

Then sometime later you apply say add on, and in that add on, there is transport which contain code for user exit xyz. If you don't know this, then it will overwrite your code. Solution is you have to write code yourself as a separate routine along with your own code

But this don't happens in case of BADI.

hope this help


Surpreet Bal