2007 Jun 10 3:22 PM
What are all the Advantages of a BAPI over an RFC or what makes the big difference between an RFC and a BAPI?
2007 Jun 10 3:28 PM
2007 Jun 10 4:04 PM
One imp difference:
In BAPI business functions are implemented by means of Objects(OO Concept)
but this is not the case with RFC Function Modules..
Cheers,
Hakim
Mark all useful answers..
2007 Jun 10 6:13 PM
Hi Pete,
RFC stands for Remote Function Call. Its a remote enabled function module. It means that a FM written in R/3 with remote enabled feature, can be called in CRM application. Any function module can be an RFC.
While BAPI are those function module, who are of course remote enabled, but besides, they have a specific application area. These function module help in creating a specific application document. For example, a BAPI_create_purchase_order is a BAPI with RFC property which creates a Purchase order. This purchase order becomes an application in R/3.
Any function module can be RFC enabled but it is called a BAPI only when it creates any application specific document in the system. Hope this clears the idea to some extent. Try serching for the same in help.sap.com. It would be more clear.
Thanks
Aneesh.
2007 Jun 10 10:53 PM
hi,
1) <b>The main differnce between BAPI and RFC is BUSINESS OBJECT.</b>
2)BAPI is the application programming interface(API) of business object, where as RFC is the remote function call to the function module it is run in the system different from the calleres system.
3)BAPI can be defined as the method of the business in BOR(business object repository, where as RFC can be defined as the function module in the function builder SE37(while creating FM select the radio button REMOTE ENABLED)
4)We can call BAPI in two way,
BAPI can be called as the method of the business object in BOR and
BAPI can also be called as remote Enabled Function Module
where as RFC can be called as Remote Enabled Function Module only.
5)Each bapi has it's corresponding Remote Enabled Function Module vice-Versa
not possible.
6)BAPI developed based on ABAP OBJECTS (OOP'S) where as RFC developed based on normal ABAP.
<b>Making Remote Function Calls (RFCs) directly to invoke SAP function modules</b>
External programs using RFCs can either make or receive remote function calls to or from an SAP system. Therefore, using RFCs an external program can act as either the client or the server to an SAP system. Conversely, the SAP system can take the role of either the client or the server to the external application.
You can use a combination of SAP Automation tools to incorporate remote function calls into your programming environment. SAP Automation offers several products that make programming RFCs easier. It offers products for programming of RFCs from languages such as C, C++, Java, or COM-compliant languages, such as Visual Basic and applications such as Excel.
SAP Automation also includes tools that help you browse the metadata of RFC function modules, meaning that they allow you to view the syntax of RFC functions, their parameters and fields.
Using RFCs requires knowledge of ABAP programming, because calling a remote function in R/3 is calling an ABAP function. You may also need to extend the existing set of available RFC with your own ABAP code.
<b>Using Business APIs (BAPIs) to access and work with SAP business objects</b>
R/3 systems contain a set of business objects, which are an object-oriented representation of real-world business objects. Examples of business objects are a purchase requisition, a G/L account, or an employee.
An R/3 system also contains Business Application Programming Interfaces (also called Business APIs, or BAPIs), which provide a programming interface to business objects. BAPIs are a set of methods for working with and manipulating SAP business objects.
Internally, BAPIs are implemented as function modules stored in the R/3 Function Builder. Each BAPI has an equivalent internally-named function module. However, you should use the BAPI and not the function module behind it, because the BAPI provides a stable, object-oriented view of R/3 applications and data. The internal function modules or even the fact that the BAPIs are implemented as function modules are not guaranteed to remain the same in future releases of R/3.
The advantage of using BAPIs over using RFCs is that using BAPIs requires no ABAP programming knowledge. You use BAPIs from standard programming languages such as C++ and Java.
Using BAPIs also offers the most stability to your application, because BAPIs stay consistent over different R/3 releases.
However, business objects and their BAPIs are created by SAP, and you can only use BAPIs that were implemented by SAP. If a certain BAPI for performing a certain application task was not implemented yet, you must seek alternative programming methods.
Regards,
AshokReddy