on 01-20-2014 4:57 AM
Hi Folks,
I am encountering a "Message Root-Tag" error in one of my scenarios. I have a proxy to Soap scenario. I am have implemented a multi mapping, but I am having the above said error. I followed the below blog but still the error occurs.
the below is the structure I see when I test the interface mapping in the ESR
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<ns1:TransactionalData_ECC xmlns:ns1="http://Softel.com/xi/SOFTEL_SC_PLANNING/GPEO/TransactionalData">
<Header_Data>
<RecipientId/>
<ControlNumber/>
<MessageId/>
<DocumentType/>
<DateSent/>
</Header_Data>
<Body_Data>
<DocumentType/>
<Version/>
<Date/>
<Attachments>
<Attachment>
<Href/>
<FileName/>
<FileType/>
<FileCreateDate/>
<FileSize/>
</Attachment>
</Attachments>
</Body_Data>
</ns1:TransactionalData_ECC>
</ns0:Message1>
</ns0:Messages>
The Below is the payload I get in the runtime when I execute the proxy
<?xml version="1.0" encoding="utf-8" ?>
<nm:TransactionalData_ECC xmlns:nm="http://Softel.com/xi/SOFTEL_SC_PLANNING/GPEO/TransactionalData" xmlns:prx="urn:sap.com:proxy:FI0:/1SAI/TAS097D92A93F9E8143C96A:731">
<Header_Data>
<RecipientId>SOFTELINC</RecipientId>
<ControlNumber>0000000000000001</ControlNumber>
<MessageId />
<DocumentType>SoftelOrder</DocumentType>
<DateSent>20140119204641</DateSent>
</Header_Data>
<Body_Data>
<DocumentType>SoftelOrders</DocumentType>
<Version>1.0</Version>
<Date>20140119204641</Date>
<Attachments>
<Attachment>
<Href>Wi1234uKjYTmbx2{ReJ</Href>
<FileName>E2Open_Attachment_20140119204641</FileName>
<FileType>.txt</FileType>
<FileCreateDate>20140119204641</FileCreateDate>
<FileSize>200</FileSize>
</Attachment>
</Attachments>
</Body_Data>
</nm:TransactionalData_ECC>
Can somebody let me know where I am going wrong
Hello,
Where exactly u are getting message-root-tag error?
>>The Below is the payload I get in the runtime when I execute the proxy
BTW, at runtime PI will add messages/message1 node and split messages. So don't worry abt that.
Thanks
Amit Srivastava
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Amit,
I am not sure where exactly the error is happening in the Message mapping or in the XSLT mapping. But one thing I observed is when I remove the XSL mapping or change anything in the mapping then I get the error "Integration Engine: general Error" with the description "Use case DUPLICATE_CONTENT_IDS not recognized". If I use the XSL then the error changes to "Mapping: General Error" with the description "Messages Root-tag".
Regards,
Santosh
Hello,
Did u test ur mapping locally? Paste below structure in OM and execute each mapping one by one.
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<nm:TransactionalData_ECC xmlns:nm="http://Softel.com/xi/SOFTEL_SC_PLANNING/GPEO/TransactionalData" xmlns:prx="urn:sap.com:proxy:FI0:/1SAI/TAS097D92A93F9E8143C96A:731">
<Header_Data>
<RecipientId>SOFTELINC</RecipientId>
<ControlNumber>0000000000000001</ControlNumber>
<MessageId />
<DocumentType>SoftelOrder</DocumentType>
<DateSent>20140119204641</DateSent>
</Header_Data>
<Body_Data>
<DocumentType>SoftelOrders</DocumentType>
<Version>1.0</Version>
<Date>20140119204641</Date>
<Attachments>
<Attachment>
<Href>Wi1234uKjYTmbx2{ReJ</Href>
<FileName>E2Open_Attachment_20140119204641</FileName>
<FileType>.txt</FileType>
<FileCreateDate>20140119204641</FileCreateDate>
<FileSize>200</FileSize>
</Attachment>
</Attachments>
</Body_Data>
</nm:TransactionalData_ECC>
</ns0:Message1>
</ns0:Messages>
Thanks
Amit Srivastava
Hello,
What's the sequence of mappings which u have used in OM? BTW, why u want to use xslt to split messages? It can be easily done by message mapping.
In addition to that, by looking ur error it seems that u are sending attachments also from proxy? If yes then check below note :1583745
Thanks
Amit Srivastava
Hi Amit,
The below is my Scneario
PROXY-->XI-->SOAP
Source Structure
<?xml version="1.0" encoding="UTF-8"?>
<ns0:TransactionalData_ECC xmlns:ns0="http://Softel.com/xi/SOFTEL_SC_PLANNING/GPEO/TransactionalData">
<Header_Data>
<RecipientId>1</RecipientId>
<ControlNumber>1</ControlNumber>
<MessageId>1</MessageId>
<DocumentType>1</DocumentType>
<DateSent>1</DateSent>
</Header_Data>
<Body_Data>
<DocumentType>1</DocumentType>
<Version>1</Version>
<Date>1</Date>
<Attachments>
<Attachment>
<Href>1</Href>
<FileName>1</FileName>
<FileType>1</FileType>
<FileCreateDate>1</FileCreateDate>
<FileSize>1</FileSize>
</Attachment>
</Attachments>
</Body_Data>
</ns0:TransactionalData_ECC>
SOAP WSDL Sturcture
<?xml version="1.0" encoding="UTF-8"?>
<AttachmentDescriptor>
<DocumentType>1</DocumentType>
<Version>1</Version>
<Date timezone="UTC" format="yyyyMMddhhmmss">1</Date>
<Attachments count="1">
<Attachment>
<FileData>
<Include href="1"/>
</FileData>
<FileName>1</FileName>
<FileType>1</FileType>
<FileCreateDate timezone="UTC" format="yyyyMMddhhmmss">1</FileCreateDate>
<FileSize uom="byte">1</FileSize>
</Attachment>
</Attachments>
</AttachmentDescriptor>
Expected Result
The expected result is to add a header to the above WSDL structure
That is why I have created a separate message type & having 2 different operations for a single Service interface. There I am doing a graphical mapping between the source & both the targets then having XSL code in place to add the SOAP envelope & remove the message tags.
I also have User-defined function for fetching the Message-ID at the run time & passing to the target structure in order get the desired result. The Desired result is as below.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<MessageFormat>1<MessageFormat>
<SenderId>1</SenderId>
<RecipientId>1</RecipientId>
<ControlNumber>1</ControlNumber>
<MessageId>1</MessageId>
<DocumentType>1</DocumentType>
<DateSent timezone="UTC" format="yyMMDDhhmmss">1</DateSent>
<PayloadType>1</PayloadType>
<Version>1</Version>
</PayloadDescriptor>
</SOAP-ENV:Header>
<DocumentType>1</DocumentType>
<Version>1</Version>
<Date timezone="UTC" format="yyMMDDhhmmss">1</Date>
<Include href=”1"/>
</FileData>
<FileName>1</FileName>
<FileType>1</FileType>
<FileCreateDate timezone="UTC" format="yyMMDDhhmmss">1</FileCreateDate>
<FileSize uom="byte">1</FileSize>
</Attachment>
</Attachments>
</AttachmentDescriptor>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Hello,
>>There I am doing a graphical mapping between the source & both the targets then having XSL code in place to add the SOAP envelope & remove the message tags.
I didn't get this point? Why u are u doing mapping for 2 different targets?
If i understood ur post correctly, proxy will send a message to PI (having header and body data) and then PI has to send the same (after adding few more fields) in soap envelope format to receiver system.
So if that's the case, then u can create a intermediate structure like this in PI:
<MT_Intermediate>
<MessageFormat>1<MessageFormat>
<SenderId>1</SenderId>
<RecipientId>1</RecipientId>
<ControlNumber>1</ControlNumber>
<MessageId>1</MessageId>
<DocumentType>1</DocumentType>
<DateSent timezone="UTC" format="yyMMDDhhmmss">1</DateSent>
<PayloadType>1</PayloadType>
<Version>1</Version>
</PayloadDescriptor>
<DocumentType>1</DocumentType>
<Version>1</Version>
<Date timezone="UTC" format="yyMMDDhhmmss">1</Date>
<Include href=”1"/>
</FileData>
<FileName>1</FileName>
<FileType>1</FileType>
<FileCreateDate timezone="UTC" format="yyMMDDhhmmss">1</FileCreateDate>
<FileSize uom="byte">1</FileSize>
</Attachment>
</Attachments>
</AttachmentDescriptor>
</MT_Intermediate>
So ur flow in OM will be:
a) Fisrt Message mapping between: Source ---> MT_Intermediate
b) Second XSLT mapping (for adding soap envelope): MT_Intermediate --- Target
Correct me if i misunderstood u?
Thanks
Amit Srivastava
Hi Amit,
I have another issue in the attachment. Now the attachment & the payload are flowing nicely to the webservice but there they are having a parsing issue. The reason what causes parsing error at their end is the sequence of attachment & payload being sent by XI.
The current sequence of payload & attachment is
1. Attachment
2. MainDocument(Payload)
Rather the way it's expected is
1. MainDocument
2. Attachment
I have already created a new thread for this requirement, if you can help me here then you can reply to the below thread
Just a quick question, how do I check wheather SAP has really added the Messages & Message1 Tag to the message
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
While doing testing at message mapping level you need to explicitly add the additional namespace tags ns0 & ns1 ..or in other way use the generated sample test message as is and place your payload as per the namespaces generated...where as runtime this will be taken care automatically you need to pass the xml message in normal way i.e. no need to add the additional namespace messages..
Messages you pasted as is as per expected behavior only...
where exactly you are getting the error provide more info on that..
HTH
Rajesh
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Rajesh,
I am not sure where exactly the error is happening in the Message mapping or in the XSLT mapping. But one thing I observed is when I remove the XSL mapping or change anything in the mapping then I get the error "Integration Engine: general Error" with the description "Use case DUPLICATE_CONTENT_IDS not recognized". If I use the XSL then the error changes to "Mapping: General Error" with the description "Messages Root-tag".
Regards,
Santosh
User | Count |
---|---|
88 | |
10 | |
10 | |
9 | |
7 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.