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

difference between RFC and BAPi

Former Member
0 Likes
1,167

hi,

can u tell me difference between rfc and bapi.

regards

Guru

10 REPLIES 10
Read only

Former Member
0 Likes
1,073

1.u cannt COMMIT the work in BAPI

2.U cannt raise Expections in BAPI but u can use BAPIRETURN u pass msgs.

there are the main diff.

Regards

Prabhu

Read only

0 Likes
1,073

Hai,

It not advicible to say that u cannt COMMIT the work in BAPI. You have got separate BAPIs for commit purposes.

Read only

0 Likes
1,073

Hai,

BAPIs are implemented by using RFC and are integrated into a Business Object. They must return values through BAPIRETURN parameters.

Usage : Communicate with non-SAP systems

In case of RFCs, they are functional modules which may return a value or not. It is not mandatory that they should be integrated with the Business Object.

Usage : Part of BAPIs.

Read only

dani_mn
Active Contributor
0 Likes
1,073

Hi,

Business Application Programming Interfaces (BAPIs) are

standardized programming interfaces that provide external

access to SAP business processes and data.

BAPIs are defined in the Business Object Repository (BOR)

as methods of SAP business objects or SAP interface

types. BAPIs enable an object-oriented access to SAP

application components.

BAPIs are implemented and stored as RFC-enabled function

modules in the Function Builder of the ABAP Workbench.

Here check this link.

http://help.sap.com/saphelp_erp2005/helpdata/en/13/931d07c87411d1ad0b080009b0fb56/frameset.htm

Regards,

HRA

Read only

Former Member
Read only

Former Member
0 Likes
1,073

HI,

Both are Remotely called function modules only.

You cannot create a FM: starting with BAPI...b'coz these are standard SAP FM's created for variaous applications and can be used to call remotely from varoius other applications which are non-SAP.

An RFC can be created by you similarly and make it behave like a standard BAPI.

Regards

Subbu

Read only

uwe_schieferstein
Active Contributor
0 Likes
1,073

Hello Guruvulu

The question should be: <i>How are RFC and BAPI related to each other?</i>

RFC or RFC destination means you define (in transaction SM59) a remote destination, usually to another SAP system.

BAPIs are, by default, RFC-enabled function modules. Therefore, if a BAPI exists on a remote system you can call it via RFC targeted at this remote system.

What is the difference between BAPIs and "normal" RFC-enabled function modules?

In contrast to normal RFC function modules BAPIs are much more scrupulous in validating the incoming data because BAPIs represent the external interface to the (internal) SAP business objects.

BAPIs behave like their corresponding dialog transaction in that they do all the foreign-key checks that usually occur in dialog. For example, if you use BAPI BAPI_USER_CREATE1 in order to create a new SAP user and you are using a title key (-> for 'Mr' or 'Ms') that does not exist the BAPI will not create the user even if all other data are valid.

Regards

Uwe

Read only

0 Likes
1,073

Hello All,

This was an interesting question I had to ponder upon in the past.

The way I used to interpret it - difference between RFC and BAPI - is that every BAPI is an RFC but every RFC is not a BAPI.

As for usage of BAPI and RFC is concerned for non-SAP external systems, it would not make a difference except for major difference being standardized return structure. For an RFC to be available and used as a BAPI, it has to be registered in BOR as a method of a business object and that makes a big difference in terms of OOP e.g. you can redefine the interface but that is not possible in case of RFC, etc.

Hope this helps.

Read only

Former Member
0 Likes
1,073

BAPI are RFC enabled function modules. the difference between RFc and BAPI are business objects. You create business objects and those are then registered in your BOR (Business Object Repository) which can be accessed outside the SAP system by using some other applications (Non-SAP) such as VB or JAVA. in this case u only specify the business object and its method from external system in BAPI there is no direct system call. while RFC are direct system call Some BAPIs provide basic functions and can be used for most SAP business object types. These BAPIs should be implemented the same for all business object types. Standardized BAPIs are easier to use and prevent users having to deal with a number of different BAPIs. Whenever possible, a standardized BAPI must be used in preference to an individual BAPI.

The following standardized BAPIs are provided:

Reading instances of SAP business objects

GetList ( ) With the BAPI GetList you can select a range of object key values, for example, company codes and material numbers.

The BAPI GetList() is a class method.

GetDetail() With the BAPI GetDetail() the details of an instance of a business object type are retrieved and returned to the calling program. The instance is identified via its key. The BAPI GetDetail() is an instance method. BAPIs that can create, change or delete instances of a business object type

The following BAPIs of the same object type have to be programmed so that they can be called several times within one transaction. For example, if, after sales order 1 has been created, a second sales order 2 is created in the same transaction, the second BAPI call must not affect the consistency of the sales order 2. After completing the transaction with a COMMIT WORK, both the orders are saved consistently in the database.

Create( ) and CreateFromData! ( )

The BAPIs Create() and CreateFromData() create an instance of an SAP business object type, for example, a purchase order. These BAPIs are class methods.

Change( )

The BAPI Change() changes an existing instance of an SAP business object type, for example, a purchase order. The BAPI Change () is an instance method.

Delete( ) and Undelete( ) The BAPI Delete() deletes an instance of an SAP business object type from the database or sets a deletion flag.

The BAPI Undelete() removes a deletion flag. These BAPIs are instance methods.

Cancel ( ) Unlike the BAPI Delete(), the BAPI Cancel() cancels an instance of a business object type. The instance to be cancelled remains in the database and an additional instance is created and this is the one that is actually canceled. The Cancel() BAPI is an instance method.

Add<subobject> ( ) and Remove<subobject> ( ) The BAPI Add<subobject> adds a subobject to an existing object inst! ance and the BAPI and Remove<subobject> removes a subobject from an object instance. These BAPIs are instance methods.

Read only

Former Member
0 Likes
1,073

Hi Guru,

Technically speaking, both are remote enabled functions that can be accessed from outside of SAP. But functionally speaking, BAPIs are a little bit more specific than RFCs

RFC: is just a FM that can be called from remote system too(destination defined in transaction SM59).

BAPI: Business Application Programming Interface

A BAPI is a method of a business object defined in the Business Object Repository (BOR). For example, in the BOR, you can find a business object called SalesOrder, which conceptually represents a sales order in the system. A business object typically has several methods that can be used to read, create, modify a particular instance of the business object, or list instances of the business object matching certain selection criteria. These methods are BAPIs.

Technically, a BAPI is implemented using a RFM. But, unlike the non-BAPI RFMs, a BAPI is usually well documented, has nicer parameter names, and is supported by SAP for several SAP software releases. You can browse Business objects and BAPIs in the SAP system using transaction BAPI.

Hope this helps you,

Pragya