Hi Experts
Can any body pls explain me abt BAPI , BADI , USER EXIT , FUNCTION MODULEĀ  and its uses in details .


Dear Deba,
Functional Module:Procedure that can only be defined in function groups and outside of classes. Can be called from all
programs. Begins with FUNCTION and ends with ENDFUNCTION. Is maintained using the Function Builder of the ABAP
Functional Module can be checked using T Code SE37 for a package ,say in standard SAP CS15 will be used for checking
the where used list for a material and here it can be checked only for one material,in case if we want to check for a list of
materials a small report can be developed using the fucntional modules like
CSEP_MAT_BOM_SELECT_WHERE_USED   API Bills of Material: Select BOM(s) (or)
CS_WHERE_USED_MAT                Bills of material; where-used list
User Exit:A point in an SAP program where a customer's own program can be called.
In contrast to customer exits, user exits allow developers to access and modify program components and data objects in the
standard SAP System. On upgrade, each user exit must be checked to ensure that it conforms to the standard system.
There are the following types of user exit:
User exits that use INCLUDEs - These are customer enhancements that are called directly in the program.
User exits that use tables - these are used and managed using Customizing.
User Exits can be viewed or checked using the T Code SMOD and using CMOD an user exit will be activated.
A template for BAdI objects.
Business Add-Ins (BAdIs) are the basis for enhancements where BAdI methods in object plug-ins can be called from ABAP
programs. The calling program controls which BAdI implementations are used by specifying filter values. A BAdI consists of a
BAdI interface, a set of filters and some settings.
From Release 7.0, BAdIs are edited in the Enhancement Builder and reside in the global class namepsace. You can switch on
their implementations via the Switch Framework.
There are also classic BAdIs, which are edited in the BAdI-Builder and superseded function module exits in Release 4.6.
Related T Code SE18.