Message Splitting in ABAP Mapping

Hi Everybody,
I have Implemented ABAP mapping in  my Scenario and have used message splitting. That is for each header node of source corresponding number of target nodes should be created.I have a source node under which i have 5 subnodes and when this source node repeats again i need to generate two target nodes with 5 subnodes in each of the target header node.
I have tested the scenario in SXI_MAPPING_TEST by making the following changes in IR and ID.
1. Changed the cardinality to 0 to unbounded in Interface mapping.
2. Have kept the Interface determination type to Enchanced.
I am getting the ERROR" split mapping created no messages" in sxi_mapping_test.
Can anyone help me out on this.Good answers will be rewarded.
Thanks all,
Zabiulla

Prabhu,
what needs to rely on Java stack is the adapter, not the mapping.
Mohammed,
make sure you create Messages/MessageX tags (with proper namespace) in your multimapping. Also, expect these tags in your input mapping.
You can get the exact Messages/Message1 tags (with the namespace) in a message mapping with multiple input or output messages. Create it and go to test tab, just to check the tags you should read/create in your abap mapping.
Regards,
Henrique.

Similar Messages

  • Multi-Message-split with ABAP mapping and adapter specific attributes

    Hi all,
    With <b>ABAP-Mapping I split 1 message to n messages</b>.
    So many files are generated in <b>file-Adapter</b>.
    Everything fine.
    But now I want the file names different using adapter specific attributes.
    It is not possible to use variable substitution and write the file name in payload because of receiver restrictions.
    I tried this with following similar coding in ABAP-Mapping:
    data: lt_records TYPE MPP_DYNAMIC_TAB.
          Loop.
          l_file_name = "payload-Inbound"-information
          ls_record-namespace = 'http://sap.com/xi/XI/System/File'.
          ls_record-name = 'FileName'.
          ls_record-value = l_file_name.  "l_file_name comes from inbound-payload
          append ls_record to lt_records.
         Endloop.
      CALL METHOD dynamic_configuration->set_all_records
        EXPORTING
          records = lt_records.
    If I start the interface I see in the monitoring the dynamic configuration with many entries for file-name in the the SOAP-Header mapping of the request message (following extract):
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Mapping der Request-Message
      -->
    - <SAP:DynamicConfiguration xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Record namespace="http://sap.com/xi/XI/System/File" name="FileName">BPAADDRESS.XML</SAP:Record>
      <SAP:Record namespace="http://sap.com/xi/XI/System/File" name="FileName">BPABROKERROLE.XML</SAP:Record>
      <SAP:Record namespace="http://sap.com/xi/XI/System/File" name="FileName">BPACOMPANYSEGMENT.XML</SAP:Record>
      <SAP:Record namespace="http://sap.com/xi/XI/System/File" name="FileName">BPACUSTOMERROLE.XML</SAP:Record>
    The result is that <b>all files have the same file name</b> (last entry in dynamic configuration).
    Is it possible to write the adapter specific configuration in ABAP-mapping <u>for every single result message</u>??
    Thank you for your help,
    Florian

    Hi Florian,
    I've a different idea...I dont think its a "right solution" but just another work around..it involves a BPM...
    In your ABAP mapping..set the dynamic config with as many variables as number of different messages...i.e. use the variables like 'FileName1', 'FileName2'...'FileName6' instead of 'FileName'. But use the same namespace 'http://sap.com/xi/XI/System/File'
    Call the above mapping in a BPM and capture the individual messages and set the attribute 'FileName' from the values of 'FileName1' to 'FileName6' accordingly using Message Mapping and then send the message using the 'Send' step.
    before you try this, try using the variable names 'FileName1' ...'FileName6' in the receiver adapters...enable the ASMS. <b>I know we need to select which variables from the dynamic config to be used by the adapter by specifically selecting 'FileName', 'Directory' etc...but just give it a try and see if it works..</b>
    Or..instead of using a BPM..you can combine Henrique's idea...use Adapter module to set the value for 'FileName' from variables 'FileName1'...'FileName6' accordingly.
    hope I'm clear..lemme know if you have any questions..
    cheers
    praveen

  • 1:n Message split and Abap Proxies??

    Hello,
    Can I not use Message split and Abap Proxy together? My scenario is MDM->File ->XI->Proxy->BI.
    I am getting a single file syndicated from MDM and in XI If I use message mapping to do 1:n split in the message mapping, can I use it with Abap Proxies? As per the link below, XI adapter is not present in the list..We are on PI 7.0 SP14. Thank you..
    http://help.sap.com/saphelp_nw04/helpdata/en/42/ed364cf8593eebe10000000a1553f7/frameset.htm
    Thank you for any suggestion..

    Hi Thanujja,
    If you see the message from Raj, I dont think we can split the messages for the proxy. This is beacause the splitting of messages take place at the Adapter Level only for the adapters on the Java stack.
    As suggested by Guru, you can try splitting the messages in the inbound proxy instead of using a BPM, in that way you can acheive good performance.
    Thanks,
    Srini
    Edited by: srinivas kapu on Mar 27, 2008 9:09 AM
    Edited by: srinivas kapu on Mar 27, 2008 9:10 AM

  • Message Split Comes Before Mapping

    Hi,
    Can anybody explains the following queries....
    1.Why Message Split Comes Before Mapping in Pipeline Steps?
    2.What do you mean by Collaborative Profile and Collaborative Agreement?
    3.What are Context Path, Context Object and Context Handling?
    4.Which adpaters run on j2ee engine and which run on ABAP stack.
    5.What is the need of datatype when we are creating the message type
    6. and similarly what is the use of Business system when we are creating the corresponding Technical system
    Thanks n Advance.,
    Stallin

    >>1.Why Message Split Comes Before Mapping in Pipeline Steps?
    Simple. Imagine you have 2 receivers with different mappings. If this has to work correct, XI needs to copy of the source msg for doing the mapping. rite?
    >> 2.What do you mean by Collaborative Profile and Collaborative Agreement?
    Collaborative profile -->Serivce with out party and service and all the commn channels you create for it.
    Collaborative agreement -->Sender & Receiver agreements, that bind your cc with the interface.
    >> 3.What are Context Path, Context Object and Context Handling?
    Context path- It is Xpath expressions I guess. It is used for specifying conditions in receiver determination and interface determination.
    Context Objects -- Used for the same.It reduces the complex Xpath expressions.
    >>4.Which adpaters run on j2ee engine and which run on ABAP stack.
    All adapters are part of j2ee frame work except IDOC and HTTP adapters. You dont need sender agreements for the 2.
    5.What is the need of datatype when we are creating the message type
    To get the valid XML structure.
    6. and similarly what is the use of Business system when we are creating the corresponding Technical system
    Tech systems -->Physical entiteis
    Buss Systems --> Logical entities.
    Regards,
    Jai Shankar
    Message was edited by:
            Jai Shankar

  • Change Adapter Specific Message Attributes with ABAP Mapping

    Hi everyone,
    I have an IDOC -> PI -> File scenario and I need the file name to be a combination of several fields of the file so variable substitution is quite complicated. I have been reading about Adapter Specific Message Attributes and since the File name is one of those attributes I think maybe I can use it. The only thing is that I'm using ABAP mapping. Can I set the file name in that way? Has anyone done it?
    Thank you for your help.
    Regards,
    Pablo

    I found it myself:
      DATA: l_dyn_record      TYPE mpp_dynamic.
          l_dyn_record-namespace = 'http://sap.com/xi/XI/System/File'.
          l_dyn_record-name = 'FileName'.
          l_dyn_record-value = w_nombrearch.
          dynamic_configuration->add_record( l_dyn_record ).
    Thanks anyway.

  • Message splitting using java mapping and BPM

    Hi all,
    I have a PLAIN FILE to IDOC Scenario.
    We decide to use javamapping instead of message mapping because we have several hierachical structures.
    We has more than one IDOC for file. And the mapping it's unable to detect the another header and create it at XI.
    I had seen:
    /people/michal.krawczyk2/blog/2005/12/04/xi-idoc-bundling--the-trick-with-the-occurance-change
    "XI: IDOC bundling - the "trick" with the occurance change"
    But the problem it's we doesn't use mapping programs, so we can't apply to this case.
    So now i need to create a BPM scenario for resolve this issue. Anyone knows any example for split the income message and send any idocs to destination?
    Thanks in advance,

    IT WORKED !!!!
    The only thing it's at out code line we must improve it in another way.
    For everyone who needs to resolve, i copy the code line of the java mapping program.
    The relationship is from the specific mapping for every scenary calling GenToHierMap.
    0.0.0.0.0.0.0.0.0.0.0.0.1. GENERIC PACKAGE (GenToHierMap)
    0.0.0.0.0.0.0.0.0.0.0.0.2.
    package com.sap.javaMapping;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Map;
    import java.util.Vector;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.Text;
    import com.sap.aii.mapping.api.StreamTransformation;
    public class GenToHierMap
         private Element root, idoc;
         private Element nodeArrayRef[];
         private String nodeArrayTagName[];
         private Relation  rel ;
         private int  stack_count ;
         private String nameSpace;
         private String separator="#!";
         protected String msgName;
         GenToHierMap(InputStream in, OutputStream out,Vector v1,String msgName1,String nameSpace1)
         msgName = msgName1;
         nameSpace = nameSpace1;
         rel = new Relation(v1);
         execute(in,out);
        public void execute(InputStream in, OutputStream out)
              Element e ;
              Relation cur_rel;
              DOMSource domS = null;
              Element keyNodeParent;
              //int numdocs;
              try
                           DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                           factory.setNamespaceAware(true);
                             TransformerFactory tf = TransformerFactory.newInstance();
                             Transformer transform = tf.newTransformer();
                             // Create DOM structure from input XML
                             DocumentBuilder builderel = factory.newDocumentBuilder();
                             Document docIn = builderel.parse(in);
                            NodeList rows = docIn.getElementsByTagName("ROW");
                            nodeArrayTagName = new String[rows.getLength() + 1];
                            nodeArrayRef = new Element[rows.getLength() + 1];
                             Document docOut = builderel.newDocument();
                             root = docOut.createElement(msgName);
                             docOut.appendChild(root);
                             //idoc = docOut.createElement("IDOC");
                             //root.appendChild(idoc);     
                            //Número de documents inicialitzat a 0
                            //numdocs=0;
                            //Per cada filera ROW
                       for (int count=0;count<rows.getLength();count++)
                                  String dataRecord = "";
                                  Node node = rows.item(count);
                                  node = node.getFirstChild();
                                  dataRecord = node.getNodeValue();
                                  String fieldValue [] = dataRecord.split(separator);
                                  //Cada cop que es troba una nova capçalera es crea un nou document.
                                  //Això permet que hi hagi més d'un IDOC per missatge processat.
                                  if (Integer.valueOf(fieldValue[0]).intValue()==1){
                                       //numdocs = numdocs + 1;
                                       //if (numdocs > 1){
                                            //Es dona sortida al document anterior abans de crear-ne un de nou - BE AWARE BECAUSE IN THE NEXT LINES WE DEFINE THE UNBOUNDED IDOC ATTRIBUTE, WITH BEGIN = 1 ****
                                            //transform.transform((domS),new StreamResult(out));
                                            //docOut = builderel.newDocument();
                                            //root = docOut.createElement(msgName);
                                            //docOut.appendChild(root);
                                            idoc = docOut.createElement("IDOC");
                                            idoc.setAttribute("BEGIN","1");
                                            root.appendChild(idoc);     
                                  cur_rel = (Relation) rel.v.get(Integer.valueOf(fieldValue[0]).intValue());                    
                                  String keyId = cur_rel.node;
                                  keyNodeParent = searchNode(keyId);
                                  nodeArrayTagName[count] = keyId;
                               e = docOut.createElement(keyId);
                                  e.setAttribute("SEGMENT",fieldValue[0]);
                               nodeArrayRef[count]= e;
                              keyNodeParent.appendChild(e);
                              createXmlTree(docOut,e,keyId,fieldValue);
                              domS = new DOMSource(docOut);
                              stack_count = stack_count + 1;
                         transform.transform((domS),new StreamResult(out));
           catch (Exception t)
                  t.printStackTrace();
    return;
    //returns the parent of the given node
    private Element searchNode(String keyId)
         Relation cur_rel;
         for (int i=0;i<rel.v.size();i++)
              cur_rel = (Relation) rel.v.get(i);
              if (cur_rel.node.equals(keyId))
                     for (int j=0;j<cur_rel.parents.length;j++)
                              if (cur_rel.parents[j].equals("NULL")) return root;
                              if (cur_rel.parents[j].equals("IDOC")) return idoc;
                               for (int k=(stack_count-1);k>=0;k--)
                                   for (int p=0;p<cur_rel.parents.length;p++)
                                       if (nodeArrayTagName[k].equals(cur_rel.parents[p]))
                                       return nodeArrayRef[k];
    return null;
    //Creates all the elements of the given node
    private void createXmlTree(Document docOut,Element node,String keyId, String fieldValue[])
          Element tagName;
          Text tagValue;
          Relation cur_rel;
          for (int i=0;i<rel.v.size();i++)
                     cur_rel = (Relation) rel.v.get(i);
                     if (cur_rel.node.equals(keyId))
                        for (int j=1;j<cur_rel.elements.length;j++)
                           tagName = docOut.createElement(cur_rel.elements[j]);
                           node.appendChild(tagName);
                           if ( j < fieldValue.length  && fieldValue[j].length() != 0 )
                           if ( fieldValue[j].substring(0,1).equals("""))
                           if ( fieldValue[j].length() > 2 )
                           fieldValue[j] = fieldValue[j].substring(1,( fieldValue[j].length() - 1 ));
                           else
                           fieldValue[j] = new String ();
                           if ( j >= fieldValue.length )
                           tagValue = docOut.createTextNode(new String());
                           else
                           tagValue = docOut.createTextNode(fieldValue[j]);
                           tagName.appendChild(tagValue);
                        return;
    //Main thread of execution
    0.0.0.0.0.0.0.0.0.0.0.0.1. SPECIFIC ONE
    0.0.0.0.0.0.0.0.0.0.0.0.2.
    package com.sap.javaMapping;
    * Mapping Program to Convert NOM IDOC Master Structure to the Generic structure Expected by
    * the FTP Receiver adapter
    import com.sap.aii.mapping.api.*;
    import java.io.*;
    import java.util.Map;
    import java.util.Vector;
    import javax.xml.parsers.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.*;
    import org.xml.sax.*;
    //Specify the Hirearchial Structure
    public class INT938_mapping implements StreamTransformation
         public Vector v;
        private Map map;
        /** * method setParamters is required, but we do not anything with it */
         public void setParameter(Map param)
              map = param;
         } /** * method execute is called by the XI mapping program */
    public void buildXsd()
      Relation  mriRel ;
      v = new Vector();
      /* INICI MODIFICACIÓ ESTRUCTURA DE SORTIDA DEL MAPPING */
      // --> TOCAR AQUEST NODE IMPLICA MODIFICAR EL CÒDI!!!
      mriRel = new Relation();
      mriRel.parents = new String[1];
      mriRel.node =  "IDOC" ;
      mriRel.parents[0] =   "NULL" ;
      v.add(mriRel) ;
      /* ESTRUCTURA DEL IDOC DE SORTIDA */
      //NODE - 01
      mriRel = new Relation();                          
      mriRel.parents = new String[1];                                                    
      mriRel.elements = new String[22];                                                                 
      mriRel.node = "E1BPEBANC";                                    
      mriRel.parents[0]   =   "IDOC";                                              
      mriRel.elements[0]  =   "SEGMENT";   
      mriRel.elements[1]  =   "PREQ_ITEM"; 
      mriRel.elements[2]  =   "DOC_TYPE";  
      mriRel.elements[3]  =   "PUR_GROUP"; 
      mriRel.elements[4]  =   "CREATED_BY";
      mriRel.elements[5]  =   "PREQ_NAME"; 
      mriRel.elements[6]  =   "PREQ_DATE"; 
      mriRel.elements[7]  =   "SHORT_TEXT";
      mriRel.elements[8]  =   "MATERIAL";  
      mriRel.elements[9]  =   "PLANT";     
      mriRel.elements[10] =   "STORE_LOC";
      mriRel.elements[11] =   "TRACKINGNO";
      mriRel.elements[12] =   "MAT_GRP";   
      mriRel.elements[13] =   "QUANTITY";  
      mriRel.elements[14] =   "UNIT";      
      mriRel.elements[15] =   "DELIV_DATE";
      mriRel.elements[16] =   "ACCTASSCAT";
      mriRel.elements[17] =   "DES_VENDOR";
      mriRel.elements[18] =   "PURCH_ORG"; 
      mriRel.elements[19] =   "BATCH";     
      mriRel.elements[20] =   "VEND_MAT";  
      mriRel.elements[21] =   "CURRENCY";
      v.add(mriRel) ; 
      //NODE - 02
      mriRel = new Relation();                                   
      mriRel.parents = new String[1];                                                    
      mriRel.elements = new String[2];                                                                  
      mriRel.node = "Z1SOLCOM";                                    
      mriRel.parents[0]  =   "E1BPEBANC";                                                     
      mriRel.elements[0] =   "SEGMENT";  
      mriRel.elements[1] =   "ZPO_NUMBER";
      v.add(mriRel) ;
      //NODE - 03
      mriRel = new Relation();                                   
      mriRel.parents = new String[1];                                                    
      mriRel.elements = new String[3];                                                                 
      mriRel.node = "E1BPEBKN";                                    
      mriRel.parents[0]  =   "IDOC";                                                   
      mriRel.elements[0] =   "SEGMENT";
      mriRel.elements[1] =   "PREQ_ITEM";   
      mriRel.elements[2] =   "COST_CTR";
      v.add(mriRel) ;
      //NODE - 04
      mriRel = new Relation();                                   
      mriRel.parents = new String[1];                                                    
      mriRel.elements = new String[8];                                       
      mriRel.node = "Z1SOLRES";                                    
      mriRel.parents[0]  =   "E1BPEBKN";                                                   
      mriRel.elements[0] =   "SEGMENT";            
      mriRel.elements[1] =   "DADES_PACIENT";      
      mriRel.elements[2] =   "NOHIS";              
      mriRel.elements[3] =   "ZNINTER";            
      mriRel.elements[4] =   "ZFEIMP";             
      mriRel.elements[5] =   "NMPAC";              
      mriRel.elements[6] =   "ZNLOTE";             
      mriRel.elements[7] =   "ZNSERIE";            
      v.add(mriRel) ;
      /* FI    MODIFICACIÓ ESTRUCTURA DE SORTIDA DEL MAPPING */
    public void execute(InputStream in, OutputStream out) throws com.sap.aii.mapping.api.StreamTransformationException
         INT938_mapping rel = new INT938_mapping();
         rel.buildXsd();
         new GenToHierMap(in,out,rel.v,"ZPREEX01","http://namespace1/namespace");
    public static void main (String[] args) throws Exception
              try
                   INT938_mapping rel = new INT938_mapping();
                   FileInputStream in = new FileInputStream ("C:/DOM_IN.xml");
                   FileOutputStream out = new FileOutputStream ("C:/DOM_OUT.xml");
                   rel.buildXsd();
                   new GenToHierMap(in,out,rel.v,"ZPREEX01","http://namespace1/namespace");
              }catch(Exception e) {e.printStackTrace();}
    //Transformation of flat structure to hirearchial structure
    Any issue you can contact me. Best regards and reward points !

  • Message split - XML to IDOCs - (1:n) mapping

    I have to split an incoming XML(in idoc DEBMDM format) from MDM to 2 Idocs (ADRMAS & DEBMAS).
    Target message set to occurences "0:unb".
    Have tested my graphical-mapping in IR and its working fine. Tested the configuration and got error in IB.
    In SXMB_MONI i find the error message,
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="OUTBINDING">CO_TXT_MMF_ENGINETYPE</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Messages in multi-message format can only be sent to one Adapter Engine</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Read in few threads about creating a "custom adapter module"...is this right? if so.... how to proceed ?
    Appreciate any help.

    Ram,
    Message Split using Graphical Mapping that ur using now supports adapter which are on same J2EE engine .
    In ur case Ur trying to post IDOCS ( I suppose ) which is not
       supported in using Graphical mapping.
    U need to change the design.
    -- Kavitha

  • ABAP mapping split messages and dynamic filename

    Hello,
    i have set up a IDOC to file scenario where the IDOC is split into several files, which works fine. In addition to this it is required to set a dynamic filename out of the ABAP mapping for each file. If only one file is created this works already as well but how do you set the dynamic configuration when the messages are split?
    Regards,
    Andreas
    Edited by: Andreas on Feb 26, 2009 9:09 AM

    you cannot do dynamic configuration for message splits. The below is from SAP help.
    Adapter-Specific Attributes and Multi-Mappings
    In multi-mappings, there are multiple message headers with adapter-specific attributes. The mapping API can only access one message header. This has the following consequences depending on whether there are multiple source or target messages:
    u25CF     1:n Transformation
    If there are multiple target messages, the header for the adapter-specific attributes is copied for each message. This means that you can only create one header for all adapter-specific attributes, and not individual headers.
    u25CF     n:1 Transformation
    This variant is only possible for multi-mappings in integration processes. If there is more than one source message, read-access to the adapter-specific attributes of the various message headers is not possible at runtime.
    u25CF     m:n Transformation
    All afore-mentioned restrictions apply here. Developers can at most write the same adapter-specific attributes for all target messages to the header, without read-access to the attributes of the source messages. m:n transformations are only supported within integration processes.
    What i will suggest is to use BPM to have the message split i.e 1:N mapping and then after that have another mapping 1-1 to have the dynamic configuration

  • Message split ABAP mapping

    Hello everybody,
    for a special mappging I use ABAP mapping -everything fine.
    But I need to split the message with ABAP mapping.
    Does anybody know if this is possible ?
    In the ABAP-class I use the interface IF_MAPPING. This has as a result parameter the parameter RESULT Type XSTRING (no table).
    It only works to add to XMLs in 1 XML string, but my result have to be 2 XML files.
    Alternatively would it be an idea to use multi message mapping (graphical first) AND then ABAP-mapping for special mappings?
    Thanks a lot,
    Florian

    Florian,
    for multimappings in coded mappings (xslt, java and abap mappings) you'll also create a single stream, but in this case, the stream may have the following format:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
        <b><enter your first message here></b>
    </ns0:Message1>
    <ns0:Message2>
        <b><enter your second message here></b>
    </ns0:Message2>
    </ns0:Messages>
    where <ns0:MessageX> tags refer to each different target message type.
    In the case you have a 1:n split, you'll have only 1 message type, but may have several messages within it.
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
        <b><My_message id=1></b>
        <b></My_message></b>
        <b><My_message id=2></b>
        <b></My_message></b>
    </ns0:Message1>
    </ns0:Messages>
    Also, remember that, when you define an interface mapping as multimapping (meaning, you set either source, target or both interfaces to multiple messages, your input stream will also contain the <ns0:Messages> and <ns0:MessageX> tags, so you need to treat them in your mapping program.
    Regards,
    Henrique.

  • Help on message split ABAP MAPPING

    Hi friends
    I need to split a message by abap mapping , I am having problem while creating the tag Messages and Message1.
    the mapping is going into error Comparison error during the execution of a simple
    it is turned up to be the issue of <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge"><ns0:Message1> not being created correct
    I am using this code
    CALL METHOD l_document->create_simple_element_ns
          EXPORTING
            name   = 'Messages'
            parent = l_document
    *u2022PREFIX = ''
    *u2022URI = ''
    *u2022VALUE = ''
          RECEIVING
            rval   = Messagesnode.
    CALL METHOD l_document->create_simple_element_ns
          EXPORTING
            name   = 'Message1'
            parent = MESSAGESNODE
    *u2022PREFIX = ''
    *u2022URI = ''
    *u2022VALUE = ''
          RECEIVING
            rval   = Message1node.
    any help wil do
    Thanks

    No answer
    Thanks

  • Mapping - message split

    Hi all,
    I need a little bit help with message splitting.
    I have message structure like below. The Error Node exists in all rows, in first part it is initial (with no value), then come rows with different error messages.
    <Message1>
      <Row>
        <node1>a</node1>
        <node2>a</node2>
        <Errror/>
      </Row>
      <Row>
        <node1>a</node1>
        <node2>a</node2>
        <Errror/>
      </Row>
      <Row>
        <node1>a</node1>
        <node2>a</node2>
        <Errror>text_a</Errror>
      </Row>
      <Row>
        <node1>a</node1>
        <node2>a</node2>
        <Errror>text_b</Errror>
      </Row>
    </Message1>
    I need to split it into 2 messages so, that in first message will be rows without error, and in the second with. 
    <Message1>
      <Row>
        <node1>a</node1>
        <node2>a</node2>
      </Row>
      <Row>
        <node1>a</node1>
        <node2>a</node2>
      </Row>
    </Message1>
    <Message2>
      <Row>
        <node1>a</node1>
        <node2>a</node2>
        <Errror>text_a</Errror>
      </Row>
      <Row>
        <node1>a</node1>
        <node2>a</node2>
        <Errror>text_b</Errror>
      </Row>
    </Message2>
    Is this feasible with graphical mapping? How can I can make the assignment of the row once to first and
    other time to second message? Or do I have to use XSLT/ABAP? (I am not very familiar with java...) Thanks for any suggestions.

    Hello,
    Prateek, Jude,
    I think you did not get the point.When I map it just in the simple way it will look like this:
    Input rows:
    1 - no error
    2 - no error
    3 - error
    4 - error
    5 - error
    Output
    Message1 rows:
    1,2,3,4,5
    Message2 rows:
    1,2,3,4,5
    I will have 10 rows in output (I want to have just 5 and in this way M1-1,2; M2-3,4,5).
    Udo,
    I have tried already this approach. However it does not work as desired.
    I have mapped:
    Error node -> not -> exists -> if
    Input_message_Row -> then
    output -> Output_message1_Row
    Error node -> exists -> if
    Input_message_Row -> then
    output -> Output_message2_Row
    However the decision is made on the first row, and the first row is mapped also to second message, and that is all. The next rows are not considered at all:
    Input:
    <ns0:Messages xmlns:ns0=...>
       <ns0:Message1>
          <ns1:MT...>
             <Row>
                <test1>11</test1>
                <Errror/>
             </Row>
             <Row>
                <test1>111</test1>
                <Errror/>
             </Row>
             <Row>
                <test1>111bb</test1>
                <Errror/>
             </Row>
             <Row>
                <test1>11a</test1>
                <Errror>a</Errror>
             </Row>
             <Row>
                <test1>11axx</test1>
                <Errror>axx</Errror>
             </Row>
          </ns1:MT...>
       </ns0:Message1>
    </ns0:Messages>
    Output:
    <ns0:Messages xmlns:ns0=...>
       <ns0:Message1>
          <ns1:MT...>
             <Row>
                <test1>11</test1>
             </Row>
          </ns1:MT...>
       </ns0:Message1>
       <ns0:Message2>
          <ns1:MT2...>
             <Row>
                <test1>11</test1>
                <Errror/>
             </Row>
          </ns1:MT2...>
       </ns0:Message2>
    </ns0:Messages>

  • Multi-Mapping Message Split 1:n

    Hi experts,
    I have a few questions regarding a multi-mapping for a 1:n message split. I have a business process which collects IDOCs from a specific IDOC type (ZHINVOIC01).
    I have a 1-to-1 Mapping for collecting the IDOCs.
    After this 1-to-1 Mapping the IDOC has the following structure:
    xdoc has the occurrence 0..unbounded
    For every IDOC in the source structure one xdoc in the target structure should be created. My Mapping works very fine, but I have one question. If there are more IDOC-Elements in the source structure, I have more xdoc-Elements in the target structure. But I do not want to have one target-message. the mapping should create one file with the element xdoc for every IDOC element in the source structure.
    I want to send a xml-file for each xdoc-element to a ftp-server. is that possible?
    Thanks and best regards
    Christopher Kühn

    Hi Udo,
    look at my example above:
    for the source structure
    <Messages>
       <Message1>
          <ZHINVOIC01>
             <IDOC/>
             <IDOC/>
             <IDOC/>
          </ZHINVOIC01>
       </Message1>
    </Messages>
    I have the following target structure:
    <Messages>
       <Message1>
          <xdoc/>
          <xdoc/>
          <xdoc/>
       <Message1>
    <Messages>
    now the target structure is only one message, isn't it?
    But I want to have for this case 3 Messages each with only one xdoc-element.
    I hope that we are not talking at cross-purposes
    Thanks and best regards
    Christopher

  • Multi-Mapping and Message Split using BPM

    Hi All,
    Could anyone pls let me know clearly how message mapping can be done for this weblog
    /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    Thanks,
    Ram

    Hi,
    When you are doing Message mapping after adding the Messaget types for source and target messages. You can click on the "" button in the target message and add one more tab. You can go to Message tab as shown in the 5th image and click "" button to add one more message type. Then do the mapping as usual.
    <b>Based on the value of the element(name), the node of input(details)should be directed to one of the two message types</b>
    Here in this blog it is done based on the Name.
    You need to use IFTHENELSE boolean function and do the mapping.
    Thanks,
    Prakash

  • Reading attachment in SOAP message with ABAP mapping

    I am searching an ABAP code to read attachment in sender SOAP message..
    I am using PI 7.3, I can read by java mapping but I get another error after reading the attachment.. So I try to abap mapping..
    That's it..
    Thanx ..

    Hello Mark,
    1. My Soap Sender Adapter, I checked the Keep Attachment option
    2. I am getting the WSDL file from the SOAP Sender Agreement.. it is like http(s)://host:port/XISOAPAdapter/MessageServlet?channel=p:s:c? as you said.
    I used the user-defined function, it works when <inc:Include href="cid:test.jpg" xmlns:inc="http://www.w3.org/2004/08/xop/include" /> is deleted in the message.
    If the coming message includes <inc:Include href="cid:test.jpg" xmlns:inc="http://www.w3.org/2004/08/xop/include" />,
    the <null> error occurs.
    Thanx for your reply..

  • ABAP Mapping - Message shown in Standard Change List Process Log

    Hi
    I am working with ABAP Mapping program. I had created ABAP class using ABAP workbench. Before this, in exchangeProfile..data was provided for com.sap.aii.repository.mapping.additionaltypes ==>> as " R3_ABAP|Abap-class;R3_XSLT|XSL (ABAP Engine) " and 'Saved'.
    In Interface Mapping, after providing the Class Name under 'Mapping Program' and activated. After activation (Standard Change List), it is showing the following messages under 'Processing Log'.
    --> Standard Change List - Process Log message
    Activation of the change list canceled Check result for Interface Mapping IM_ABAP_MAPPING | http://ABAP_Mapping_SREE:  Type R3_ABAP of
    program ZSREETEST is invalid because it is not registered in the exchange profile . Check the values for the exchange profile parameter
    IntegrationBuilder.Repository.com.sap.aii.repository.mapping.additionaltypes
    --> End of Log message
    Can some one please guide me in resolving the ABAP mapping issue.
    Thanks in advance.
    ..Sree

    Sree,
    The log says that there is ABAP mapping included in your exchange profile. Do the things what michal have told and also check your mapping program whether working fine or not in SXI_MAPPING transaction.
    You can see this weblog for reference:
    /people/sameer.shadab/blog/2005/09/29/testing-abap-mapping
    ---Satish

Maybe you are looking for

  • Not able to login after configuring SSH.Please reply

    i have configured AAA on Cisco aeronet 1400 series wireless bridge (AIR-BR1410A-A-K9).After configuring i am not able to login to the device via telnet and via putty.Soon after enabling SSH i am not able to login even through SSH.The below are the co

  • Check Partner Authorisation--Quantity Contract

    Hi, I have created a quantity contract with Sold To Party ( Partner Function SP)as 100276 and Sold To Party for release Order (  Partner Function AA)as 1000 and 100276.   I have selected Check Partner Authorisation as A in contract definition in VOV8

  • Problem creating directory entry

    InitialLdapContext is created using INITIAL_CONTEXT_FACTORY = com.sun.jndi.ldap.LdapCtxFactory. The following call attempts to create an entry in the directory: context.createSubcontext("gid=BLANK,ou=ouname,dc=dcname", Attributes); In this scenario:

  • Adobe Acrobat Pro: Revoked

    The error mentioned above have been reported from a number of Adobe CS5 users. While Adobe Knowledge Base had addressed "Invalid Serial Number" error extensively- http://kb2.adobe.com/cps/506/cpsid_50651.html, yet above error is not discussed on KB n

  • Can you use ilife music on imovie videos to post on Facebook?

    I thought that it was safe to use the music/sounds that came with IMovie on videos and post them without copyright issues.  But when I tried to post one to Facebook they told me it was a copyright infringement, and are requiring me to dispute it.  Be