cancel
Showing results for 
Search instead for 
Did you mean: 

Async RFC to PI doesn't work

Former Member
0 Kudos

Hi,

we wanna implement following scenario:

ABAP-report on SAP-FI --> Async-RFC(1) --> PI (JDBC call and return values back) --> async-RFC(2)

RFC(1) and RFC(2) are different BAPIs.

The parameter of RFC(1) is a TABLE.

In PI we created a message-interface (async) based on the Interface of RFC(1).

Problem is, that we are getting a dump in the caller report (FI) because PI wanna establish a sync-communication.

Months ago I designed a little async-RFC-Call without problems - but it was a SAP ERP 2005-System.

Here we have an older SAP 464-System - and I think this is the reason???

Do you have any ideas?

Regards

Wolfgang Hummel

Accepted Solutions (1)

Accepted Solutions (1)

former_member187339
Active Contributor
0 Kudos

Hi Wolfgang,

The problem is not the system actually it is with BAPI and RFC.. BAPI in general is synchronous (BAPIs are usually called synchronously), but RFC's can be made to call in async mode . Check this link

http://help.sap.com/saphelp_nw04/helpdata/en/22/042592488911d189490000e829fbbd/frameset.htm

So try to have a z RFC where you call this BAPI and this zRFC send the required details to PI

Regards

Suraj

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Wolfgang,

> RFC(1) and RFC(2) are different BAPIs.

In general BAPIs are used for the synchronous communication.

If we use the RFC at sender side of PI

Then we have to write the SE38 program and use this below code to call

call function in update/background task.

Also check this link for asynchronous

http://help.sap.com/saphelp_nw04/helpdata/en/22/042592488911d189490000e829fbbd/frameset.htm

> Here we have an older SAP 464-System - and I think this is the reason???

This is not at all a problem.

So my advice is instead of BAPI you can use the ABAP proxy on both sides or ZRFC on both sides or one ZRFC and one Proxy.

Regards

Ramesh

Former Member
0 Kudos

Hi,

I think, that SAP 4.6 has no Proxy technologie?!

If I use a RFC I don't wanna wait for a result - I need a real async call.

The SAp Documentation descrripes an async call with a waiting task for results.

regards

Wolfgang

former_member187339
Active Contributor
0 Kudos

Hi Wolfgang,

>>I think, that SAP 4.6 has no Proxy technologie?!

Yes you cannot use proxies

>>If I use a RFC I don't wanna wait for a result - I need a real async call. The SAp Documentation descrripes an async call with a waiting task for results.

Are you referring to the link which I sent? Try to see a RFC example in

Regards

Suraj

Former Member
0 Kudos

Thanks a lot.

I think now that it works with the scenario

RFC --> PI --> FILE

because File is async.

But

RFC --> PI --> JDBC

is the problem: JDBC is sync and PI tries to send back the JDBC-Result to RFC?!

IS it important to use "IN BACKGROUND TASK" inside the call-command?

regards

Wolfgang

former_member187339
Active Contributor
0 Kudos

Hi Wolfgang,

>>is the problem: JDBC is sync and PI tries to send back the JDBC-Result to RFC?!

Yes JDBC Adapter can act in sync mode.. But if sender is not expecting any response then it will not send back any result,.

We have File to JDBC scenarios and they work like this.. remove the response mapping and make all interface Asyn

So in your case no need to put any "IN BACKGROUND TASK" .. but if you wan to execute same RFC multiple times then better to have the value...

Regards

Suraj

Former Member
0 Kudos

Hi Wolfgang,

> I think now that it works with the scenario

> RFC --> PI --> FILE

> because File is async.

Absolutely

> But

> RFC --> PI --> JDBC

> is the problem: JDBC is sync and PI tries to send back the JDBC-Result to RFC?!

we can use JDBC as asynchronous also. Asynchronous case we don't provide the responce structure, mapping,...

> IS it important to use "IN BACKGROUND TASK" inside the call-command?

If RFC is asynchronous either we can use update or background task, but for ZBAPI not require this things.

Regards

Ramesh

Former Member
0 Kudos

Instead use proxy to jdbc call..

call the proxy class in report itself -- > jdbc --> proxy....