Vous êtes sur la page 1sur 6

What is mean of BADIs ? A> Business Addings 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'.....

1. What is the difference between BAPI, BADI and User Exit?

BAPI - These are published programs which is used to upload data into SAP system.
SAP Link : for BAPI Explanation: http://help.sap.com/saphelp_46c/helpdata/en/9b/417f07ee2211d1ad14080009b0fb56/frameset.htm

BADI - This is a program enhancement technique. SAP provides BADI openings in the

standard programs. You need to search for the suitable BADI as ur requirement and then do the coding and plug in the program.

USEREXIT - It is also a program enhancement technique. here also uneed to find suitable
userexit and code in ur program. The main diff bet BADI and USEREXIT is that in USEREXIT u code in the standard SAP progra m, hence any updation in the version of the standard program will lead to the loss of ur coding. But same is not the case of BADI. Here the code remains outside the standard program. 2. Both BDC and BAPI will work. For a NJOI njoi- SAP transaction, prefer a BAPI over a BDC
DOCS Advantages

System can work even if target system not always online. The IDoc will be created and sending will just continue once you get connected to the other system. No additional programming required. You just need to set up the configuration.


Receipt/processing on the target system may not be immediate. The sending system has no way to know whether the target system actually received what you sent (unless you use ALE). If there is no SAP standard IDoc available for your requirement, it's harder to create a customized IDoc than a customized BAPI.

BAPIS Advantages

You can tell if your sending was successful or not Sending to/processing on the other side is immediate Easier to create your own BAPI than your own IDoc


Will only work if you have an active online connection. Some programming required to call the BAPI.

Others interface methods you might also want to consider are ALE and RFCs.

BAPI will work as defined, but the problem you will run into is that you stand a chance of getting the document stuck because the underlying technology is BC (Business Connector) built by WebMethods for SAP. There is no way of tracking the status of BAPI, as it is sent between systems. SAP is in the process of doing away with BC. In either case of IDoc or BAPI, you will need build some form of interface data structure, predefined or not. You will need to customize the predefined data structure to fit your business requirement needs. The only difference between the two is that with BAPI you can enable a specific application within SAP that will utilize that the data transported within BAPI, hence the instant effect. BAPI is designed specifically for application interface programming and enabling. As for IDocs, your interface solution is RFCexec (Remote Function Call). The IDocs are reusable and can be tracked within SAP if delivery is successful or unsuccessful. SAP has provided comprehensive IDoc tracking status information, which will help in determining the status of any IDoc transmitted to and from SAP. So if the receiving system did not successfully receive or transmission was not successful, the IDoc status will let you know that. This is your best option if you are still looking to build an EDI/IDoc interface. SAP transaction for setting up and tracking IDOC is rooted in ?WEDI? provided you have access to this transaction. You can make an IDoc immediate or scheduled, which is an option provided by SAP with the delivered IDoc solution. Again you can tree out the WEDI transaction to perform and simulate your configuration. It all depends on the relationship you have with your business partner.

What is the different between ALE, IDOC and BAPI?

ALE ALE is SAP proprietary technology that enables data communications between two or more SAP R/3 systems and/or R/3 and external systems. When a new enterprise resource planning (ERP) solution such as R/3 is implemented, companies have to interface the ERP system with legacy systems or other ERP systems. ALE provides intelligent mechanisms where by clients can achieve integration as well as distribution of applications and data. ALE technology facilitates rapid application prototyping and application interface development, thus reducing implementation time. The ALE components are inherently integrated with SAP applications and are robust, leading to a highly reliable system. ALE comes with application distribution/integration scenarios as well as a set of tools, programs, data definitions, and methodologies that you can easily configure to get an interface up and running. BAPI BAPIs provide a stable, standardized method for third-party applications and components to integrate into the Business Framework. These interfaces are being specified as part of SAP's initiative with customers, partners and leading standards organizations. Also, SAP has implemented the emerging Object Application Group (OAG) specifications with BAPIs.

Pros and Cons for both BAPI and Call Transaction

BAPI One of the big plusses for BAPIs is that the interface and function are not supposed to change. This is a big plus when you do upgrades or hot packs because the transaction can change (format, required inputs etc) which means you then need to update the call transaction. Some of the BAPIs are better documented and easier to use than others. You usually need to perform the BAPI that actually does the COMMIT after you call your BAPI. The Program coding for calling a BAPI is usually cleaner than setting up the screen flow etc for the Call Transaction. You don't need to worry about special data circumstances interrupting the normal data flow of the screens and causing errors because of that. BAPIs probably have better performance since they don't do the screen flow processing.

