cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP (ASync) -> PI -> RFC - Hints

Former Member
0 Kudos

Hello guys!

I have made around 3 WebService interfaces using SAP-PI and they are working just fine.

They are simple SOAP -> PI -> RFC -> SOAP flow. I mean, there is a REQUEST with some information, and a RESPONSE with the results (in PI I use a RFC to get the information from SAP).

This is, of course, done in a Synchronous way (Outbound - Synchronous).

(in this case, my Operation Mapping has a REQUEST and RESPONSE)

We decided that a new WebService interface should be Asynchronous, because it will send to PI a range of data (many itens) and we didn't want to wait until the RFC finishes to 'let the SOAP requester go'.

I´m trying to face this situation just like the 'sync' one, but it's not working properly (all I did, that is diferent from the other WebServices is choosing Asynchronous and also in the SOAP adapter, select "Exaclty Once"), but I keep getting the error "Mapping program is not available in runtime cache".

(in this case, my Operation Mapping has only a REQUEST)

My question is... am I thinking 'poorly'? Am I going in the right way or should I think "Async to Sync Bridge" like?

Thanks for the inputs!

Ricardo Sancio Lóra

Brazil

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Ricardo,

I´m trying to face this situation just like the 'sync' one, but it's not working properly (all I did, that is diferent from the other WebServices is choosing Asynchronous and also in the SOAP adapter, select "Exaclty Once"), but I keep getting the error "Mapping program is not available in runtime cache".

I guess at runtime, it is unable to find the mapping program assigned in the interface determination.

Try making some small change in Interface determination, re-activate and re-run the test. You can also test this using Test Configuration in ID.

If this not helps, do a full Cache refresh.

(in this case, my Operation Mapping has only a REQUEST)

That's right

Regards,

Neetesh

Former Member
0 Kudos

Now I´m puzzed..

I just finished a scenario like this: FILE -> PI -> RFC

What I mean is, I read a file, and using PI I call a RFC in SAP R3. It worked fine. I was able to see in the PI monitor the checker flag, with all the information - inclusing a column saying it was a "asyncronous" interface.

I repeat the same procedure for the scenario I´m talking about in this topic: SOAP -> PI -> RFC

But, still the same error message. The funny thing here is that in the monitor is showing SYNCRONOUS interface, even though I configured it as ASYNCRONOUS.

My best guess here is that when I call a WebService it's expecting a response, and since THERE SHOULD BE NO RESPONSE on this scenario, I´m getting this error.

But I´m SURE I´ve seen a scenario like this before. I called a PI SOAP Webservice, and it responds me with nothing. I´m not able to do this myself, this is the problem

Any help on this?

Thanks!!

Former Member
0 Kudos

Hi Ricardo,

Every Web Service is synchronous in nature and even when it returns no data, it returns at least empty SOAP message. But it's not a problem, you can call the WS from PI asynchronously, so don't worry about the response coming back.

Let us know if you get any error.

Regards,

Neetesh

former_member200962
Active Contributor
0 Kudos

You need:

An OB Asynchronous SI, IN Async SI (based on RFC) ..... then make use of them in the mapping.... select the mode properly.

If you are still not able to find the mapping program then when you do a selection for message mapping in OM at that time enter "*"

Then make a cache refresh so that latest changes will reflect....in SXI_CACHE check if the relevant objects are present.

There is nothing exceptional that we do in a SOAP async scenario.....it is just the same as a File -->PI -->RFC scenario just that sender adapter is different

@Neetesh:

+Every Web Service is synchronous in nature and even when it returns no data, it returns at least empty SOAP message. But it's

not a problem, you can call the WS from PI asynchronously, so don't worry about the response coming back.+

in the SOAP --> PI --> RFC scenario mentioned PI is not calling any WS....it is calling a RFC....the statement that you made is relevant for SOAP receiver

Regards,

Abhishek.

Former Member
0 Kudos

Thanks Abhishek ! My mistake, missed that Ricardo was talking about Sender and not Receiver ... a long tiring day, I guess

I got puzzled, like Ricardo

Regards,

Neetesh

Former Member
0 Kudos

Thanks for the answer Abhishek!!

But I still need some guidance...

Can you explain a more step-by-step procedure? Because I was able to create a File -> RFC async, with just ONE Service Interface.. now you are asking me to use two, I got confuse on how to go on after that.

(If I use my File-RFC interface just by changing the adapter to SOAP, it does not work)

Thanks!!!!

Ricardo

Former Member
0 Kudos

Hi Ricardo,

Can you explain a more step-by-step procedure? Because I was able to create a File -> RFC async, with just ONE Service Interface.. now you are asking me to use two, I got confuse on how to go on after that.

Even in File->RFC, you will require 2 SI, one outbound and one inbound - both async,

Same goes for SOAP -> RFC.

Create 1 outbound SI (for SOAP) and 1 inbound SI (for RFC).

(If I use my File-RFC interface just by changing the adapter to SOAP, it does not work)

When you say it does not work, what error you are getting?

Regards,

Neetesh

Former Member
0 Kudos

I´m going to describe each step I did in the "FILE->RFC" Async scenário, that is working the way I wanted, so we can try to add more steps (correct a few maybe) in order for the SOAP scenario to work ok?

Here we go:

Design:

1 - Data Type for the Input

2 - Message Type for the Data Type above

3 - Service Interface - Outbound Async - with the Message Type above as the REQUEST part

4 - Message Mapping - between my Message Type above as the input and the RFC Request part

5 - Operation Mapping - between my Service Interface and the RFC, using the Message Mapping above.

Configuration:

(File Adapter - SENDER, RFC Adapter RECEIVER)

1 - Sender Agreement: File Adapter Sender

2 - Receiver Agreement: RFC Adapter Receiver

3 - Interface Determinarion: My Operation Mapping created at Design

4 - Receiver Determination: with the receiving system as "Comunication Component'

That's it.

With the procedure above, I´m able to put a file in a folder, and have PI pick it up and call the RFC in a async way. I have the checker flag in monitor and the RFC do what it have to do.

If I just change the Fila Adapter to Soap Adapter, export the WSDL and call the WebService, I get the error firstly reported here:

NO_MAPPINGPROGRAM_FOUND

Mapping program is not available in runtime cache: Object ID 2F71B75359553E8680A73C9555292C68 Software Component AEA013B0F13511DDA290C27B0A9B803A

I dont mind creating 2 Service Interfaces if this is going to put me in the right track, i just would like to know the steps to do it (just like I did above).

Hopefuly my explanation helps get some more ideas

Thanks again!!

Answers (1)

Answers (1)

Former Member
0 Kudos

There was a problem in the tool used to verify the WebService. The tool always demanded a response, causing the error.

Either change de configuration of the tool, or publish the WSDL to PI and test using WSNavigator (which was what I end up doing it).