Skip to Content
avatar image
Former Member

SOAP to SOAP Synchronous scenario on XI 3.0 with multiple operations web se

Scenario: Sender system (external non-SAP) sends a message to XI 3.0 which in turn forwards the message to SAP EC (Environmental Compliance) standard web service (xEM_ConsumptionsImport) which synchronously returns the response which has to send back to the external sender system.

Here is a list of observations and challenges I faced:

1) When I imported in WSDL into external definition u2013 error Element u201CuseFeatureu201D is not permitted in the u201C/Definitions/portTypeu2026u2026u201D, so I removed it from WSDL and imported after which I didnu2019t see any error in WSDL tab however in messages tab request/response messages are not populated.

2) I tested the published WSDL on WSNAVIGATOR and works fine.

3) When I created a SOAP request with URL directly to WSDL in altova XML Spy it is working fine but please note that I select the operation of the webservice from the pop-up before sending a request.

4) Also the WSDL is a standard WSDL and it is working fine when external system is connected directly to SAP EC, so I donu2019t think WSDL or web service is a problem.

5) Since I didnu2019t find success in importing the wsdl into External definition I created the message structure in DT and then encapsulated that into MT and used it further. Since I donu2019t have external definitions I canu2019t go without Message types. Otherwise may be I could have managed with no mapping.

6) When I try to test with XI URL (http://<server>:<port>/XISOAPAdapter/MessageServlet?channel=:<sender_service>:<sender_channel>) from Altova XML spy it throws an error: com.sap.aii.af.ra.ms.api.DeliveryException: XIAdapterFramework:GENERAL:com.sap.aii.af.ra.ms.api.DeliveryException: invalid content type for SOAP: TEXT/HTML; HTTP 400 Bad Request

7) After reading through blogs I added MessageTranformBean module in receiver channel, it didnu2019t help, it is throwing the same error. Also I heard that this transformation happens automatically in XI. No progress either way.

8) I followed the blog u2013 /people/shabarish.vijayakumar/blog/2006/03/23/rfc--xi--webservice--a-complete-walkthrough-part-1

Tried with soap action u2013 which is the operation name as per the blog and without any soap action as itu2019s an optional field. No luck.

9) If I change the QoS from Best Effort to Exactly once in sender channel and test it from XML Spy it is working and returns empty SOAP response, however I want it to work with Best Effort as its a synch interface.

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • avatar image
    Former Member
    Jun 08, 2010 at 06:47 AM

    There was a thread discussing about combining multiple operations into a single web service - how-to-combine-multiple-webservices-into-one-wsdl and they claim that it is possible only in PI 7.1 and not in XI 3.0 or not even in PI 7.0.

    Since I need to use one of the operations of web service is version XI 3.0 a problem in my case? Isnu2019t there any alternative in XI 3.0 to make this work?

    Please advice, any help is much appreciated. Itu2019s a simple interface with 1:1 mapping but getting overly compliment and always I see just one error - XIAdapterFramework:GENERAL:com.sap.aii.af.ra.ms.api.DeliveryException: invalid content type for SOAP: TEXT/HTML; HTTP 400 Bad Request.

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member Former Member
      but I couldn't understand how it is going to call desired operation in a webservice because I dont see the part of the code 
      where we mention the operation name.

      If there are multiple actions in a WS and you have ot call one of them as per the runtime payload then either:

      1) You should be getting the action name in the source payload

      OR

      2) You should create the action name (as it is in the WS) in the UDF .... the parameter a used in the above UDF example refers to this ACTION name.

      The UDF populates the header item (for Action) with the appropriate value.....just that the action name should be the same as it is in the webservice.

      Also the ASMA checkbox is to be selected in the receiver SOAP channel....alongwith the one for Action.