cancel
Showing results for 
Search instead for 
Did you mean: 

PI 7.1 SOAP Action parameters in SOAP request?

eric_wildenstein
Discoverer
0 Kudos

Hi all,

I have to implement an IDOC->PI->XML interface to transfer some master data. After performing the mapping, the mapped data needs to be sent to the target system using a SOAP request via a webservice.

On PI, I specified the URL for the WS in a SOAP-oriented Communication Channel. In the parameter "SOAP Action" of this CC, I entered the relevant method name to be used to transfer the mapped data. However, this method requires 2 parameters:

- applicationName: this is the name of the target structure used in the Message Mapping

- xmlMessage: this is the actual mapped message string

So my question is: how can I bind these 2 parameters in my PI design and configuration?

Thanks for your help,

Eric

Accepted Solutions (0)

Answers (4)

Answers (4)

eric_wildenstein
Discoverer
0 Kudos

Hi all,

Thanks for your support. I finally found the solution to my problem [here|http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/2620] [original link is broken] [original link is broken] [original link is broken];. It is just a double mapping to perform in my interface...

Best,

Eric

Former Member
0 Kudos

<div class="jive-quote">I just read again your reply and I think I got what you mean: basically the method in the SOAP action can NEVER handle any parameter (which means that there should be one WS created per interface, involving one dedicated SOAP Action for the interface). Honestly, I think this is a big limitation... Please confirm it is what you mean. </div>

I think you are getting confused over here ........

h5.

Hello Eric,

h5.

I will try to explain you in short with and example. I think i know what your issue is:

1.Baiscs--&gt; Imagine WebServices as a Function Module (or and RFC) on the web ! You can consume these webservices OR RATHER send your "Multiple Input Values- parameters..." and receive "Output Value" while it is processed in an external system or the third party.
2. You can perform the above described function in PI &#38; its very simple.

3. *Catch Point--&gt; You have to perform the passing of MultipleValues/paramters to the Webservice and receiving of the response values from the webservice at the Mapping Level in the integeration Repository VIA a UDF (user defined function)

4. In the UDF you have to take the Multiple Values/Parameters and pass it to the webservices by calling the Configured Communication Channel &#38; the corresponding Business System Confgured in the Integeration Directory . (configure the Soap Reciver CC in the ID). you will also receive the output of the webservice at the mapping level itself.
5. it is a simple code you have to write to call the correct CC + BS and than traverse the values the xml tags.
6. use this link as the reference point [http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/5001] [original link is broken] [original link is broken] [original link is broken];
If you need further clarification than feel free to respond back... i hope you atleast now got a start point.
Cheers.
Regards,
Tarik Parkar

eric_wildenstein
Discoverer
0 Kudos

Stefan,

I just read again your reply and I think I got what you mean: basically the method in the SOAP action can NEVER handle any parameter (which means that there should be one WS created per interface, involving one dedicated SOAP Action for the interface). Honestly, I think this is a big limitation... Please confirm it is what you mean.

At present, the third party consultant assumes that there will be one WS for all the interfaces to be created for inbound communications to their system, allowing the use of parameters to switch to the right processing within the method...

Eric

former_member200962
Active Contributor
0 Kudos

there can be one WS having many actions....which means one WS can be used in multiple interfaces.

However, this method requires 2 parameters:

- applicationName: this is the name of the target structure used in the Message Mapping
- xmlMessage: this is the actual mapped message string

If I get it correctly, you have to actually set the SOAP action before you send the message to the WS....and you want to do it in SAP PI?

so your action is something like http://something.abcd/applicationName/xmlMessage and you have to set the things here?

If yes, then you can use the Dynamic Configuration (adapter specific message attributes...ASMA) in SOAP channel (UDF in mapping) and set this ASMA THeaderSOAPACTION

DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get
(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
 
DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/SOAP","THeaderSOAPACTION");
 
String a = http://something.abcd/applicationName/xmlMessage //set the value of actual action here
conf.put(key, a);
 
return "";

Regards,

Abhishek.

stefan_grube
Active Contributor
0 Kudos

> On PI, I specified the URL for the WS in a SOAP-oriented Communication Channel. In the parameter "SOAP Action" of this CC, I entered the relevant method name to be used to transfer the mapped data. However, this method requires 2 parameters:

> - xmlMessage: this is the actual mapped message string

I do not get this. The SOAPAction identifies the web service operation, but does not have any dynamic content.

So you can create a SOAP receiver channel for each interface type and apply the SOAP action.

But the xml Message should not be part of the soap action.

eric_wildenstein
Discoverer
0 Kudos

Hello Stefan,

Many thanks for your reply. The WSDL has been provided to me by a third party consultant working on the target system. I am not sure he knows the way PI handles SOAP requests. At the same time I am not a WS expert...

In any case, if you mean that the XML message after mapping should not be passed as a parameter of the SOAP Action, how is this message physically passed in the SOAP request to the target system (for instance when I test my SOAP request using WS Navigator?). I need to know the way it works, to let the person who provided the WSDL for me.

Thanks,

Eric

stefan_grube
Active Contributor
0 Kudos

> At the same time I am not a WS expert...

Sorry, you must be an expert for web service when you work with SAP PI.

This is the must common interface type.

http://en.wikipedia.org/wiki/SOAP

stefan_grube
Active Contributor