on 05-02-2008 2:33 PM
Hi,
I have a BPM process where I receive an idoc (ORDERS) from R/3, call a webservice and the send an idoc (ALEAUD) back to R/3.
The scenario is working perfectly expect for the ALEAUD back to R/3 is missing all the mapped fields from the SOAP Response.
If I drop the SOAP response payload to my Message Mapping (SOAP.response to the ALEAUD) test tab, I can see that the top node is green but all the other fields are red. It's funny because they are all are the right spot and I don't get (XML not well-formed) and my mapping is not working.
If I look at the payload, it looks like this:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!-- Call Adapter --> <CreateOrderOut xmlns='http://www.inter-tel.com/sapintegration/WSLOrders/CreateOrder' xmlns:ns1='http://www.inter-tel.com/sapintegration/WSLOrders/CreateOrder' xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<ReturnStatus>E</ReturnStatus>
<ReturnMessage/>
<OracleOrderNumber/>
<OracleOrderStatus/>
<IDocNum>0000000000377755</IDocNum>
<SapOrderNumber>0123456789</SapOrderNumber>
</CreateOrderOut>
If I generate a test instance using the XI test tool, the message look like this:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:CreateOrderOut xmlns:ns0="http://www.inter-tel.com/sapintegration/WSLOrders/CreateOrder">
<ReturnStatus></ReturnStatus>
<ReturnMessage/>
<OracleOrderNumber/>
<OracleOrderStatus/>
<IDocNum/>
<SapOrderNumber/>
</ns0:CreateOrderOut>
So what could be the problem?
I created the mapping using the SOAP external definition so why is it not coming back cleanly from the SAOP response?
Is it because of the SAOP envelope coming back?
Rgds,
Yves
OK I never tried the XSLT Mapping so I will let you know.
Thanks again.
Rgds
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
OK I tried with the XMLAnonymizerBean and the message look like this now:
<?xml version='1.0' encoding='utf-8'?>
<CreateOrderOut>
<ReturnStatus>E</ReturnStatus>
<ReturnMessage></ReturnMessage>
<OracleOrderNumber></OracleOrderNumber>
<OracleOrderStatus></OracleOrderStatus>
<IDocNum>0000000000377941</IDocNum>
<SapOrderNumber>0123456789</SapOrderNumber>
</CreateOrderOut>
And it's now all in red when I copy the payload in the test tab. I will try creating a new xsd format for the response.
Thanks All, you are the best!!!!!
Yves
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
OK - remove this from the commuinication channel and re-activate.
I think you can use a simple XSLT mapping (as the first step of your mapping) to give you the message that you need as input into your graphical mapping.
Are you familiar with XSLT mapping ?
You need something like this:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<ns0:CreateOrderOut xmlns:ns0="http://www.inter-tel.com/sapintegration/WSLOrders/CreateOrder>
<ReturnStatus>
<xsl:value-of select="//ReturnStatus" />
</ReturnStatus>
<ReturnMessage>
<xsl:value-of select="//ReturnMessage" />
</ReturnMessage>
<OracleOrderNumber>
<xsl:value-of select="//OracleOrderNumber" />
</OracleOrderNumber>
<OracleOrderStatus>
<xsl:value-of select="//OracleOrderStatus" />
</OracleOrderStatus>
<IDocNum>
<xsl:value-of select="//IDocNum" />
</IDocNum>
<SapOrderNumber>
<xsl:value-of select="//SapOrderNumber" />
</SapOrderNumber>
</ns0:CreateOrderOut>
</xsl:template>
</xsl:stylesheet>
This should work.
Make sure you add to the interface mapping - response when you have imported the relevant archive file.
Cheers
Colin.
OK I will try. I'm looking for examples on SDN on how to use this.
Thanks
Yves
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I added the payload in the original message:
Bad:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!-- Call Adapter --> <CreateOrderOut xmlns='http://www.inter-tel.com/sapintegration/WSLOrders/CreateOrder' xmlns:ns1='http://www.inter-tel.com/sapintegration/WSLOrders/CreateOrder' xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<ReturnStatus>E</ReturnStatus>
<ReturnMessage/>
<OracleOrderNumber/>
<OracleOrderStatus/>
<IDocNum>0000000000377755</IDocNum>
<SapOrderNumber>0123456789</SapOrderNumber>
</CreateOrderOut>
Good:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:CreateOrderOut xmlns:ns0="http://www.inter-tel.com/sapintegration/WSLOrders/CreateOrder">
<ReturnStatus></ReturnStatus>
<ReturnMessage/>
<OracleOrderNumber/>
<OracleOrderStatus/>
<IDocNum/>
<SapOrderNumber/>
</ns0:CreateOrderOut>
Rgds,
Yves
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
These two messages are differently defined. The difference is in the inner tags.
Observe that in the 2nd sample (good one), the inner tags have no prefix asociated (hence, they have the default prefix) and the default prefix is not associated to any namespace (there is no 'xmlns="<some_url>"' entry, only for ns0 prefix). Hence, the application understands that these tags have no namespace, and this seems to be the correct behavior.
On the 1st sample (bad one), the root tag also have empty (default) prefix, and the default prefix is now associated to a namespace. Then, the application understands that the inner tags are associated to that namespace, which is wrong, from the definition above.
If that's the response message from the webservice you're consuming, you have two alternatives:
1. update your internal definiton accordingly (you may need xsd for that);
2. ask them to include this reference in the first inner tag:
> xmlns=""
This will clear the default prefix association, then the inner tags should be ok again.
Regards,
Henrique.
I do have the response tab in Interface Mapping and also created an Inbound Synch Message Interface.
The SAOP Adapter is adding something in the response back and my mapping does not like it... The problem, I don't know what?!?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
1. Use the test tool to load your response XML then look at the XML source.
2. Use the test tool and just type in some data to simulate a response then look at the XML source.
Post both on here and hopefully someone will spot the difference.
I think it might be something to do with the namespace prefix - ns1: whereas XI is expecting ns0:
Cheers
Colin.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Use the XMLAnonymizerBean module to remove the namespaces.
Make sure it appears after the SAP standard module in the modules section on the communication channel so it is applied to the response.
The parameter you need to see is XmlAnonymizerBean.acceptNamespaces and it should have the value of blank
This will remove all the namespaces from the incoming XML and could possibly sort your issue.
Cheers
Colin.
Hi,
In Interface Mapping did yoo define the response Message Mapping In response Tab? if the response tab does not appear. check whether the Message interface was defined as Sync.
This should be the problem
Thanks
PS: Reward porints if useful
Rodrigo
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I'm looking at the (How to use the XI 3.0 SOAP Adapter) doc and they are talking about my problem. I need to extract the SOAP body from the message.
Rgds,
Yves
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
When you import a sample document in the mapping test tab and some nodes appear in red, it means this document does not match your design object (namespaces, tag names or structure discrepancies)
Try to compare your input document and what you've defined in the IR (did you import the WSDL for the SOAP response ?)
Chris
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.