cancel
Showing results for 
Search instead for 
Did you mean: 

Message Mapping issue in Multi-Mapping

Former Member
0 Kudos


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.

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/90dcc6f4-0829-2d10-b0b2-c892473f1...

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

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

Hi Amit,

    Yes I tested both the mappings locally in OM & it's working perfectly fine there. the error occurs when I try executing the proxy.

Regards,

    Santosh

Former Member
0 Kudos

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

Former Member
0 Kudos

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/">

 

<SOAP-ENV:Header>

  <PayloadDescriptor>

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

  <SOAP-ENV:Body>

  <AttachmentDescriptor>

  <DocumentType>1</DocumentType>

  <Version>1</Version>

  <Date timezone="UTC" format="yyMMDDhhmmss">1</Date>

  <Attachments count="">

  <Attachment>

  <FileData>

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

Former Member
0 Kudos

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>

<PayloadDescriptor>

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


  <AttachmentDescriptor>

  <DocumentType>1</DocumentType>

  <Version>1</Version>

  <Date timezone="UTC" format="yyMMDDhhmmss">1</Date>

  <Attachments count="">

  <Attachment>

  <FileData>

  <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

Former Member
0 Kudos

Hi Amit,

    First let me thank you, for taking out so much time for me. I will just try out the solution what you suggested just now & I will get back.

regards,

  Santosh

Former Member
0 Kudos

Seems to be working for me.. thanks Amit. Appreciate your help

Former Member
0 Kudos

I am sure u don't want to mark ur reply as the correct answer?

Former Member
0 Kudos

In A hurry I marked my own reply as correct , now changing it

Former Member
0 Kudos

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

http://scn.sap.com/thread/3486032

Answers (2)

Answers (2)

Former Member
0 Kudos

Just a quick question, how do I check wheather SAP has really added the Messages & Message1 Tag to the message


Muniyappan
Active Contributor
0 Kudos

Hi santosh,

i think you can not see it in the message monitoring as it happens in the runtime.

you can test the same in test configuration in ID if you are in dual stack.

like without giving Message1 tags.

but still no way to see those tags.

Regards,

Muniyappan.

Former Member
0 Kudos

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

Former Member
0 Kudos

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