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: 

differences b/w bdc and bapi

Former Member
0 Kudos

what is the differences b/w bdc and bapi?

why do we use BAPI instead of BDC?




Former Member
0 Kudos

Hi Pandu,

The basic difference is the BDC updates through the screens where as the BAPI directly updates the database. But in both cases the consistency is maintained.

BAPI is easy to use since in BDC the recording screens may vary between clients.



Former Member
0 Kudos

what is BAPI?

BAPI stands for Business API(Application Program Interface).

A BAPI is remotely enabled function module

ie it can be invoked from remote programs like standalone JAVA programs, web interface etc..

You can make your function module remotely enabled in attributes of Function module but

A BAPI are standard SAP function modules provided by SAP for remote access.

Also they are part of Businees Objest Repository(BOR).

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.

Check these Links out,289625,sid21_cid558752_tax293481,00.html

Please check out this thread..

Also refer to the following links..

Checkout !!,289142,sid21_gci948835,00.html

Java Connector(JCO) can call not only BAPI's but also the function modules which are remotely enabled..

BAPI's as i said earlier are remotely enabled function modules..

Hence, JCO can call also BAPI's(n not only BAPI's as u mentioned).

Check the following BDC over BAPI

The steps to be followed are :

1. Find out the relevant BAPI (BAPI_SALESORDER_CHANGE for VA02).


2. Create a Z program and call the BAPi (same as a Funtion module call).

2. Now, if you see this BAPi, it has

-> Importing structures.

eg: SALESDOCUMENT: this will take the Sales order header data as input.

-> Tables parameters:

eg: ORDER_ITEM_IN: this will take the line item data as input.

Note :

Only specify fields that should be changed

Select these fields by entering an X in the checkboxes

Enter a U in the UPDATEFLAG field

Always specify key fields when changing the data, including in the checkboxes

The configuration is an exception here. If this needs to be changed, you need to complete it again fully.

Maintain quantities and dates in the schedule line data


U = change

D = delete

I = add


1. Delete the whole order

2. Delete order items

3. Change the order

4. Change the configuration


1. Minimum entry:

You must enter the order number in the SALESDOCUMENT structure.

You must always enter key fields for changes.

You must always specify the update indicator in the ORDER_HEADER_INX.

2. Commit control:

The BAPI does not run a database Commit, which means that the application must trigger the Commit

so that the changes are read to the database. To do this, use the BAPI_TRANSACTION_COMMIT BAPI.

For further details... refer to the Function Module documentation for the BAPi.

A BAPI is faster because it is updating the DB directly And in Version Conversion, Data Will remain And no changes needed.

Where as BDC is simply, Updating the screens. And not supported in version conversion.

Means Upgradation EX: from 4.6c to 4.7

One thing to remember though. If you use a BAPI and the posting fails. Then you may need to develop a process in which the data can be re-processed. You would get this functionality with BDC (SM35) but not with a BAPI.

Former Member
0 Kudos


BDC is traditional way of coding the transactions for uploading the legacy data, Sap is changing all transactions to Object oriented programming. Since BAPI is Object based and supports all the new transactions it is preffered over BDC. More over BAPI's process data faster than BDC.

BAPI is a SAP-supplied function module with a defined interface, which allows you to interact with various business objects. SAP guarantees the integrity of your database for anything updated using a BAPI. BDC is a method of driving screens programatically, for updating SAP data. BAPIs are generally faster than BDCs.

A BAPI is faster because it is updating the DB "directly". Whereas BDC with call

transaction goes through the whole screen sequence like any user would do, simply put, fills screens.

However - there is not always a BAPI for a particular transaction and not all functions that are performed by a transaction can be done by a BAPI. BDCs produce error sessions which can be processed by the user, while BAPIs don't.

First choose the BAPI ,if there is no BAPI go for BDC.

why BAPI first not BDC.

SAP comes up with Change in Version, so each and every time they will change the screens/number etc.

so you have to change your BDC programs accordingly.

and also Most of the Latest versions transactions are Enjoy Transaction. they will not support BDC's in Background.

But Using BAPI's No such disadvantages.

A BAPI is faster because it is updating the DB "directly" through ABAP code.

A BDC with call transaction goes through the whole screen sequence like any user would do, simply put, it is filling screens.

Actually it depends on your requirement but BAPI is more effective as it is standard function module to update SAP databases rather than BDC.

using bdc over bapi has advantages and also disadvantages


1. using bdc we can upload data into database tables using 2 ways

1. foreground -

means that user interaction is there for each and every record.

2. back ground -

no user interaction and tasks are done automatically.

using these two options is one of the greatest advantage over bapi.

2. in bdc call transaction method we can control the display of screen resolution which is not possible with bapi's

3. bdc is generally used for transferring of large amount of data than bapi's

4.session method of bdc allows us to place data directly in application server and then finally transfered into sap database tables


1.bdc is only used for sap to sap system data transferring

2. bapis's generally works more faster than bdc's

3. using bapis we can connect to remote systems and also to non sap systems.

if useful reward some points.

A BAPI is a method of a SAP Business Object. BAPI enables SAP and third party applications to interact and integrate

with each other at the Business Object / Process level.

Check this link to know more about BAPI.

Batch Data Communication (BDC) is the oldest batch interfacing technique that SAP provided since the early versions of R/3. BDC is not a

typical integration tool, in the sense that, it can be only be used for uploading data into R/3 and so it is not bi-directional.

BDC works on the principle of simulating user input for transactional screen, via an ABAP program. Typically the input comes in the form

of a flat file. The ABAP program reads this file and formats the input data screen by screen into an internal table (BDCDATA). The

transaction is then started using this internal table as the input and executed in the background.

In ‘Call Transaction’, the transactions are triggered at the time of processing itself and so the ABAP program must do the error handling.

It can also be used for real-time interfaces and custom error handling & logging features. .

To know more about BDC,

check the link.

Main differences are...

In case of bdc data transfer takes place from flat file into sap system ie the file existing in sap system to sap sytem

where is bapi's r remotly enabled function modules which are assigned to some business objects n used to transfer the data between different business partners who are using different systems other than sap.

not only that...

when you plan to upgrade your system version then bdc willnot support those upgradations where as bapi's will support.



note:the above mentioned informations taken from SDN