on 07-10-2017 8:02 PM
Hello all,
I have setup a few HTTP, REST and AS2 CCs but I am setting up my first SOAP communication channel. I received the WSDL from the web-servce, imported it and setup the proper Service interfaces, message maps, operation maps (this is a synchronous service).
However all I get back from the SOAP call is the following:
<html><head><title>Error</title></head>
<body><h1>Error</h1><pre>
Error while sending message to module processor: Sender Channel <Communication Channel>(ID: 4869e9b9920f3da895cfd870a0c5ca6b): Catching exception calling messaging system: No such operation 'enq'
</pre></body></html>
I imported the WSDL into SOAPUI (From Smart Bear) and ran a few tests. I can get the SOAP call to work via SOAPUI but not SAP PO SOAP. Here is the proper SOAP call per SOAPUI:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.webservices.odysseylogistics.com">
<soapenv:Header/>
<soapenv:Body>
<ser:getShipmentByRefNo soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<enq xsi:type="bean:Enquiry" xmlns:bean="http://beans.webservices.odysseylogistics.com/">
<userName xsi:type="xsd:string">?</userName>
<password xsi:type="xsd:string">?</password>
<shipmentID xsi:type="xsd:string">?</shipmentID>
</enq>
</ser:getShipmentByRefNo>
</soapenv:Body>
</soapenv:Envelope>
However, when SAP reads in the WSDL it says the only mapping needed is the following:
<ns0:enq xmlns:ns0="http://services.webservices.odysseylogistics.com">
<userName>?</userName>
<password>?</password>
<shipmentID>?</shipmentID>
</ns0:enq>
I ran some tests in SOAP UI and if I remove the "getShipmentByRefNo" xml elements and send the test I get the same error as SAP does - No such operation.
What do I need to configure to get SAP to send a similar SOAP call as SOAP UI?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
That is exactly what I was looking for. I never knew this option was there.
Thank you
SAP adds it's own SOAP header which may not be what the end service is expecting. You need to select 'Do Not use SOAP envelope' in the channel and then build your own SOAP envelope through xslt as mentioned by Manoj.
Best,
Vibhu
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you for your answer.
However, this is not an envelope issue. The problem is the data being sent in the body. The SOAP UI has a different root element than what is generated by SAP PI. SOAP UI has the following:
<getShipmentByRefNo>
<enq>
<fields>
</enq>
</getShipmentByRefNo>
SAP PI only generates the following:
<enq>
<fields>
</enq>
It would be far easier to generate a new schema to force PI to include the root tag of <getShipmentByRefNo> than to use XSLT to force that root tag into the message.
Hi Brian!
Wouldn't you please provide wsdl file for that web service?
Regards, Evgeniy.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I have modified the file to remove customer specific details and attached the file.scn-uploadwsdl.txt
I appreciate the response, but this does not seem like the best solution.
Why would SAP generate the wrong SOAP call where SOAP UI does (with the same WSDL)? Are there no ways to force SAP to behave like SOAP UI? (in that I mean to generate the proper SOAP message that the web service call is expecting).
I have reached out to the customer and I know the web service call is AXIS based. I have also setup a SOAP AXIS communication channel and that doesn't work either. It just seems like SAP PI reads the WSDL completely differently than SOAP UI.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Brian,
If you want to prepare same SOAP Envelope as the one in SOAP UI then you cans use xslt/java to build the soap envelope.
And Tick "Do not use Soap Envelope" in your receiver channel so to make receiver soap channel to not prepare any soap envelope as you are already doing it in mapping.
You will find a lots of refrence for building soap enevlope below are few :
https://archive.sap.com/discussions/thread/3887128
https://archive.sap.com/discussions/thread/224911
https://archive.sap.com/discussions/thread/3891408
Br,
Manoj
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
90 | |
10 | |
10 | |
10 | |
7 | |
7 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.