In general if the BAPI exists for the transaction you want to perform and you can figure out how to use it the BAPI is probably the best way to go. This is just from my experience working with both BAPI and Call Transaction. I have had some very good successes with BAPIs, but very occasionally found that I could not get the BAPI to perform the update I needed. ABAP Tips by: Heather R Woytash The interface concept of the classic R/3 is based on two different strategies: Remote Function Calls (RFC) and data exchange through IDoc message documents. RFC makes direct and synchronous calls of a program in the remote system. If the caller is an external program it will call an RFCenabled function in R/3 and if the calling program is the R/3 system it will call an RFC-function in another R/3-system or it will call a non-R/3 program through a gateway-proxy (usually rfcexec.exe). BAPIs are a subset of the RFC-enabled function modules, especially designed as Application Programming Interface (API) to the SAP business object, or in other words: are function modules officially released by SAP to be called from external programs. IDocs are text encoded documents with a rigid structure that are used to exchange data between R/3 and a foreign system. Instead of calling a program in the destination system directly, the data is first packed into an IDoc and then sent to the receiving system, where it is analyzed and properly processed. Therefore an IDoc data exchange is always an asynchronous process. The significant difference between simple RFC-calls and IDoc data exchange is the fact, that every action performed on IDocs are protocolled by R/3 and IDocs can be reprocessed if an error occurred in one of the message steps. While IDocs have to be understood as a data exchange protocol, EDI and ALE are typical use cases for IDocs. R/3 uses IDocs for both EDI and ALE to deliver data to the receiving system. ALE is basically the scheduling mechanism that defines when and between which partners and what kind of data will be exchanged on a regular or event triggered basis. Such a set-up is called an ALEscenario. The philosophical difference between EDI and ALE can be pinned as follows: If we send data to an external partner, we generally speak of EDI, while ALE is a mechanism to reliable replicate data between trusting systems to store a redundant copy of the IDoc data. The difference is made clear, when we think of a purchase order that is sent as an IDoc. If we send the purchase order to a supplier then the supplier will store the purchase order as a sales order. However, if we send the purchase order via ALE to another R/3 system, then the receiving system will store the purchase order also as a purchase order.

