Couple weeks ago, I was facing with an issue… Is it possible to call an exposed Soap WebService in Soap Version 1.2 with Sap PI 7.11, including in the call WS Addressing parameters?
Yes… It is!
Let me explain how I’ve achieved it:
In order to make it works, rather than using a standard Message Type, we have to create a Message Type including SoapEnvelope’s elements Header&Body (designing the MessageType in order to represent the entire SoapEnvelope message):
So, we will have a Source Message, which probably looks like:
Now, We just need to build the Message Mapping, in order to map fields from Source Message to our Receiver “SOAP” Message, including Soap-Header fields:
Everything else, it’s simply the same as an usual Scenario.
NOTE: Remember to set-up the “Do Not Use SOAP Envelope” flag into your Receiver Soap Communication Channel, in order to handle your Soap-Envelope customized message.
Simply…. set the “Do Not Use Soap Envelope” flag into Soap Receiver Communication Channel, adding this XSLT into your Request Operation Mapping (as last step):
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:Action>http://txxxxx.org/YYYYYYY/GetIAction/wsa:Action> </soapenv:Header> <soapenv:Body> <xsl:copy-of select="/*" /> </soapenv:Body> </soapenv:Envelope> </xsl:template> </xsl:stylesheet>