cancel
Showing results for 
Search instead for 
Did you mean: 

Web Service operation not in SOAP request

Former Member
0 Kudos

Hi There,

I have a problem with the SOAP receiver adapter.

I have created an external definition and uploaded a wsdl file. Several messages have been created out of the file.

In my mapping I fill the message structure from the wsdl file. When I send the message to the Web Service I get an error back.

The reason for this error seam to be a missing tag under the SOAP:Body element. Because when I create a SOAP request with the XMLSPY, it looks like this:

...

<SOAP:Body>

<m:setVendor xmlns:m="http://..." ...>

<ns8:v xmlns:ns8="http://...">

But in the message from the XI adapter the <m:setVendor..> tag is missing:

<SOAP:Body>

<ns8:v xmlns:ns8="http://...">

This m: tag seems to be the operation of the web service.

Has anybody an Idea how to solve this?

Is the error in the SOAP adapter or in the message definition?

By the way, can I display the complete SOAP message that has been sent out from the adapter with any XI tool (including SOAP header)?

BR,

Jürgen

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

Jurgen

I have exactly the same problem in a RFC -> RFC Adapter -> XI -> SOAP Adapter -> Web Service scenario.

What we see is that the external vendor wants the SOAP to be in "documet-literal wrapped" whereas XI is returning is as "document literal".

**I don't want to change the original wsdl file because it was provided by our business partner and a modification could cause problems when release update.

But I have build a workaround with an XSL stylesheet as a second mapping step in my Interface Mapping. The stylesheet adds the missing operation tag into the XML message.**

Even in our case we dont want to change wsdl, the operation & soap body are going as two parts we want the soap body in operation,i think this can be achieved by xsl stylesheet,Can u please brief us about xsl stylesheet as a second mapping step in interface maping.I dint work on xsl before......

Advance thanx for ur help

Sriram

Former Member
0 Kudos

Hi Sriram,

I had this problem before in an identical scenario!

I fix it using XSLT extension (ABAP Engine). All I did was following the steps provided in the Robert Eijpe weblog /people/r.eijpe/blog/2005/11/04/using-abap-xslt-extensions-for-xi-mapping

In my case I didn’t need a second mapping, I did only one mapping between outbound and inbound interface.

Follow this tutorial; it helps you

Cheers,

Ricardo.

Former Member
0 Kudos

sorry, not WDSL,it is WSDL.

Former Member
0 Kudos

hi,Jürgen

I want to acknowladge that the WDSL file as the external defination whether is provided by your business partner.

would you like to tell me? i have the same problem.

thanks

Amanda

Former Member
0 Kudos

Hi!

I have opened an OSS message regarding this topic and I was told that RPC-style Web Services are not supported within the XI SOAP adapter. Our current workaround which adds the missing Web Service operation using an additional XSLT mapping is not sufficient. Instead we have to change our WSDL from RPC-style into document-literal style.

Regards, Tanja

Former Member
0 Kudos

Tanja,

Could you please tell me, what was your approach in modifying RPC WSDL into DOC WSDL??

I appreciate your input.

Thanks,

Raj.

Former Member
0 Kudos

Hi Tanja,

I'm dealing with the same problem!

Could you please tell me how do you workaround this issue.

Thanks in advance,

Ricardo.

Former Member
0 Kudos

Hi!

> Could you please tell me, what was your approach in

> modifying RPC WSDL into DOC WSDL??

See SAP Note 856597:

Q: Can I convert an RPC styled WSDL to a document styled WSDL?

Regards, Tanja,

Former Member
0 Kudos

Hi all,

First: Thanks a lot for your quick and helpful reply Tanja.

Raj, like SOAP FAQ shows in Q: Can I convert an RPC styled WSDL to a document styled WSDL? So, we need to adjust the implementation of the code that binds the XML instance to some native object.

In my case, I changed the mapping of request and response to call the correct web service method.

So, using XSLT mapping you can do it ;o)

Try to invoke web service trough an external tool, look at the soap request and find what tags are missing. In your XSLT mapping add these tags.

It works for me 🐵

Cheers,

Ricardo.

Former Member
0 Kudos

Hi Jurgen,

Sometimes the SOAP Request created out of XMLSPY has Message Interface tag instead of Message type.Just check that also..This might also create errors sometimes....

Cheers

Rashmi

Former Member
0 Kudos

Hi,

Thanks for the reply.

I think I forgot to mention, that the request from the XMLSPY works correctly while the XI request fails with the following error message:

org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.

The web service provider is an apache axis application.

BR,

Jürgen

Former Member
0 Kudos

Jürgen,

I had the same problem. What I did was modified complex type in the WSDL to create another level with operation as the top level. Actually you can ceheck that when you look at message tab after importing the WSDL, what the message would be. Let me know if still have a problem, I can describe it in detail.

Good luck.

Former Member
0 Kudos

Thanks for the reply.

I don't want to change the original wsdl file because it was provided by our business partner and a modification could cause problems when release update.

But I have build a workaround with an XSL stylesheet as a second mapping step in my Interface Mapping. The stylesheet adds the missing operation tag into the XML message.

Not very satisfying this solution, but it works.

Cheers,

Jürgen

Former Member
0 Kudos

Hello Jürgen!

I have exactly the same problem in a RFC -> RFC Adapter -> XI -> SOAP Adapter -> Web Service scenario.

When I imported the WSDL as an external definition and used it in the graphical message mapping the Web Service operation was missing.

However, when I loaded the WSDL with the Web Service Test Tool of the SAP Web Application Server it generated a request message including the Web Service operation!

I have opened an OSS message yesterday because I think this should also be possible in XI without having to change the WSDL or workarounds like additional XSLT mappings. I'll let you know once I get a response from OSS.

Regards, Tanja