cancel
Showing results for 
Search instead for 
Did you mean: 

Error with BAPI_TRANSACTION_COMMIT

Former Member
0 Kudos

Hi Friends,

We have a scenario where we read a file through file adapter and insert the data into a R/3 system through RFC Adapter.Here actually we are calling a BAPI to insert the data into corresponding tables of R/3. But the problem is BAPI won't commit automatically.

So for that we have used one more BAPI called BAPI_TRANSACTION_COMMIT through that we tried to commit. So in this scenario we need to call two Bapis , for that we have cerated one Receiver determination and two interface determinations, two interface mappings. In one interface mapping we are just passing the Constant value X for BAPI_TRANSACTION_COMMIT.we have included these 2 interface determinations in a single receiver determination.

But i am getting an Error in Adapter Engine. In SXMB_MONI it is showing that 2 messages are processed successfully, but when we look in message monitoring for AdapterEngine the status is System error for first Bapi and holding for 2nd Bapi. For the First Bapi the error it is showing is

"Exception caught by adapter framework: DeliverySemantics EOIO not supported".

But we are not at all using Exactly Once Inorder any where in our scenario.Actually what is the use of Exactly once in order.

Regards,

Gowtham K.

Accepted Solutions (1)

Accepted Solutions (1)

Homiar
Advisor
Advisor
0 Kudos

Gowtham,

Check which SP you have. Starting with SP 14, you need not specifically use BAPI_TRANSACTION_COMMIT. There is a check-box for auto-commit in the Receiver RFC Communication Channel/Adapter.

Check the help ...

http://help.sap.com/saphelp_nw04/helpdata/EN/c8/e80440a832e369e10000000a155106/content.htm

This will avoid writing a wrapper RFC/BAPI.

Again, this possible from SP14 upwards.

Regards,

Homiar.

stefan_grube
Active Contributor
0 Kudos

... like file to R/3

Look at the BAPI documentation:

"Asynchronous BAPIs are generally used for replicating data on one or more logical systems, for example to distribute article master data.

To implement an asynchronous data transfer with a BAPI, an ALE IDoc interface must be generated. This interface controls all of the data communication between logical systems using IDoc technology. The application then calls the generated ALE IDoc interface locally instead of the BAPIs."

http://help.sap.com/saphelp_nw04/helpdata/en/08/bef2dddb5311d1ad10080009b0fb56/frameset.htm

Regards

Stefan

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Goutham,

<i>>So in this scenario we need to call two

> Bapis ,</i>

Do you mean that you have imported both these BAPIs into XI???

I think you need to import the wrapper BAPI only.

regards,

Priyanka

stefan_grube
Active Contributor
0 Kudos

Hi Gowtham,

when you split your message in two async calls to the same receiver, the messages are put automatically in an EOIO queue. The RFC adapter cannot deal with EOIO therefore you cannot create a sceanrio like this.

It won't work anyway, as the messages are posted in different LUW so the first BAPI won't be commited.

You can do following: Write a wrapper RFC which calls the BAPI and commits, or (the better way) use an IDOC instead of the BAPI. If no IDOC exists, create it with transaction code BAPI.

Regards

Stefan

Former Member
0 Kudos

Thanks stefans and priyanka,

Stefans --> could please tell, how to create an Idoc from Bapi using Transaction BAPI.

Regards,

Gowtham K.

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

>>>how to create an Idoc from Bapi using Transaction BAPI.

you can generate IDOC from bapi

have a look at this page:

http://help.sap.com/saphelp_util471/helpdata/en/78/21740f51ce11d189570000e829fbbd/content.htm

it shows step by step how to do it

TCODE - BDBG as far as I remember

BTW

remember this:

"In customer systems all object names must begin with Y or Z or with their own prefix."

when you're creating your idoc from BAPI

Regards,

michal

former_member181962
Active Contributor
0 Kudos

Hi Gowtham,

I doubt if Stefans meant what he said...

Instead you can create a bapi or a RFC, which has the original bapi and the bapi_transaction_commit embedded in it.

You can use the created bapi as the interface.

Regards,

Ravi

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

there's aven a document on this:

https://websmp206.sap-ag.de/~sapdownload/011000358700000328352005E/HowtouseBAPandccBPM.pdf

BTW

this is not needed with SP14 as you can commit bapi calls

with RFC receiver adapter from SP14

Regards,

michal

stefan_grube
Active Contributor
0 Kudos

Choose your BAPI from list and click.

Check the field ALE message type. If it is filled, take this IDOC. Otherwise: Environment -> Generate ALE interface.

For monitoring pupose it is better to use IDOCs instead of BAPIs for asynchronous processing. When an error occurs in the BAPI, the error message is lost.

An other solution is writing a wrapper RFC which not only does the commit, it should also deal with the BAPI response and starts error processing.

Regards

Stefan