Skip to Content

SOAP Receiver receiving No such operation

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?

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

5 Answers

  • Best Answer
    Jul 11, 2017 at 02:40 PM

    Hi Brian!

    Use RPC-style when importing your wsdl definition.

    Regards, Evgeniy.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jul 11, 2017 at 05:17 AM

    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

    Add comment
    10|10000 characters needed characters exceeded

    • 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.

  • Jul 10, 2017 at 07:11 PM

    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

    Add comment
    10|10000 characters needed characters exceeded

  • Jul 10, 2017 at 07:33 PM

    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.

    Add comment
    10|10000 characters needed characters exceeded

  • Jul 10, 2017 at 08:54 PM

    Hi Brian!

    Wouldn't you please provide wsdl file for that web service?

    Regards, Evgeniy.

    Add comment
    10|10000 characters needed characters exceeded