cancel
Showing results for 
Search instead for 
Did you mean: 

Multiple Actions - SOAP Receiver

Former Member
0 Kudos

     Hi. Dear Experts

      I have an scenario synchronous.

     ECC ----- PI ------ WebService   - PI 7.1

      The web service has 3 soap action , I need to want to call all of them, I searched on sdn for dynamic configuration.

         DynamicConfigurationKey keyURL = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/SOAP ","THeaderSOAPACTION");

DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters()             .get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
conf.put(keyURL,"soapAction")

Then I Remove SOAP Action entry in the SOAP Receiver  Channel and activate Use Adapter-Specific Message Attribute option and Variable Transport Binding option.

The above code works but for one soapAction , How can I call multiple soap Action?. I send many soap Action but always take the last.

     

     Regards.

Accepted Solutions (1)

Accepted Solutions (1)

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

The web service has 3 soap action , I need to want to call all of them, I searched on sdn for dynamic configuration.

You will only have the last soap action in this case. A workaround would be to call the webservice two times (for the 1st and 2nd SOAP action) in your message mapping and then the 3rd SOAP action would be in your SOAP Receiver CC. Another way is to use BPM.

But the cleanest would be to send a different message (from ECC) for each SOAP Action.

Hope this helps,

Mark

Former Member
0 Kudos

Thanks Michal and Mark.

Got it.. I will send a different message by SOAP Action to call this 3 methods.

Currently I have one sender and receiver receiver. Do I need to add something or I can work with that ,only add 3 mapping to Operation Mapping.

Regards.

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

Yes, 3 operation mappings in ESR and then use conditional interface determination in ID. The 3 messages need to be sent from ECC since message splitting (via ReceiverDet or InterfaceDet) is not possible for normal sync scenarios.

Hope this helps,

Mark

Former Member
0 Kudos

Hi. Mark.

I  expect to call all WebServices because one of them contains generic data based on keyvalue  and the others WS the details.

ECC only will send a simple payload with keyvalue and them I will to call these WS and the return to ECC such as one structure with some data from Generic and Details WS.

How is posible that?

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

>>>> ECC only will send a simple payload with keyvalue and them I will to call these WS and the return to ECC such as one structure with some data from Generic and Details WS.

yes and no

1. if you want to have all three in one reponse message to ECC you can use a BPM and call them one by one (3 send steps) and get responses and combine them and send to ECC

2. alternative :

call them one by one without a BPM and create 3 tables in ECC

- one for reponse from each call

then you can create a simple report in ECC which will be running as a schedule job like every few minutes which will take the data from those Z tables and update the ECC (call a BAPI or whatever)

3. you can also make 3 calls from one single call without a BPM - call one WS as in normal flow and the other two from RESPONSE mapping of the first call (I've written a blog on this topic) - this is not very pretty approach but it works and there is no need for a BPM in this case

http://scn.sap.com/people/michal.krawczyk2/blog/2011/12/26/michals-pi-tips-composite-web-services-on...

so basically you have those three choices,

Regards,

Michal Krawczyk

Answers (1)

Answers (1)

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

>>>How can I call multiple soap Action?. I send many soap Action but always take the last.

you need to call them one by one

ECC ----- PI ------(split into 3 interfaces)  WebService   - PI 7.1

in each of the three mappings set corresponding soap action and you're done

you cannot call 3 actions in one call

Regards,

Michal Krawczyk