DIFFERENCE BETWEEN BAPI AND BADI ? BAPI (Business Application Programming Interface) : BAPIis an API method of a business object which intern is a RFC enabled Function Module. Business Objects are the Objects which has business sence associated to it. Ex. Sales Orders, Purchase Orders etc. The Properties of BAPI are: Every BAPI name should start with letters 'BAPI'. It is an API method of a Business Object. it does not contain a internal COMMIT statement in the Function Module. It does not contain "CALL TRANSACTION" statements. BAPI do not raise 'EXCEPTIONS'. a RETURN structure is defined as an interface parameter of a BAPI which is used to log all the errors, warnings and the successful processes tha are triggered in the course of execution of a BAPI. A successful execution of a BAPI requires the data to be commited and this process of performing a COMMIT is achieved by calling the BAPI_TRANSACTION_COMMIT' explicitly if there are no errors logged in the RETURN structure. There are two types of BAPI's: Instance Dependent & Instance Independent. BAPI provides an access to the SAP system for external applications to have the business data processed in the form of web services. When BAPI's are used to post the data in SAP system these are used as Function Modules. for further information check following: Go to the below link for BAPI. http://help.sap.com/saphelp_nw04/helpdata/en/e0/9eb2370f9cbe68e10000009b38f8cf/frameset.htm BAPI http://help.sap.com/saphelp_nw2004s/helpdata/en/7e/5e114a4a1611d1894c0000e829fbbd/frameset.htm http://www.sapgenie.com/abap/bapi/example.htm http://help.sap.com/saphelp_46c/helpdata/en/9b/417f07ee2211d1ad14080009b0fb56/frameset.htm http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci948835,00.html http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci948835,00.html http://techrepublic.com.com/5100-6329-1051160.html# http://www.sap-img.com/bapi.htm http://www.sapimg.com/abap/bapi-conventions.htm http://www.sappoint.com/abap/bapiintro.pdf http://www.sapgenie.com/abap/bapi/example.htm http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCFESDE8/BCFESDE8.pdf http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf BAPI Programming guide: - http://help.sap.com/saphelp_nw04/helpdata/en/e0/9eb2370f9cbe68e10000009b38f8cf/frameset.htm BAPI user guide: - http://help.sap.com/saphelp_46c/helpdata/en/7e/5e115e4a1611d1894c0000e829fbbd/frameset.htm BAPI STEP BY STEP PROCEDURE: - http://www.sap-img.com/abap/bapi-step-by-step-guidance.htm Example:- http://www.erpgenie.com/abap/bapi/example.htm PDF download: https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/200dd1cc-589e-2910-98a9-bb2c48b78dfa BADI Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. Badis allow for a multi-level system landscape (SAP, partner, and customer solutions, as well as country versions, industry solutions, and the like). Business Add-Ins can be created at each level within such a system infrastructure Some BADI can have multiple independent implementations which is much better for software deployment as several developers can implement the same BADI independently. 1} Identify the User Exit suitable for the requirement and that is available in the system: Code SE18 is used to Identify the BADI available. Look for the string 'CL_EXITHANDLER' in the standard program. This is a class which has a method 'GET_INSTANCE' which is used to trigger BADI's from the Standard Program. The interface parameter for this static method 'EXIT_NAME' is used to pass the BADI to the method. Open Standard Program and do a global search 'CL_EXITHANDLER'. SE18 > give the BADI name found through above search. CUSTOMER_ADD_DATA > which has a method SAVE_DATA. 2} Implement the User Exit identified through above process. T.Code SE19 is used to Implement BADI. SE19 > give the implementation name > Give the Definition name as CUSTOMER_ADD_DATA and the Short Text. Check these blogs 2 find a BADI: https://www.sdn.sap.com/irj/sdn/message?messageID=3343735 https://www.sdn.sap.com/irj/sdn/thread?messageID=3370270#3370270 https://www.sdn.sap.com/irj/sdn/thread? messageID=3399488#3399488 How To Define a New BAdI Within the Enhancement Framework (Some Basics About the BAdI,BAdI Commands in ABAP, When to Use a BAdI?) https://www.sdn.sap.com/irj/sdn/weblogs? blog=/pub/wlg/3430 How to implement a BAdI And How to Use a Filter https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/3506 Introducing Business Add-Ins

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f3202186-0601-0010-6591-b832b1a0d0de How to implement BAdi in Enhancement Framework https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/d0456c54-0901-0010-f0b3-cd765fb99702 Business Add-Ins http://help.sap.com/saphelp_47x200/helpdata/en/ee/a1d548892b11d295d60000e82de14a/frameset.htm BAdI: Customer-Defined Functions in the Formula Builder http://help.sap.com/saphelp_nw04/helpdata/en/04/f3683c05ea4464e10000000a114084/content.htm Difference Between BADI and User Exits http://www.sap-img.com/abap/difference-between-badi-and-user-exits.htm To Use BADI - Business Add In you need to Understand ABAP OO Interface Concept http://www.sap-img.com/abap/business-add-in-you-need-to-understand-abap-oo-interface-concept.htm

SAP RFC : RFC (Remote Function Call), these are function modules in SAP but
are remotely enabled. This makes them similar to SAP BAPIs. Thus a Remote function module can be called from another Non-SAP System using a .Net connector or a Java connector. RFCs can be used to interface SAP and Non SAP systems or 2 different SAP R/3 systems. SAP ABAP RFCs are of 3 types Synchronous RFC Transactional RFCs Queued RFCs. Synchronous RFC In Synchronous RFCs both the Systems must be available at the time of the call. These RFCs are based on Synchronous communication. Transactional RFCs Here the called system need not be available at the time of the call. A unique transaction ID is generated and the called program is stored in the system along with the data. If the receiving system is not available for a long time then the call is scheduled to run in a batch. Queued RFCs. To guarantee that multiple LUWs are processed in the order specified by the application, tRFC can be serialized using queues (inbound and outbound queues). This type of RFC is called queued RFC (qRFC). qRFC is therefore an extension of tRFC. It transfers an LUW (transaction) only if it has no predecessors (in reference to the sequence defined in different application programs) in the participating queues. For more details and related topics please see the following links