Multi-Mapping runtime issue

Hi, Friend:
We are using BPM to collect two type of message (Msg1 and Msg2) and map to target message (Msg3),
                          ------Receive1-------
Start --Fork(start)                            Fork(stop) ---Transformation--Send
                          ------Receive2-------
When we created all the messages from scratch, the process works, the process worked.
After we use external definition (xsd), it always fails on transformation step.
However,if we put the payload to test in message mapping, it success.
Any thoughts ?
Thanks
Liang

Hi, Praba:
We have tested in both multi-mapping, and also interface mapping by using the same payload the causes error in runtime, they are all fine.
The error happens on tranformation step: some nodes have very simple mapping like one to one, it can not create target node (see attached part of trace).
Once we change the complained node mapping from a constant value, the next test shows next target node can not be produced.
If the node is attribute, only required attribute complains, if the node is element, the node with min occurence of 1 complains
<?xml version="1.0" encoding="utf-8" ?>
- <MappingTrace>
  <Trace level="1" type="T">Mapping-Namespace:http://xmlfile2xmlfile</Trace>
  <Trace level="1" type="T">Mapping-Name:Im_PBC_Audit</Trace>
  <Trace level="1" type="T">Mapping-SWCV:64968F80768C11DCC184FCEB0A01071F</Trace>
  <Trace level="1" type="T">Mapping-Step:1</Trace>
  <Trace level="1" type="T">Mapping-Type:JAVA</Trace>
  <Trace level="1" type="T">Mapping-Program:com/sap/xi/tf/_PBC_Request_Response_AuditMapping_</Trace>
  <Trace level="3" type="T">Multi mapping required.</Trace>
  <Trace level="3" type="T">Creating Java mapping com/sap/xi/tf/_PBC_Request_Response_AuditMapping_.</Trace>
  <Trace level="3" type="T">Load 64968f80-768c-11dc-c184-fceb0a01071f, http://xmlfile2xmlfile, -1, com/sap/xi/tf/_PBC_Request_Response_AuditMapping_.class.</Trace>
  <Trace level="3" type="T">Search com/sap/xi/tf/_PBC_Request_Response_AuditMapping_.class (http://xmlfile2xmlfile, -1) in swcv 64968f80-768c-11dc-c184-fceb0a01071f.</Trace>
  <Trace level="3" type="T">Loaded class com.sap.xi.tf._PBC_Request_Response_AuditMapping_</Trace>
  <Trace level="2" type="T">Call method execute of the application Java mapping com.sap.xi.tf._PBC_Request_Response_AuditMapping_</Trace>
  <Trace level="1" type="T">RuntimeException during appliction Java mapping com/sap/xi/tf/_PBC_Request_Response_AuditMapping_</Trace>
  <Trace level="1" type="T">com.sap.aii.utilxi.misc.api.BaseRuntimeException: RuntimeException in Message-Mapping transformation: Cannot produce target element /ns0:Messages/ns0:Message1/ns1:BenefitEnrollment. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd
Thanks
Liang

Similar Messages

  • Java mapping runtime issue

    Hi,
    I have currently created a java mapping which unzips files and transforms plain text/falt files to xml according to a specific structure... So far so good. This stuff works perfectly when testing interface mapping in the repository. However at runtime it does not work, and this is where you clever guys come into the picture:-)
    It should be mentioned that the zip-file is dropped on a MQ-queue and picked up in XI and passed on to a BPM - the only thing the BPM does is to perform the java mapping and afterwards send one of the messages to R/3 and the other to CRM.
    The concrete error given at runtime in the PE is:
    Error handling for work item 000000718016
    Work item 000000718016: Object CL_SWF_XI_MSG_BROKER method CALL_TRANSFORMATION cannot be executed
    Parsing error before mapping: unexpected end-of-file (line 1, column 1)
    Hope somone can help me on this matter,
    Best regards,
    Daniel
    PS: In case it is of interest/use the java code used is this:
    package dk.post.xi.unzipAndConvert;
    import java.io.*;
    import java.util.Map;
    import java.util.HashMap;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import com.sap.aii.mapping.api.MappingTrace;
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import com.sap.aii.mapping.api.StreamTransformationException;
    public class UnzipMain implements StreamTransformation {
         private MappingTrace mappingTrace = null;
         private Map param = null;
         private StringBuffer currentXmlRecord = new StringBuffer();
        private StringBuffer currentPlainRecord = new StringBuffer();
        private int[][] dataRanges = null;
        private char[] charsInCurrentRange = new char[650];
         private String[] xmlTagNames = null;
         /* (non-Javadoc)
    @see com.sap.aii.mapping.api.StreamTransformation#setParameter(java.util.Map)
    Method must be implemented when class is implementing streamTransformation
           public void setParameter(Map param) {
            this.param = param;
            if (param == null) {
               this.param = new HashMap();
    (non-Javadoc)
    @see com.sap.aii.mapping.api.StreamTransformation#execute(java.io.InputStream, java.io.OutputStream)
    Main function -- called by XI to start execution of java mapping
           public final void execute(InputStream in, OutputStream out)
                throws StreamTransformationException
                //if no input, then cancel program execution
                if (in == null) {
                     throw new RuntimeException("Something wrong with input zip file - is null");
                //input <> null. Begin upzip operation
                try {
                     //test is only relevant outside of XI
                     if (param != null) {
                          mappingTrace = (MappingTrace) param.get(StreamTransformationConstants.MAPPING_TRACE );
                  ZipInputStream zip = null;
                     try {
                          zip = new ZipInputStream(in);
                          ZipEntry ze = null;
                          out.write("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><ns0:Messages xmlns:ns0=\"http://sap.com/xi/XI/SplitAndMerge\">".getBytes());
                          while ((ze = zip.getNextEntry()) != null) {
                               writeDebugInfo("File: " + ze.getName() + " with compressed size: " + ze.getCompressedSize());
                               scrutinize(zip,(ZipEntry) ze, out);
                          out.write("</ns0:Messages>".getBytes());
                     finally {
                          if (zip != null)
                               zip.close();
                          out.flush();
                          out.close();
                } catch (Exception e) {
                     throw new RuntimeException(e + "\nSomething went wrong...");
           //Unzip flat files and convert to xml
           private void scrutinize(ZipInputStream inStream,ZipEntry zipEntry, OutputStream outstream) throws Exception {
                long start = System.currentTimeMillis();
              InputStreamReader inStreamReader = null;
              BufferedReader buffReader = null;
              byte[] xmlBytes = null;
              try {
                   inStreamReader = new InputStreamReader(inStream);
                   buffReader = new BufferedReader(inStreamReader);
                 boolean masterData = zipEntry.getName().equals("PD-01-STAMDATA.DAT");
                 boolean creditData = zipEntry.getName().equals("PD-02-KREDITVURDERING.DAT");
                 String currentLine = null;
                 if (masterData) {
                      writeDebugInfo("- Begin reading and converting every line of MasterData...");     //out-comment this outside of XI, or compilation will fail (functionality is only available in XI)
                      outstream.write("<ns0:Message1><ns1:masterData_MT xmlns:ns1=\"http://pdk/xi/kob/importDataToSap\">".getBytes());
                        while ((currentLine = buffReader.readLine()) != null) {
                           //convert one line of credit data plain into an xml record structure
                           makeXmlRecord(currentLine,true);
                           //Write record XML to XI's outputstream (appends)
                           xmlBytes = currentXmlRecord.toString().getBytes();
                           outstream.write(xmlBytes);
                      outstream.write("</ns1:masterData_MT></ns0:Message1>".getBytes());
                      writeDebugInfo("- Finished reading and converting every line of MasterData...");     //out-comment this outside of XI, or compilation will fail (functionality is only available in XI)
                 if (creditData) {
                      writeDebugInfo("- Begin reading and converting every line of CreditData...");
                      outstream.write("<ns0:Message2><ns1:creditData_MT xmlns:ns1=\"http://pdk/xi/kob/importDataToSap\">".getBytes());
                      while ((currentLine = buffReader.readLine()) != null) {
                           //convert one line of credit data plain into an xml record structure
                           makeXmlRecord(currentLine,false);
                           //Write record XML to XI's outputstream (appends)
                           xmlBytes = currentXmlRecord.toString().getBytes();
                           outstream.write(xmlBytes);
                      outstream.write("</ns1:creditData_MT></ns0:Message2>".getBytes());
                      writeDebugInfo("- Finished reading and converting every line of CreditData...");
              } finally {
                   long timeUsed = System.currentTimeMillis() - start;
                   writeDebugInfo(zipEntry.getName() + "  - Write took: " + timeUsed + " ms");
                   writeDebugInfo("Final statement entered...\n");
           //check for invalid xml chars (plus a few other strange chars) in a plain text record and if any are found update the ranges of so they correspond to the new length of a record
           private int[][] checkRange(String currentPlainLine, boolean isMasterData) {
                int counter = 0;
                int beginRange = 0;
                int endRange = 0;
                //populate array with proper data ranges/intervals according to how data is to be split
                dataRanges = isMasterData ? new int[][] {{0,2},{2,12},{12,44},{44,47},{47,50},{50,295},{295,298},{298,356},{356,426},{426,496},{496,499},{499,506},{506,510},{510,518},{518,540},{540,546},{546,552},{552,558},{558,564},{564,570},{570,576},{576,582},{582,588},{588,594},{594,604}} : new int[][] {{0,2},{2,12},{12,20},{20,23},{23,26},{26,29},{29,44}};
                //ensure stringbuffer is empty
                currentPlainRecord.delete(0,currentPlainRecord.length());
                //insert the current plain text line into stringbuffer
                currentPlainRecord.append(currentPlainLine);
              //loop through outer array (array of ranges)
              for (int i = 0; i <= (dataRanges.length-1); i++) {
                   beginRange = dataRanges<i>[0];
                   counter = beginRange;
                   endRange = dataRanges<i>[1];
                   //loop through stringbuffer, based on the value-pairs of ranges/intervals in array of arrays
                   while (counter < endRange) {
                        switch (currentPlainRecord.charAt(counter)) {
                             case '&':
                                  currentPlainRecord.insert(counter+1,"amp;");          //insert 'amp;' after '&', so that syntax conforms to xml syntax requirements (&amp;)
                                  counter += 5;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,4);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '\'':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '\'' with '&'
                                  currentPlainRecord.insert(counter+1,"apos;");          //insert 'apos;' after '\'', so that syntax conforms to xml syntax requirements (&apos;)
                                  counter += 6;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,5);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '"':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '"' with '&'
                                  currentPlainRecord.insert(counter+1,"quot;");          //insert 'quot;' after '"', so that syntax conforms to xml syntax requirements (&quot;)
                                  counter += 6;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,5);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '<':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '<' with '&'
                                  currentPlainRecord.insert(counter+1,"lt;");               //insert 'lt;' after '&', so that syntax conforms to xml syntax requirements (&lt;)
                                  counter += 4;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,3);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case '>':
                                  currentPlainRecord.replace(counter,counter+1,"&");     //replace '>' with '&'
                                  currentPlainRecord.insert(counter+1,"gt;");               //insert 'gt;' after '&', so that syntax conforms to xml syntax requirements (&gt;)
                                  counter += 4;                                                   //increment counter so that it continues after insertet characters
                                  updateRange(counter,3);                                        //update the array of ranges so that is corresponds to the new range
                                  break;
                             case 0x7F:
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace 0x7F with ' '
                                  writeDebugInfo("-- Corrected the character 0x7F ('') to ' '");
                                  counter++;
                                  break;
                             case '‘':
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace 0x91 ('‘') with ' '
                                  writeDebugInfo("-- Corrected the character '‘' to ' '");
                                  counter++;
                                  break;
                             case '›':
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace 0x9B ('›') with ' '
                                  writeDebugInfo("-- Corrected the character 0x9B to ' '");                              counter++;
                                  break;
                             case '†':
                                  currentPlainRecord.replace(counter,counter+1," ");     //replace '†' with ' '
                                  writeDebugInfo("-- Corrected the character '†' to ' '");
                                  counter++;
                                  break;
                             default :
                                  counter++;
                                  break;
                return dataRanges;
           //update array of ranges so that is corresponds to the new range
           private void updateRange(int currentRange, int updateRangeBy) {
              for (int k = currentRange; k < dataRanges.length; k++) {
                   if (k != currentRange) {     //never update begin interval for the current range - only for the remaining intervals
                             dataRanges[k][0] += updateRangeBy;
                   dataRanges[k][1] += updateRangeBy;     //always update end intervals
           //convert one flat record line to a xml record structure
         private void makeXmlRecord(String currentPlainLine,boolean isMasterData) {
              dataRanges = checkRange(currentPlainLine,isMasterData);
              //clear StringBuffer
              currentXmlRecord.delete(0,currentXmlRecord.length());
              //get the correct set of xml tags to be used when performing mapping between plain text and xml
              if (isMasterData) {
                   xmlTagNames = new String[] {"dum1","kob_no","dum2","corp_status","legal_form","dum3","pr_protec_code","dum4","uri","email","emp_no_grp_code","exact_no_emp","dum5","founding_date","dum6","main_industry_code","industry_code1","industry_code2","industry_code3","industry_code4","industry_code5","industry_code6","industry_code7","industry_code8","dum7"};
              } else {
                   xmlTagNames = new String[] {"dum1","kob_no","rating_date","rating_value","risc_grp_code","currency","max_credit"};
              //copy all chars in stringBuffer to the specified char[]
              currentPlainRecord.getChars(0,currentPlainRecord.length(),charsInCurrentRange,0);
              //populate XML record structure
              currentXmlRecord.append("<record>");
              for (int i = 0; i < xmlTagNames.length; i++) {
                   currentXmlRecord.append("<" + xmlTagNames<i> + ">");
                   currentXmlRecord.append(charsInCurrentRange,dataRanges<i>[0],(dataRanges<i>[1])-(dataRanges<i>[0]));
                   currentXmlRecord.append("</" + xmlTagNames<i> + ">");
              currentXmlRecord.append("</record>");
         //write debug information to correct "place"
         private void writeDebugInfo(String debugInfo) {
              if (mappingTrace == null) {
                   System.out.println("Debug: " + debugInfo);
              } else {
                   mappingTrace.addInfo("Debug: " + debugInfo);

    Hi Alex,
    Thanks for your reply. First of all I was wondering if I missed something somewhere in my generel understanding of XI and BPM's!? - I kind of sense some irony/sarkasm in beginning of your reply:-) As far as I know BPM should have no trouble receing non-xml (in my case zip-files)!?
    Anyways here goes:
    1. Yes, this is also my impression that is should be possible somehow (we do currently run sp14). However, I havent yet figured out how to do it in this case. When trying to create interface mapping between the three involved software components, I get a 'MESS_MULTI_MAP_IF_WRONG_SWCV' three times. I've searched around without being able to find any information on the error. I does seem, though, like the problem is that all objects aren't in the same software component!! But this approach is of course the prefered one...
    2. Well - you got me there. Kind of expected someone to point that out:-) This is of course something to be looked into also in order to "improve"/"enhance" the program - though it, as already pointed out, works perfectly as is.
    3. This part I have also thought about - though quickly moved away from the idea, but that is only due to lacking insight/knowhow on the subject. Interesting weblog you have written, something so I will investigate further when  time allows for it:-)
    Best regards,
    Daniel

  • Duplicate Message ID issue in case of Multi mapping (without BPM)

    Hi Experts,
    I am doing one sample Example for my requirement of converting the single source message data into the multiple Target messages.
    for example, when sender system is sending the 5 sale order details into a single message in PI then my Inbound proxy class of ECC R/3 receiver system must get this sale orders separately, that means inbound proxy class method must be triggered separately for 5 sale orders from sender system. for achieving this, I have used the Multi mapping concept in ESR (without BPM).
    This scenario is in Asynchronous mode.
    The below screen shots give the details on what I have configures so far.
    IN ESR
    IN ID
    IN SXMB_MONI of PI
    IN SXMB_MONI of ECC R/3 Receiver system (Error in Processing)
    due to this error, inbound Proxy class method is not being triggered for the single Sale order details as well,
    please let me know how to tackle this duplicate message ID issue when we have multiple payloads to process in a single message.
    please also let me know if is there any other workaround to fulfil this requirement.
    Thank you,
    Regards,
    Jagesh

    Hi Nunu,
    Check the below blog for restrictions.
    Multi-Mapping without BPM - Yes, it’s possible!
    Restrictions
    Messages that result from the split in a mapping-based message split are sent using one AE. So only adapters running on the AE are supported. In particular, this means that target IDOC message splits are not supported since the IDOC adapter is not part of the AE.
    Regards,
    Praveen.

  • Multi Mapping issue - *Split mapping created no messages*

    Hi,
    The scenario I am trying to test is a multi mapping scenario where I am trying to split one source message and create two target messages by using two different inbound service interfaces, one for each message type.
    I am on PI 7.1 and when I test message mapping and operation mapping using the payload from SXMB_MONI, it is successful. Whereas when I test the scenario end to end I am getting the following error messages:
    Runtime error
    *Split mapping created no messages*
      Start tag ns0:MessagesStart tag ns0:Message1Close tag ns0:Message1Start tag ns0:Message2Close tag ns0:Message2Close tag ns0:Messages
    Could someone please help
    Cheers,
    S

    Hi,
    (1)First change the occurrence of target message to 0..unbounded.
    (2) Do the mapping and test it under test tab of mapping whether your mapping is working fine creating target records.
    (3) Copy the source code from mapping and remove the unwanted tags "as Mark said " those were created due to multimapping.
    Then test that file and that will work.
    You can follow this link .
    Link :Message Splitting
    Thanks
    Rabi
    Edited by: RabiPanda on Nov 17, 2011 8:42 AM

  • Multi Mapping Base Runtime Exception

    Hi all
    Im getting a Base Runtime Excecption in Multi mapping. My scenario is File to IDocs.
    when i test the message is IR its successful. However while testing End to end im getting Base Runtime excception.
    Any pointers to this
    --Keerthi

    Hi Abhishek,
    I tested from ID-Tools-Test configuration
    Its stopping at the Interface Detarmination&Mapping step. Now the Base Runtime exception is gone. Geeting a new error"Messages in multi-message format can only be sent to one Adapter Engine".
    According to the forum i've removed the Messages and Message 1 tag and tested.. But still the same error.
    My scenario is File to IDOCs using multi -mapping. I've changes the occurece to unbounded.. Used Enhanced Receiver determination..All my configuration seems perfect Also in SXMB_MONI multiple messages as desired are present under 'Message Branch According to Receiver List'
    But the error "Messages in multi-message format can only be sent to one Adapter Engine" is still there
    --Keerthi

  • Issue with java mapping in a multi-mapping scenario

    Hi
        We have  a 1:n multiple mapping scenario in XI and the source is R3 proxy and target side is files. So, creating multiple file from a single message from R3 .
    R3 --> XI --> Multiple files
    Structure of the output of the multi-mapping is
    - <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    - <ns0:Message1>
    <Transaction>
    </Transaction>
    <Transaction>
    </Transaction></ns0:Message1>
    </ns0:Messages>
    wherein each Transaction node represents a file.
    Now, we need to introduce a constant /string like
    <!DOCTYPE Transaction PUBLIC \"-//XXXXXX//DTD BatchReceiptAuthorization//EN\" \"http://dtd.XXXXXXX.com/dtds/ReceiptAuthorization.dtd\">
    on each of the files at the very beginning - i.e within each transaction node , in the above structure, we need the above DTD string to be written.  To do this, we added a java mapping as the second mapping after the message mapping that creates this string. Is this the right approach and would it produce what we are expecting ?
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.util.Map;
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationException;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import com.sap.aii.mapping.api.DynamicConfiguration;
    import com.sap.aii.mapping.api.AbstractTrace;
    public class ModifyRootAndDelay implements StreamTransformation {
         AbstractTrace myTrace;
    public void execute(InputStream input, OutputStream output) throws StreamTransformationException {
              try{
                   BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                   String NameSpacePrefix = "<!DOCTYPE Transaction PUBLIC \"-//innotrac//DTD BatchReceiptAuthorization//EN\" \"http://dtd.innotrac.com/dtds/ReceiptAuthorization.dtd\">";
                   String sLine = null;
                   StringBuffer XmlMsg= new StringBuffer();
                   String Result,PayloadBody;
                   int indexOfFirst;
                   while ((sLine = reader.readLine()) != null) {
                        XmlMsg.append(sLine);
                   String StartingTag = XmlMsg.toString();
                   indexOfFirst = StartingTag.indexOf("<MerchantID>") ;
                   PayloadBody=new String(XmlMsg.substring(indexOfFirst));
                   Result=NameSpacePrefix.concat(PayloadBody);
                   output.write(Result.getBytes());
              /*     Thread.sleep(200000); */
              }catch(Exception e){
                   myTrace.addWarning("Exception raised in the JavaMapping:modifyNamespace.java""\n The Exception Message: " e.getMessage());
                   throw new RuntimeException(e.getMessage()) ;
            }     public void setParameter(Map param) {
              myTrace = (AbstractTrace) param
                        .get(StreamTransformationConstants.MAPPING_TRACE);

    Hi XI Gurus
                       In my scenario, I sent the inputstream that is being passed to the Java execute method - to trace and I see that the whole of the xml file - as shown below  - which is the output of message mapping ( from the first mapping step ) in sent to the execute method of the java mapping a single call
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
    <Transaction> </Transaction>
    <Transaction> </Transaction>
    </ns0:Message1>
    <ns0:Messages>
    So, I modified Java mapping program to look for multiple occurences of <Transaction> tag and prefix them with my constant DTD Literal - which is the primary reason , why I had to use Java mappings after the message mapping.
    Now, I get an error is XI- SXMB_MONI
    - <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="MAPPING" />
      <SAP:P1>unexpected symbol; expected '<', '</', entity refe</SAP:P1>
      <SAP:P2>rence, character data, CDATA section, processing i</SAP:P2>
      <SAP:P3>0</SAP:P3>
      <SAP:P4>113</SAP:P4>
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>The exception occurred (program: CL_XMS_MAIN===================CP, include CL_XMS_MAIN===================CM00A, line: 609)</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Should I create multiple outputs - as many as the numberof target split files ( of type outputstream ) from the execute method in the java program ?

  • Multi mapping issue

    Hi ,
         I am using a multi mapping(with out bpm) in my scenario. One source structure is mapped to 3 different targets and these 3 different targets are using 3 different adapters.
      There will be a indicator from the source structure which descriminates all the 3 targets.
      How can I restrict the XI to send only to one target based on indicator in the source structure?
    EX: If the indicator in the source structure is 1000 then I want to send this message to only one target specified in the mapping.
    So my problem arises where in, because we are using multimapping 1:n, if I trigger a message in the proxy it will be sending to all the 3 targets. I don't want this.
    Appreciate your help on this.
    Thanks
    bpr

    HI
    You need to have 3 different channels for 3 receivers with receiver agreement for all three.
    Go to Receiver determination and under configured receivers you can specify condition you want.
    If the indicator in the source structure is 1000 then I want to send this message to only one target specified in the mapping.
    select the left operand as indicator field from source type
    = as Op
    right side is 1000
    Against this configure the receiver you want to send data.
    Thanks
    Gaurav

  • Mapping runtime perfermance issue.

    Hi all
    I have an interface that runtime process sometimes fast sometimes slow.In case of low process ,I figured out the mapping runtime took a lot of time.So i would like to know what factors can lead to the mapping runtime low performance?
    thanks in advance.
    Brand

    Hi
    Thanks to reply to this.
    but my mapping don't have  a huge volume data. it is just 1KB.
    in addition,i tried to run 3 times,sometimes very fast,and sometimes very low... any other cause else ?
    thanks

  • Multi mapping problem

    Hi All,
    I tried a simple BPM with a transformation step involved. I have done a multi mapping here. One source msg to 2 target msgs.When I test the mapping using test tab with the incoming payload from SXMB_MONI, I am getting 2 msgs as expected. But during runtime, this is not happening.
    These are the output msgs I am getting. It does not have any node in it. The second msg doesnot even have a closing tag for namespace.
    <?xml version="1.0" encoding="utf-8" ?>
    <ns:MT_TGT xmlns:ns="urn:bpm:file:2rec">
      <Header />
      </ns:MT_TGT>
    <?xml version="1.0" encoding="utf-8" ?>
      <ns:MT_RECR xmlns:ns="urn:bpm:file:2rec" />
    Any pointers on this issue.
    Thanks & Regards,
    Jai Shankar.

    Hi Bhavesh,
    Yes. I checked the source msg in BPM container element. I tested the mapping with thet payload. It is working fine. I can see the source payload in container element as expected. But the MESSAGES_OUT has 2 msgs in the format I pasted above.
    Thanks & Regards,
    Jai Shankar.

  • Multi-mapping not found at configuration time

    Hi
      I have defined an interface mapping that takes one msg interface as source and two msg interfaces as targets - the underlying message mapping is a multi-mapping.
    However , when I go to configuration time - and create a enhanced interface determination - and drop down - to pick up multi-mapping - it says no objects found !!!
    I double check the sender interface and its link with the SWCV , the interface mapping - everything is ok . Coud anybody help me - as to why my multi-mapping is not being picked up at configuration time ( I also check the runtime cache - everything is ok )
    Please help !!!!

    HI,
    see the below links
    multi mapping - /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    multi mapping without bpm -/people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible
    Various multi-mappings and Optimizing their Implementation in Integration Processes (BPM) in XI.
    /people/narendra.jain/blog/2005/12/30/various-multi-mappings-and-optimizing-their-implementation-in-integration-processes-bpm-in-xi
    Multiple mappings into one Im - Multiple message mappings in one integration scenario
    Regards
    Chilla

  • SAP PI 7.3 AEX Multi mapping: Mapping failed with exception

    Hi
    I am encountering an issue with the multi mapping in SAP PI 7.3 AEX system.
    Requirement for my interface is to pull a single file which has multiple records from the file directory.
    Interface need to split the single file to multiple files.
    For this I have implemented multi mapping in SAP PI 7.3(Stand alone Java) to split the single file to multiple files just like the way it is done in SAP PI 7.1. Tried this interface in SAP PI 7.1 system and works fine end to end.
    I have done the testing in mapping(Test tab) in operational mapping, I could see response is getting generated successfully.
    But when testing end to end,
    I could see message is getting failed during mapping with the exception "failed to execute: ArrayIndexOutOfBoundsException: 1” .
    Note:
    Occurrence has been changed to 0..unbounded in the Signature tab of the message mapping & same interface works fine in SAP PI 7.1
    Our system is currently on SAP PI 7.31 (AEX) SP05 Patch "0".
    Kindly let me know if someone has any idea on this particular exception in SAP PI 7.31 multi mapping Interface.
    Thanks & Regards
    Ram

    Hi Jegathees,
    Thanks for your reply.
    In PI 7.31:
    As we are doing 1:n mapping, I have maintained the source side occurrence as "1" and target side occurrence as "0..unbounded" in the signature tab of message mapping.
    Even in PI 7.11 Occurrences were maintained in the same way.
    Can you please give me more details of how exactly multimapping in PI 7.31 is different with respect to PI 7.1
    Thanks & Regards
    Ram

  • Multi-Mapping Error in PI 7.1 - External Definitions

    Hi all,
    We have just upgraded to PI 7.1 from 7.0 and run into an issue with message multi-mappings, just wondered if anyone else had met the same issue and worked it out...
    When creating a message mapping, we are using as the target an external definition which is defined by an XSD generated by a third party tool (Seeburger).
    When I map 1:1 (1 source message to one target message) in the message mapper, all is fine but if I try to create a multi mapping, I get an error. The process is:
    a) I have a message mapping with one target message, defined as an External Definition.
    b) I then go to Signature tab and add a second target message as an External Definition
    c) Click back to Definition tab
    d) Get the error "Object XXXXX | YYYYY not found" - where XXXXX is the external def name and YYYYY is the namespace (the SWCV namespace that is, not the XML namespace)
    This only seems to happen with External Definitions which are autogenerated and I strongly suspect that is has to do with the fact that the tool that generates them always  does so without an XML namespace. I have not proved this though (other Ext Defs with namespaces work for multi-mappings but that is not the only difference so I can't be sure that is the issue but have a strong hunch. This problem did not occur in 7.0.
    Anyone got any ideas?
    Thanks,
    Chris

    Hi,
    This would not be of much help but, I was able to encounter this issue in XI 3.0.
    What we did was to manually edit the XSD and add a namespace to it. I'm not sure if PI 7.1 is able to handle mutiple namespaces, so we limited it to this value <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> and made sure that this value is used for all the External Definitions used in the multi-mapping.
    Regards,

  • How to achieve Java Multi-mapping in PI 7.31?

    Hi,
         I have a simple file to file scenario. Want to do 1:n transformation using java mapping.
         Followed this link  Multi-Mapping using Java Mapping - Process Integration - SCN Wiki . But the result was a single message with three root segments. where as the requirement is to get three messages each having one root segment. Please suggest how can we achieve this.
    PS: Please suggest a solution specifically using java mapping.
    Thanks

    Hi Nisar,
    I had the same issue when I was trying to achieve this. I am able to create the target structure with multiple subsegments but unable to get them in individual multiple messages.
    Sumit

  • Error in Multi-mapping without BPM

    Hi frnds,
    I am doing a scenario File-XI-File. I am using the multi-splitting thing in the Message mapping. I have taken care of all the occurance's and "enhanced" thing in the IR and ID resp. I m using SP16. I want to avoid BPM.
    But therez sme error cming up. When I check the MONI, its shwing "No messages created from split mapping" and when I test my interface using the Test Configuration in the ID, its shwing error in the Receiver Determination -- "HTTP connection to ABAP Runtime failed. Error: 403 Forbidden"
    I have checked most of the blogs and forum suggestions. I have checked the ICF activations as well ...
    So, do come back to me with your valuable suggestions, and I will award them points, if they really help me out.
    Thanks and regards.
    Neetesh

    Hi Neetesh,
    <i>
    When I check the MONI, its shwing "No messages created from split mapping"</i>
    For this, Can you check the source XML. Does it contain Tags like <messages> .. If yes, you need to remove them from your source XML.
    If i am right, you have copied the XML from the TEST tab of the message mapping and pasted it in a notepad and saved it without making any changes at all..... Just do as i have mentioned above and i am sure you will no more get that error message in your MONI....
    Also go through this weblog which talks about multi-mapping without BPM,
    /people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible
    Regards,
    Abhy

  • Error wile Outbinding of the message in multi mapping

    HI
    I have a scenario SIEBEL->XI->R/3
    the data from siebel system is send through web services
    in xi this data is mapped into 2 IDOCS using multi mapping .
    I tested the scenario and i am getting the following error .
    <b><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>
    </b>
    Can some one help with this issue
    Thanks
    Nikhil

    Nikhil,
    For IDOC bundling, take a look at this blog and note no : 814393.
    /people/michal.krawczyk2/blog/2005/12/04/xi-idoc-bundling--the-trick-with-the-occurance-change
    Regards,
    Bhavesh

Maybe you are looking for