cancel
Showing results for 
Search instead for 
Did you mean: 

Sender SOAP : extracting Header Values

Former Member
0 Kudos

Hi All,

We are in the process of implementing a web service SOAP to Proxy.

Need inputs on the options on how to proceed with development.

Requirement is to decide the target system based on a value which will needs to be extracted from SOAP Header.

We are SAP PI 7.3 Single stack latest version.

Do we have to use AXIS protocols or standard SOAP will do the job?

Could you please share any input steps on how we can achieve this.

Thanks.

Accepted Solutions (1)

Accepted Solutions (1)

former_member184720
Active Contributor
0 Kudos

Hi Jan -You can use standard soap adapter. Can you check the below blog

Former Member
0 Kudos

I saw this blog...this one is for able to read and sending data to target system.

My requirement is to route message between 2 different target systems based on a field value from SOAP Headers....which will happen before mapping....

SO how to proceed or use combinations to achieve this?

Thanks much in advance.

former_member184720
Active Contributor
0 Kudos

You can simply select the xpath in the receiver determination to filter and route the message to two target systems.

As the SOAP header will be part of your payload, simply select the field in xpath and add your condition to route your message.

SOAP header will be part of the main payload before the mapping itself

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Jan,

These are the steps to follow:

1. Make sure of the request structure and take note of the namespaces. An example here:

Two namespace prefixes:

soapenv for "http://schemas.xmlsoap.org/soap/envelope/"

list for "http://xxxxxxxx/" - namespace for my message type

In this example, the Receiver field under the Soap Header does not have any namespace prefix(important).

2. Check Do Not Use SOAP Envelope in SOAP Sender CC

3. In Receiver Determination xPath, declare the namespaces + prefixes on the bottom part

p1 = http://schemas.xmlsoap.org/soap/envelope/

p2 = http://xxxxxxxx/

If there is a namespace for the Receiver field, then declare it as p3 or any prefix of your choosing. The xpath would change as well e,g /p1:Envelope/p1:Header/p3:Receiver

4. Execute your scenario

Hope this helps,

Mark

Former Member
0 Kudos

Hi Mark,

Excellent ...you should write a blog on this one.

Thanks for your valuable time.

Keep up the good work.

markangelo_dihiansan
Active Contributor
0 Kudos

Thanks Jan!

I will try to write one

Regards,

Mark

Former Member
0 Kudos

Hello Mark,

When we select "Do not use SOAP Envelope" , it is not able to find the Receiver in Integrated configuration. May be it is not able to find enough information in SOAP header to route that to correct receiver.


Do we need to pass any additional parameters in header from client for this to happen correctly ?

Thanks & Regards,

Dijesh Tanna

Answers (0)