Reading through a Soap Envelope

Hello,
     The scenario is a synchronous, PI is sending a request to a web service hosted on the third pary systems. The request has been initiated by the method provided in the WSDL.The third party system is sending the response in terms of a Soap Envelope to PI.There is no method existing in the WSDL provided to carry envelope. How to read the soap envelope sent to PI.
Regards,
Kiran.

SOAP Adapter Sender - PI host webservice - so  setting options do not use envelope and adding parameter in the WSDL URL can provide control to have soap envelope and header inside the PI boundary to use them. William's blog explains it.
SOAP Adapter Receiver-  PI consume webservice- Adding the same options to send soap envelope and soap header to third party system. In other words, Not adding those options will not provide envelope and header details in the request message to third party.
Abhisek's comment is correct. I concur.
If third party not sending envelope and header information in their response message, You cannot get it.  If you need then you might have to create the message structure as you need using XSLT mapping or java mapping

Similar Messages

  • Reading Header data in a SOAP Envelope for SOAP Sender Adapter

    Hello All,
    Am using a SOAP sender adapter and want to use the data inside the SOAP Header for some routing purpose(extended receiver determination). Any SOAP message coming into XI will look something like below. But XI will pass the contents of <SOAP-ENV:Body> to Payload and <SOAP-ENV:Header> to the SOAP Header category you can see that in SXMB_MONI.
    Is there a way to read the data in my SOAP Header to be later used in my extended receiver determination.
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:Q-ENV="/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <SOAP-ENV:Header>
              <Q-ENV:Header>
                   <Q-ENV:Sender-Id>1</Q-ENV:Sender-Id>
                   <Q-ENV:Receiver-Id></Q-ENV:Receiver-Id>
                   <Q-ENV:Correlation-Id></Q-ENV:Correlation-Id>
                   <Q-ENV:Message-Id></Q-ENV:Message-Id>
                   <Q-ENV:Date-Sent></Q-ENV:Date-Sent>
                   <Q-ENV:Document-Type></Q-ENV:Document-Type>
                   <Q-ENV:Message-Format></Q-ENV:Message-Format>
              </Q-ENV:Header>
         </SOAP-ENV:Header>
         <SOAP-ENV:Body>
              <Q-ENV:Body>
                   <Q-ENV:Content-Type>text/xml</Q-ENV:Content-Type>
                   <Q-ENV:Message-Type></Q-ENV:Message-Type>
                   <Q-ENV:Encoding>UTF-8</Q-ENV:Encoding>
                   <Q-ENV:Message-Body>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Thanks for your replies in advance.
    Regards,
    Prashanth

    Hello,
    but they were not getting any response back from XI and the sending system kept resending the message.. may be it was acting like a HTTP post.
    The method that is used by the native SOAP Adapter is always HTTP Post. Not sure why you are not getting a response, have you checked the outbound firewall of the sending party or the inbound firewall of XI? To which SOAP URL are you sending to?
    Hope this helps,
    Mark

  • Read SOAP envelope into ABAP using XSLT?

    Hello,
    I have another problem here and this is really driving me nuts - I just don't get it to work.
    As a reply to a web-service I call I get the following xml file. All I need is an xslt that gets me errorCode and errorDescription into an ABAP structure...
    file:
    <?xml version="1.0" encoding="utf-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <SOAP-ENV:Body>
    <mit:rgo xmlns:mit="http://myurl.com"><mit:TECHNICALHEADER><mit:errorCode>A1014</mit:errorCode><mit:errorDescription>Unable to perform operation</mit:errorDescription><mit:password/><mit:user/><mit:applicationKey/></mit:TECHNICALHEADER><mit:file_creation_date>2005-09-06</mit:file_creation_date><mit:file_creation_time>15:06:33.0</mit:file_creation_time><mit:registration><mit:order_nr>DE999TEST</mit:order_nr><mit:vin>XXXXXXXXXXXXXXX04</mit:vin></mit:registration></mit:rgo>  </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    my corresponding XSLT is:
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:mit=
    "http://myurl.com" xmlns:asx="http://www.sap.com/abapxml" version="1.0">
      <xsl:strip-space elements="*"/>
      <xsl:template match="/">
        <asx:abap>
          <asx:values>
            <SOAP-ENV:Envelope>
              <SOAP-ENV:Body>
                <mit:rgo>
                  <mit:TECHNICALHEADER>
                    <ANSWER>
                      <mit:errorCode>
                        <xsl:value-of select="ERRORCODE"/>
                      </mit:errorCode>
                      <mit:errorDescription>
                        <xsl:value-of select="ERRORCODEDESCRIPTION"/>
                      </mit:errorDescription>
                    </ANSWER>
                  </mit:TECHNICALHEADER>
                </mit:rgo>
              </SOAP-ENV:Body>
            </SOAP-ENV:Envelope>
          </asx:values>
        </asx:abap>
      </xsl:template>
    </xsl:transform>
    What am I doing wrong or what do I need to do? I'm lost!
    Thank you for your help!
    Johannes.

    Thank you Durairaj, as a matter of fact my program is based on your post (one that you pointed me to). For whatever reason I'm not having luck figuring it out (may be just a bit of work pressure) could you please hlep me a bit more by pointing me to where in my program code/xslt I'm going wrong? I somehow feel that it could be my table structure or xslt.
    I would really appreciate it!
    Thanks again,
    erfan.

  • Access to XI SOAP envelope - How to?

    Hello there,
    Is it possible to get access and manipulate the Standard SOAP envelope headers internally used by XI? Does XI supports this functionality/customization?
    I would like to enrich/enhance the XI SOAP headers with some own context data to be used later for end-to-end monitoring outside XI.
    Thanks for your feedback.
    Cheers,
    R.

    Thanks Anupam and Jenny for your kind response.
    I am wrking on PI 7.0. I dnt want soap envelope in payload so I have already checked the 'Do not create response' button still in response message I am getting the soap envelope.
    I can use java or xslt but the the structure is not able to read the soap envelope. To read it I need to create same data structure which matches with the soap envelope.
    this is the response I am getting through webservice.
    <?xml version="1.0" encoding="UTF-8" ?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <createResponse>
    <result>
    <errors>
    <message>Config Master Record Type Name value is missing</message>
    <statusCode>FIELD_CUSTOM_VALIDATION_EXCEPTION</statusCode>
    </errors>
    <id xsi:nil="true" />
    <success>false</success>
    </result>
    </createResponse>
    </soapenv:Body>
    </soapenv:Envelope>
    And this is the wsdl structure
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:createResponse xmlns:ns0="urn:enterprise.soap.sforce.com">
       <ns0:result>
          <ns0:errors>
             <ns0:fields/>
             <ns0:message/>
             <ns0:statusCode/>
          </ns0:errors>
          <ns0:id/>
          <ns0:success/>
       </ns0:result>
    </ns0:createResponse>
    Because of the soap envelope it is not able to read it. I have to create new structure.
    Experts please help me to solve this problem.
    Regards,
    Jayesh.

  • How to create soap envelope structure

    Hello Friends,
    I am working on a RFC to webservice sync scenario.Here I am getting response from webservice in soap envelope form which is not matching with my wsdl response structure. I have tried to create the envelope structure manually  but i dint get success. Can any body guide me how to over come with it.
    (I have already checked 'Do not create soap envelop' in receiver soap addapter).
    Regards,
    jayesh.

    Thanks Anupam and Jenny for your kind response.
    I am wrking on PI 7.0. I dnt want soap envelope in payload so I have already checked the 'Do not create response' button still in response message I am getting the soap envelope.
    I can use java or xslt but the the structure is not able to read the soap envelope. To read it I need to create same data structure which matches with the soap envelope.
    this is the response I am getting through webservice.
    <?xml version="1.0" encoding="UTF-8" ?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <createResponse>
    <result>
    <errors>
    <message>Config Master Record Type Name value is missing</message>
    <statusCode>FIELD_CUSTOM_VALIDATION_EXCEPTION</statusCode>
    </errors>
    <id xsi:nil="true" />
    <success>false</success>
    </result>
    </createResponse>
    </soapenv:Body>
    </soapenv:Envelope>
    And this is the wsdl structure
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:createResponse xmlns:ns0="urn:enterprise.soap.sforce.com">
       <ns0:result>
          <ns0:errors>
             <ns0:fields/>
             <ns0:message/>
             <ns0:statusCode/>
          </ns0:errors>
          <ns0:id/>
          <ns0:success/>
       </ns0:result>
    </ns0:createResponse>
    Because of the soap envelope it is not able to read it. I have to create new structure.
    Experts please help me to solve this problem.
    Regards,
    Jayesh.

  • PB & web service : how to manipulate soap envelop ?

    Hi all,
    I am in the process of testing PB's ability to consume an existing web service. I have done some reading left and right.
    I can create the proxy , but i always end up having the Cannot invoke webservice messagebox.
    Here's my little piece of PB code 
    PB CODE START
    soapconnection conn // Define SoapConnection
    checkvatport proxy_obj // Declare proxy
    long rVal, lLog
    real amount
    date date_a
    string ls_a,ls_b,ls_c
    conn = create soapconnection  //Instantiated connection
    lLog = conn.SetSoapLogFile ("C:\mySoapLog.log")
    rVal = Conn.CreateInstance(proxy_obj, "checkvatport", "")
    messagebox("test rval",string(rval))
    // Create proxy object
    try
       date_a = today()
      boolean w_t
      w_t = TRUE
       str_checkvat str1
       tns1__checkvatresponse str2
      str1.countrycode = "BE"
      str1.vatnumber = "0810416786"
      ls_a  = proxy_obj.checkvat(str1.countryCode,str1.vatNumber,str2.requestdate,str2.valid,str2.address)
      messagebox("LS-a",ls_a)
    catch ( SoapException e )
       messagebox ("Error", "Cannot invoke Web service")
       // error handling  
    end try
    destroy conn
    PB CODE END
    And here's the soaplog contents
    SOAPLOG START
    CLOSED
    REQUEST:
    CLOSED
    POST /taxation_customs/vies/services/checkVatService HTTP/1.1
    Host: ec.europa.eu
    Connection: Keep-Alive
    User-Agent: EasySoap++/0.6
    Content-Type: text/xml; charset=utf-8
    SOAPAction: "urn:ec.europa.eu:taxud:vies:services:checkVat#checkVat"
    Content-Length: 654
    <E:Envelope
      xmlns:E="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:A="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:s="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:y="http://www.w3.org/2001/XMLSchema"
      E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <E:Body>
    <m:checkVat
      xmlns:m="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
    <ns1:countryCode
      xmlns:ns1="urn:ec.europa.eu:taxud:vies:services:checkVat"
      s:type="y:string">BE</ns1:countryCode>
    <ns2:vatNumber
      xmlns:ns2="urn:ec.europa.eu:taxud:vies:services:checkVat"
      s:type="y:string">0810416786</ns2:vatNumber>
    </m:checkVat>
    </E:Body>
    </E:Envelope>
    RESPONSE:
    HTTP/1.1 500 Internal Server Error
    Date: Wed, 04 Jun 2014 09:33:11 GMT
    Transfer-Encoding: chunked
    Content-Type: text/xml; charset=UTF-8
    Server: Europa
    Connection: Keep-Alive
    Transfer is Chunked!
    01d7
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Unmarshalling Error: unexpected element (uri:"urn:ec.europa.eu:taxud:vies:services:checkVat", local:"countryCode"). Expected elements are &lt;{urn:ec.europa.eu:taxud:vies:services:checkVat:types}vatNumber>,&lt;{urn:ec.europa.eu:taxud:vies:services:checkVat:types}countryCode> </faultstring></soap:Fault></soap:Body></soap:Envelope>
    0000
    GetChunkLength: 01d7 = 471
    Connection Disconnected
    SOAPLOG END
    Now i tried the to cut and paste the above soap envelop in SOAPUI , and it gives me the exact same error message as in the soaplog.
    I then tried creating a request through SOAPUI but based on the wdsl ,SOAPUI is giving me a different soap envelop as the one PB generated ?
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:checkVat>
             <urn:countryCode>?</urn:countryCode>
             <urn:vatNumber>?</urn:vatNumber>
          </urn:checkVat>
       </soapenv:Body>
    </soapenv:Envelope>
    If i enter parameters in the above envelop and check it through SOAPUI , i end up having the result i want.
    Is there any way we can manipulate the soap envelop contents ? Or does anyone have any idea why the soap envelop generated by PB ends up having the above mentioned error in the soaplog file ?
    What am i missing ?
    TIA
    John

    You're using the EasySOAP proxy.  You didn't mention what version of PowerBuilder, but if you're using a version that supports the .Net engine instead use that.  The EasySOAP web service support is quite old.
    Once you do that you won't be able to use the log.  Instead, use something like Fiddler to trap the request and response.

  • Reading contents of SOAP Header

    Hi folk,
    I did some reseach on SDN on how to read the contents of the SOAP header, there were a lot of promising leads but i havn't hit the bull'sEye yet.....
    1.i have a requirement whrein i need to read some contents frm the SOAP header hold on to it and send it back in the respnse.
    2.2nd requirement i have to modify the soap header's contents based on the current date/time and send it.
    Can someone give me some leads/hints on how to achieve this.
    If you can give me the mapping API i need to call in the mapping that will be greatly appreciated!!
    Thank u all.
    Hank

    some quick facts:
    #1: there is a confusion between HTTP Headers (which is addressed by the Variable Transport Binding option in both SOAP and HTTP adapters) and the SOAP Header (part of the XML message that is the payload of the HTTP Request). Notice that the SOAP Header is not addressable through the Dynamic Configuration of the HTTP Headers.
    #2: in order to read data from the SOAP Header on the outbound (sender) side, you need to:
        #2.1. select the "Do Not Use SOAP Envelope" option in the Sender communication channel (the SOAP Envelope has two subtags, the SOAP Header and the SOAP body, which contains the payload);
       #2.2. in the mapping, you need to consider the whole SOAP Envelope as source message. You could even try to address it through a Message Mapping, given that you have an external message definition (e.g. wsdl, xsd) that defines the SOAP Envelope layout. But it is much easier to handle it through a XSLT or Java Mapping, at a 1st moment, to read the necessary information from the SOAP Header* and to extract the payload from the SOAP Body, and then use your existing Message Mapping in the payload.
    Example of XSLT mapping: Re: XI30 SPS16 - SOAP Sender Adapter - self-defined SOAP-Header (last message)
    You just need to enhance the part where you read the header field you need.
    Best,
    Henrique.
    to recover the read value at a later point, you could use for example a mapping variable (PI 7.1+) or a custom context object (use dynamic configuration to read/write on a custom context object). Notice that Dynamic Configuration works as a custom HashMap, where you can read/write any combination of context objects namespace/technical name. Just define your custom namespace and technical name (e.g. 'http://sap.sdn.com/test' and 'MyParam'), fill it in the XSLT mapping** and read it afterwards, wherever you need***.
    Sample code to read/write Dynamic Configuration in XSLT mappings: http://help.sap.com/saphelp_nw70/helpdata/en/43/03fe1bdc7821ade10000000a1553f6/frameset.htm
    if you want to use this value in a Receiver Determination, you can even use Adapter Metadata to define them as "fake ASMAs": /people/michal.krawczyk2/blog/2006/10/09/xi-dynamic-configuration-in-adapter-modules--one-step-further

  • JAVA/ XSLT Mapping to Create a SOAP Envelope

    Hello,
    I have a File to SOAP scenario and it requires the SOAP message with a custom SOAP envelope. I have searched SDN and could only find that SOAP envelope can be created using a JAVA or XSLT mapping. However, I could not find any blog/ article which will help me understand, with an example, how this is actually coded (creating of a custom SOAP envelope).
    Can anyone please point me to a valid blog/ article/ wiki which describes the procedure?
    Thanks,
    Pankaj.
    P.S. Please no spamming of post with links on SOAP Envelope; I have already searched on SDN

    Hello,
    Here is a wiki using PI 7.1
    https://wiki.sdn.sap.com/wiki/display/XI/SampleJAVAMappingcodeusingPI7.1+API
    If you want to create a SOAP Envelope, comment out the codes
      private static final DynamicConfigurationKey KEY_FILENAME =
             DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
    String inParam = arg0.getInputParameters().getString("PARAM_IN1");
         getTrace().addInfo("Input Parameter: " +inParam);
         int offset = inData.indexOf(inParam);
         //7. Reader Message ID from Message Header
         InputHeader messageHeader = arg0.getInputHeader();
         String messageId = messageHeader.getMessageId();
         //8. A DynamicConfiguration is a map containing adapter specific message attributes.
         // It associates DynamicConfigurationKeys with string values. The DynamicConfiguration object is obtained using
         // method getDynamicConfiguration()of class com.sap.aii.mapping.api.TransformationInput;
         DynamicConfiguration conf = arg0.getDynamicConfiguration();
         conf.put(KEY_FILENAME, "This Test file is set by JAVA Mapping");
         String outData = "";if(offset > 0){
         int offset1 = inData.indexOf(">", offset);
         String StartString =inData.substring(0,offset1);
         String DocumentNameSpace = " xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.002.001.02\"";
         String RemainingString = inData.substring(offset1);
    lastly, instead of using
    outData = StartString + DocumentNameSpace + RemainingString;
    replace it with something like this
    String outData = "";
    outData = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:tem=\"http://yournamespace/\"><soap:Header/><soap:Body>"+inData.substring(inData.indexOf("?>")+2)+"</soap:Body></soap:Envelope>";
    Hope this helps,
    Mark

  • No SOAP Envelope error in SOAP Receiver Adapter

    Hello Friends,
    Informaiton:-
    I have configured one Synchronous scenarion for SAP R/3 to PI 7.1 to Java based web applicaiton.
    On the Receiver/Outbound side, i have configured the SOAP Receiver Adapter with the Target URL and SOAP Action.
    Outbound and Inbound service interfaces have Request/Response and Fault messages.
    Issue:-
    While sending the Message, Below error is noticed in ABAP stack SXMB_MONI during the Call Adapter Stage and also in RWB (Channel Monitoring) .
    com.sap.engine.interfaces.messaging.api.exception.MessagingException: java.io.IOException: No SOAP  Envelope but 1 {}RESPONSES; HTTP 200 OK
    I also found that Request message is not reaching to the Java Web server.
    I am taking the Same message Payload (found at Call Adapter Stage) and ussing it in XML Altova SPY Web client tool. There it is running scuccessfully and getting the Response message.
    please suggest.
    Thanks & Regards
    Jagesh

    Hi,
    Yesterday i consumed the same WSDL file in Altova XML SPY and there it is working, getting the Response.
    Now comparing the SOAP Request message reaching to the Third party Web server (which fall within the same Lane network)
    from SAP PI and Altova XML SPY tool. I used TCP Gateway for the below scenarios.
    (1)First i sent the SOAP message from PI and observed the RESPONSE message without the SOAP Envelope in TCP Gatway Trace and hence i am getting the No SOAP Envelope Error in PI.
    (2)I consumed the same WSDLfile in Altova XML SPY and sent the SOAP message, here i got the Proper SOAP Response message and hence success in this case. (Used the same Data Payload as used in point 1)
    (3)Now to identify the issue in the SOAP Request message being sent from PI, i used the same SOAP message sent in step 1 here, that means copy the entire SOAP ENvelope from the TCP gateway Trace and pasted it in Alota Spy and sent, there it is found running (got the response message from Third Party server).
    One difference i found in HTTP Protocol statements in SOAP Request message in Point no 1 and Point no 2 above.
    HTTP Protocols in Point 1 (Through PI).
    POST  HTTP/1.0
    Accept: /
    Host: 172.24.138.142:4544
    User-Agent: SAP-Messaging-com.sap.aii.af.sdk.xi/1.0505
    CallingType: SA
    content-id: <soap-00306EEAC2051ED1839136CEE8564900 sap.com>
    Content-Type: text/xml; charset=utf-8
    Content-Length: 1195
    SOAPACTION: "Action1"
    HTTP Protocols in Point 2 (Through Altova).
    POST / HTTP/1.1
    Content-Type: text/xml
    User-Agent: XML Spy
    SOAPAction: "Action1"
    Host: 172.24.138.142:4544
    Content-Length: 1195
    Connection: Keep-Alive
    Cache-Control: no-cache
    Thanks to Mr. Stefan Grube for writting such a nice blog.
    Troubleshooting SOAP, HTTP and Mail Adapter Scenarios with TCPGateway
    Experts, please suggest me further.
    Thansk & Regards
    Jagesh

  • Generating SOAP Envelope when DO NOT USE ENVELOPE option is marked

    My scenario: SPROXY => XI => 3rdParty WebService. Communication is synchronous. I've a problem with soap envelope. It is required by webservice, but when I use standard soap envelope generated by SAP I've a problem with receiving response from webservice.
    So I want to create my own envelope. For this reason I've used DO NOT USE SOAP ENVELOPE option. Now the challenge comes. How can I create my own soap envelope?
    Do you have any working example? Soap envelope should be added to message send from XI to 3rdParty WebService.
    Helping answers => a lot of points

    I'm talking about HTTP header.
    When I'm sending SOAP request from SAP my whole message looks like when I use soap envelope
    POST / HTTP/1.0
    Accept: */*
    Host: 192.168.132.179:54000
    User-Agent: SAP-Messaging-com.sap.aii.messaging/1.0505
    Content-ID: <soap-02cce7702b1a11dd9902000c29ee261e[at]sap.com>
    Content-Type: text/xml; charset=utf-8
    Content-Disposition: attachment;filename="soap-02cce7702b1a11dd9902000c29ee261e[at]sap.com.xml"
    Content-Description: SOAP
    Content-Length: 259
    SOAPACTION:
    <SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'><SOAP:Header/><SOAP:Body><ns0:Sd2Ids_SzfExport xmlns:ns0='http://www.dat.de/sdii/ids/Sd2SOAP.wsdl'><arg1>1234567899-0</arg1><arg2>1</arg2></ns0:Sd2Ids_SzfExport></SOAP:Body></SOAP:Envelope>
    Always after such request I got and HTTP 411 error.
    In opposite, when I'm sending request from e.g. Altova or SoapUI, my message looks:
    POST / HTTP/1.1
    Content-Type: text/xml; Charset=UTF-8
    User-Agent: XML Spy
    Host: 192.168.132.179:54000
    Content-Length: 489
    Connection: Keep-Alive
    Cache-Control: no-cache
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <SOAP-ENV:Body>
              <m:Sd2Ids_SzfExport xmlns:m="http://www.dat.de/sdii/ids/Sd2SOAP.wsdl">
                   <arg1 xsi:type="xsd:string">1234567899-0</arg1>
                   <arg2 xsi:type="xsd:string">1</arg2>
              </m:Sd2Ids_SzfExport>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    After that request WebService response is correct.
    You can find such differences (except Content-length which is a result of XML message formatting) in those two headers:
    - for first is used HTTP 1.0 protocol for later 1.1
    - in SAP header an info about attachment is added
    After a lot of test I thing that those attachment info in header of HTTP is causing a problem. So I want to use DO NOT USE SOAP ENVELOPE option to generate HTTP header without Content-Disposition and generate SOAP Envelope manually.

  • Unsing RequestOneWayBean with Do Not Use SOAP Envelope

    HI All ,
    I have a requriement where Ecc is calling PI with an Asyn Proxy and PI calls a Sync Webservice and gets the Response back and sends the response back to ECC in Async manner . (Async - Sync Bridge).
    I need to call aWeb Service which required specifc SOAP  Headers . SO I have  created a Custom Structure via XSLT mapping and calling the Web Service with the Option  Do Not Use SOAP Envelope as checked . I have also used the RequestResponse Bean & ResponseOneWay Bean in the SOAP Receiver adapter to make the call from Sync to Asyn.  When I execute the Interface the response from the Web Service is  not flowing into PI .
    I am getting the error "Exception caught by adapter framework: InterfaceDetermination did not yield any actual interface" .
    Has anyone worked on the ResponseOneway Bean with parameter "Do Not Use SOAP Envelope as checked" . Can some one please help me out with this issue..
    Thanks
    Regards
    NIlesh Taunk.

    HI Eng ,
    I have not been able to accept the SOAP Fault Response. The link that you have provided above works for accepting the SOAP Fault . But in my case the SOAP Receiver Adapter has the Option "DO NOT Use SOAP Envelope " checked . So it is still not working in my case .
    I have made all the Configurations in the Receiver SOAP adapter but am unable to get the fault response back .
    Please find below the Screenshot of the Receiver SOAP Adapter.
    Im my case I am able to receive the successfull response in my Response Mappping (I have created a diff ICO for Response Message and a diff ICO for Fault Message). When a fault is received even the Fault message goes to the response mapping and it fails in the response mapping as the fault structure & the response structure do not match .
    Do we need to make some additional configuration  for the handing  faults, whn the option "DO NOT use SOAP envlope is checked" as it removed the Env from the messgaes.
    Am I missing something, would you be able to have a look.
    Thanks
    Regards
    Nilesh Taunk.

  • SOAP Adapter: DO not use soap envelope

    Hi Guys
    I have a scenario, which calls a webservice from my ABAP Proxies, the twist in this is that SOAP request expects license info into the header of SOAP envelope, I could achive this by XSLT mapping in the receiver SOAP adapter I selected the option "Do not use SOAP envelope" and could do the call.
    Due to this the response received from the webservice is treated as payload, as shown below...
    response message payload:
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Header xmlns="http://schemas.xmlsoap.org/soap/envelope/">
        <SubscriptionInfo xmlns="http://ws.strikeiron.com">
          <LicenseStatusCode>0</LicenseStatusCode>
          <LicenseStatus>Valid license key</LicenseStatus>
          <LicenseActionCode>0</LicenseActionCode>
          <LicenseAction>Decremented hit count</LicenseAction>
          <RemainingHits>18</RemainingHits>
          <Amount>0</Amount>
        </SubscriptionInfo>
      </Header>
      <soap:Body>
        <getRateResponse xmlns="CurrencyRates">
          <getRateResult>44.945</getRateResult>
        </getRateResponse>
      </soap:Body>
    </soap:Envelope>
    and when i am trying to do the response mapping, it is not able to read the value.
    Anyone having any idea, on how we could do this.
    Thanks
    Dheeraj

    Hi
    I am sorry for replying in so late, was busy with some projects.
    I got few mails and this post is cathing up again, so thought of giving the solution I followed without any adapter module or anything, simple plain XSLT mapping.
    <u><b>Integration Repository</b></u>
    1. Created data type and message type for Outbound Interface
    2. Imported the WSDL
    3. Created an XSD out of the sample response I got by calling the WSDL (this you can do from any tool available, i used the strikeiron website), pls refer below to see the XSD below, and you will have to use the message type envelope from it.
    4. Most Important step, created 2 XSLT mappings, one for request and the other for response., Pls refer below for both these mappings.
    5. did the interface mapping
    <u><b>Integration Directory</b></u>
    1. pls configure your scenario as normaly you do, and while you configure the communication channel for your soap receiver, make sure you click on the do not use soap envelop option.
    thats it done.
    <u><b>XSLT Request Mapping</b></u>
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
         <xsl:template match="/">
              <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
                   <SOAP-ENV:Header>
                        <LicenseInfo xmlns="http://ws.strikeiron.com">
                             <RegisteredUser>
                                  <UserID>xyz</UserID>
                                  <Password>xyz</Password>
                             </RegisteredUser>
                        </LicenseInfo>
                   </SOAP-ENV:Header>
                   <SOAP-ENV:Body>
                        <getConversion xmlns="CurrencyRates">
                             <FromCurrencyCode>
                                  <xsl:value-of select="//fromCurrency"/>
                             </FromCurrencyCode>
                             <ToCurrencyCode>
                                  <xsl:value-of select="//ToCurrency"/>
                             </ToCurrencyCode>
                             <Amount>1</Amount>
                        </getConversion>
                   </SOAP-ENV:Body>
              </SOAP-ENV:Envelope>
         </xsl:template>
    </xsl:stylesheet>
    <u><b>XSLT Response Mapping</b></u>
    <?xml version='1.0' ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="CurrencyRates" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         <xsl:template match="/">
              <ns0:MT_Cur_res xmlns:ns0="http://www.april.in/WebService/SOAPHeader">
                   <Rate>
                        <xsl:value-of select="soap:Envelope/soap:Body/a:getConversionResponse/a:getConversionResult"/>
                   </Rate>
              </ns0:MT_Cur_res>
         </xsl:template>
    </xsl:stylesheet>
    <u><b>Webservice Response XSD</b></u>
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.strikeiron.com" xmlns:ns2="CurrencyRates">
      <xs:import namespace="CurrencyRates" schemaLocation="ns2.xsd"/>
      <xs:import namespace="http://ws.strikeiron.com" schemaLocation="ns1.xsd"/>
      <xs:element name="Envelope">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="soap:Header"/>
            <xs:element ref="soap:Body"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Header">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ns1:SubscriptionInfo"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Body">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ns2:getConversionResponse"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    let me know in case somebody gets stuck somewhere for this scenario.
    Take Care
    Dheeraj

  • SOAP scenario "Do not use SOAP Envelope" check problems

    Hi Gurus!
    I'm again here.
    I've an scenario with SOAP Receiver, the WS do I need consume, looks like:
    POST /SumTotalws1/services/Authentication.asmx HTTP/1.1
    Host: xxx.xxx.xxx.xxx
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    SOAPAction: "http://www.sumtotalsystems.com/sumtotal7/sumtotalws/Authentication/Login"
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <Login xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/Authentication/">
          <credentials>
            <Username>string</Username>
            <Passcode>string</Passcode>
            <AuthenticationType>NotSpecified or Anonymous or NTAuthentication or Passport or LDAP</AuthenticationType>
            <AccountType>NotSpecified or WebService or WebUI</AccountType>
          </credentials>
        </Login>
      </soap:Body>
    </soap:Envelope>
    but the response looks like:
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Header>
        <UserToken xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/">
          <Value>string</Value>
        </UserToken>
      </soap:Header>
      <soap:Body>
        <LoginResponse xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/Authentication/" />
      </soap:Body>
    </soap:Envelope>
    when I create my communication channel with "Do not Use SOAP Envelope" uncheck it, all run ok, but I only get in response message "<LoginResponse>" and I need <UserToken>
    When I check it "Do not use SOAP Envelope" and I use XSLT mapping to add SOAP Env to request message,  I get response message empty.
    I tried the web Service with the message that I obtained from de XSLT mapping in the program SOAPUI. I get ok response with the <UserToken> value.
    some idea to solve this problem??
    Thanks in advance.
    Edited by: KrlosRios on Sep 30, 2011 8:07 PM

    Hi, thanks for your answer.
    Can I use AXIS to execute any WS?
    The WS that I tried execute looks like this:
    POST /xxxx/services/Authentication.asmx HTTP/1.1
    Host: xxx.240.106.39
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    SOAPAction: "http://xxx/Authentication/Login"
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <Login xmlns="http://xxxxAuthentication/">
          <credentials>
            <Username>string</Username>
            <Passcode>string</Passcode>
            <AuthenticationType>NotSpecified or Anonymous or NTAuthentication or Passport or LDAP</AuthenticationType>
            <AccountType>NotSpecified or WebService or WebUI</AccountType>
          </credentials>
        </Login>
      </soap:Body>
    </soap:Envelope>
    and for the response:
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Header>
        <UserToken xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/">
          <Value>string</Value>
        </UserToken>
      </soap:Header>
      <soap:Body>
        <LoginResponse xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/Authentication/"></LoginResponse>
      </soap:Body>
    </soap:Envelope>
    also I found in Trace node in SXI_MONITOR, jus before execute response mapping :
    <Trace level="1" type="B" name="PLSRV_MAPPING_RESPONSE"></Trace><!-- ************************************ -->
    <Trace level="1" type="Timestamp">2011-11-01T19:33:34Z UTC-6 Start of pipeline service processing PLSRVID= PLSRV_MAPPING_RESPONSE</Trace>
    <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
    <Trace level="3" type="T">Calling pipeline service: PLSRV_MAPPING_RESPONSE</Trace>
    <Trace level="3" type="T">Reading Pipeline-Service specification... </Trace>
    <Trace level="3" type="T">PLSRVTYPE  = </Trace>
    <Trace level="3" type="T">ADRESSMOD  = LOCAL</Trace>
    <Trace level="3" type="T">P_CLASS    = CL_MAPPING_XMS_PLSRV3</Trace>
    <Trace level="3" type="T">P_IFNAME   = IF_XMS_PLSRV</Trace>
    <Trace level="3" type="T">P_METHOD   = ENTER_PLSRV</Trace>
    <Trace level="3" type="T"> </Trace>
    <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL"></Trace><!-- ************************************ -->
    <Trace level="1" type="B" name="CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV"></Trace><!-- ************************************ -->
    <Trace level="2" type="T">......attachment XI_Context not found </Trace>
    <Trace level="3" type="T">Das Mapping wurde bereits in der Interface-Ermittlung bestimmt. </Trace>
    <Trace level="3" type="T">Objekt-Id des Interface-Mappings 8594D8C2E6DA3C008F45B112FFCC86B8 </Trace>
    <Trace level="3" type="T">Versions-Id des Interface-Mappings C3BB8FB0A1D511E0A688E9FCB9F06E16 </Trace>
    <Trace level="1" type="T">Interface-Mapping http://xxxxx.net/pi/lms/Authentication OM_LMS_Authentication </Trace>
    <Trace level="3" type="T">Mapping-Schritte 1  XSLT Response_LMS_Auth5 </Trace>
    <Trace level="3" type="T">MTOM-Attachments werden nicht in die Payload überführt. </Trace>
    <Trace level="1" type="T">Payload is empty. </Trace>
    <Trace level="3" type="T">Dynamische Konfiguration ist leer. </Trace>
    <Trace level="2" type="T">Modus 0  </Trace>
    <Trace level="2" type="T">Call XSLT processor with stylsheet Response_LMS_Auth5.xsl. </Trace>
    <Trace level="3" type="T">Method fatalError called, terminate transformation, because of
    Thrown:
    javax.xml.transform.TransformerException: java.io.IOException: Parsing an empty source. Root element expected!
         at com.sap.engine.lib.jaxp.TransformerImpl.transform(TransformerImpl.java:250)
    Say Payload is empty.
    and in left directory tree, not exist "payload" node, only existe SOAP Body and in "Manifest" node looks like this:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <!-- XML Validation Outbound Channel Response -->
    <SAP:Manifest wsu:Id="wsuid-manifest-5CABE13F5C59AB7FE10000000A1551F7" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <SAP:Payload xlink:href="cid:att-60c3078b066911e1bc1500000093b25a @sap.com">
    <SAP:Name>MainAttachment</SAP:Name><
    SAP:Description>Main document</SAP:Description>
    <SAP:Type>Application</SAP:Type></SAP:Payload>
    </SAP:Manifest>
    Thanks for your help.

  • Do not use SOAP envelope

    I have a scenario in which a Webservice is called from PI; as the webservice request some specific fields in the SOAP-header I have found that I should check the "Do not use SOAP envelope" option in the SOAP-receiver channel.
    I have searched the forum/SDN for examples of how to create the SOAP envelope including the required header fields. I have found some posts refering to XSLT-mapping; however I'm not famliar with XSLT so I'm looking for an example or guide how to create the SOAP envelope for this scenario.
    Can anybody be of assistance?
    Kind regards,
    John.

    Here is a sample of an xlst I used for this purpose.
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Header/>
      <soapenv:Body>
          <p262:operationName xmlns:p262="http://othersite.com">
          <xsl:apply-templates/>
        </p262:operationName>
      </soapenv:Body>
    </soapenv:Envelope>
    </xsl:template>
    <xsl:template match="shippingOptions">
          <shippingOptions>
              <xsl:apply-templates select="destination" />
              <equipmentId><xsl:value-of select="equipmentId"/></equipmentId>
              <xsl:apply-templates select="origin" />
          </shippingOptions>     
    </xsl:template>
    <xsl:template match="destination">
            <destination>
              <countryCode><xsl:value-of select="countryCode"/></countryCode>
              <postalCode><xsl:value-of select="postalCode"/></postalCode>
            </destination>
    </xsl:template>
    <xsl:template match="origin">
            <origin>
              <countryCode><xsl:value-of select="countryCode"/></countryCode>
              <postalCode><xsl:value-of select="postalCode"/></postalCode>
            </origin>
    </xsl:template>
    </xsl:stylesheet>

  • How to capture SOAP fault when using "Do not use SOAP envelope" parameter

    Hi,
    we have a synchronous  RFC -> XI -> Web Service scenario. The Web Service requires some custom SOAP header elements for user authorization which forced us create the entire SOAP message in a message mapping and to set the "Do not use SOAP envelope" parameter in the receiving SOAP adapter.
    In order to capture the SOAP fault message from the Web Service we have created a message interface with a fault message and also created an interface mapping with a fault message mapping.
    Our problem is that the fault message is not populated when we get a SOAP fault message back from the Web Service. Is this due to the fact that we have set the  "Do not use SOAP envelope" parameter?
    Thanks in advance!
    Stefan
    Message was edited by:
            Stefan Nilsson

    Hi Bhavesh,
    I have exaactly same scenario. But the only difference is that the Successful payload is also not coming into PI.
    The request is successfully hittng the webservice.
    Please guide me on how to capture the paylod.
    I am using the WSDL provided by the thirdparty but sill the message is not coming into PI.

Maybe you are looking for

  • MX7 Install Help Please

    I have installed ColdFusion MX7 Enterprise on my Fedora Core 4 (Plesk 8) Unix Server. It is installed to the deafult directory /opt/coldfusionmx7/ and the installation went well. To access my administrator panel I was told to go to the following http

  • How Do I Customize the Key Combination to Cycle Through Windows in Reverse in all Applications?

    How do I customize the key combination to cycle through windows in reverse in all applications?  I want to be able to change the global setting for Command+~ (Cmd+Shft+`) to something more desireable.  I could NOT find a way to do this in Systems Pre

  • CS5:PDF(インタラクティブ)のボタン

    InDesign CS5でPDF(インタラクティブ)を書き出したところ. ボタンに設定したテキストボックスや.ボタンに設定した図形の上に配置したテキストボックスが 表示されないことがあります. MacOSXの「プレビュー」や「Adobe Reader」では正常に表示.機能していても. iPadの「iBooks」では表示されず.機能しません. また.「プレビュー」や「Adobe Reader」でも表示されない場合でも. ボタンのある場所をクリックすればキチンと機能はするので. ボタンそのものは存在

  • Can't open CUP link directly from email notification ( GRC 5.3 )

    Hi Everybody, I am working for a client where GRC 5.3 is installed. When we submit a user request in CUP , a link is automatically generated in a mail and send to the manager/ approver based on the workflow. But the problem is that client is not able

  • Converting bitmap (byte[ ]) to PNG

    I have a BMP in a byte[ ] that I need to convert to a PNG. I get the byte[ ] from an external application thorugh JNI so there's nothing I can do about the format. The images will end up on a webpage so bitmaps are not acceptable due to size. Using s