cancel
Showing results for 
Search instead for 
Did you mean: 

MessageExpiredException error in JDBC - RFC scenario using BPM.

Former Member
0 Kudos

<b>Scenario:</b> JDBC( Asynch)- RFC( Synch)- JDBC (Asyc)

We are using XI to read oracle table records to insert the records in R/3 and after the insert in R/3 we return a sap code to update in oracle db.

When we try to process 10 or less rows from db, the process is successfully running, but when we try processing more records we are getting the following error. We tried increase the timeout setting in RFC adapter as per the SAP note and forum.

<u>Detailed error: </u>

<b>com.sap.aii.af.ra.ms.api.MessageExpiredException: Message 443jdjsd-e432-2ec8-e100-000046eb2e5f(INBOUND) expired.</b>

If I use correlation in asynchronous RFC instead of synchronous RFC, will this solve the problem or is there any better solution for this ?

Any useful steps to change the synchronous RFC to asynchronous RFC in BPM would be great.

Thanks

Steve

Accepted Solutions (0)

Answers (1)

Answers (1)

MichalKrawczyk
Active Contributor
0 Kudos

Hi Steve,

if your update can take more then 30 seconds

and you can use correlation always use

the correlation

with correlation you will never (almost)

get the timeout error and if this is your custom

RFC do it...

you jut need to pass a generated GUID to your RFC

which you will also receive in the response

that's definetely the best way

Regards,

michal

-


<a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a>

Former Member
0 Kudos

Michal,

Thanks for the reply.

Currently my scenario is JDBC(Asych)- RFC(Synch)- Jdbc(Asych). Since we wanted to change the RFC call to Asynchronous Do we need need BPM here ?

My requirement is to insert the records in R/3 from database and get a field from r/3 and update the corresponding row in db.

Thanks for your time.

Steve.

moorthy
Active Contributor
0 Kudos

Hi Steve,

<i>My requirement is to insert the records in R/3 from database and get a field from r/3 and update the corresponding row in db.</i>

If you do, RFC as a Async here, then you will end up with doing 2 interfaces.

i.e JDBC to RFC

R/3 (RFC,Proxy)to JDBC.

<i>

Since we wanted to change the RFC call to Asynchronous Do we need need BPM here ?</i>

>>If so, it is not required, but how can you update the data from R/3 after inserting the data into R/3.. It will be like 2 interfaces right..

So it is better to go with RFC(Sync) with the BPM (I think)

Following Tuning guide may help you-

https://websmp106.sap-ag.de/~sapidb/011000358700000592892005E.PDF

Regards,

Moorthy

Former Member
0 Kudos

Moorthy,

Currently with Synchronous RFC call to R/3 I am able to process only 10 rows from db and beyond that I am getting timeout errors( We increased the timeout in RFC adapter). Our requirement is to process 200 to 300 rows at once. The RFC is taking around 20 seconds for each row.

1. Any suggestions to meet this requirement in XI ?

Thanks

Steve.

moorthy
Active Contributor
0 Kudos

Hi,

<i>1. Any suggestions to meet this requirement in XI ?</i>

>>>One option is using ABAP Proxy . Instead of calling Sync. RFC, call synchronous Proxy. So your client proxy, should receive all 200-300 rows at a time, and inside the proxy, and call the RFC. Once all the reocrds are processed, send the response back to BPM

You can try out this.

I think, probably you may require to do looping for each Row.i.e For each row the call the RFC.. As of now try to go with Proxy.

Also try to findout, why the RFC is taking that much of time.. So check for the provision of tuning in the RFC side..

Hope this helps,

regards,

Moorthy

Message was edited by: Krishna Moorthy P