Split Message value in Multi-Mapping

Hello everybody,
I got the following problem with 1:n Mapping
My Source Structure is
<root>
.<element_list> // 1:1
..<element>     // 1:unbounded
...<value>
...</value>
..</element>
.</element_list>
</root>
Sample for source structure:
<root>
.<element_list>
..<element>
...<value><b>WILLIAM</b>
...</value>
..</element>
..<element>
...<value><b>RICHARD</b>
...</value>
.</element_list>
</root>
I want to split by multi-mapping!
The target structure looks similar as source target structure (just <element_list> is missing)!
So my structure looks in target:
<Messages>
.<Messages1>
..<element>    
...<value>
...</value>
..</element>
.<Messages2>
..<element>    
...<value>
...</value>
..</element>
For splitting the <value> tag is responsible:
Every RICHARD should be mapped to <Messages1>
Every WILLIAM should be mapped to <Messages2>
--> so I use the if-function (I dont want to use the SORT function!)
But this seems not to work.
Any suggestions?
Regards Mario
null

Hi Vijaya
annotation:
I need different messages!
So in the tab >messages< of massage mapping
Target Message: The message type must occur in row 1 & 2
Like in thread: /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
Here: First screen shot under >Message Mapping<
Did you do this?
Regards Mario
Message was edited by:
        Mario Müller

Similar Messages

  • 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

  • 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 splitting in BPM

    Hi ,
    I am working with this scenario ...
    /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    how many message interfaces i have to create .
    one outbound , one abstract  and two inbound .. is it correct.

    Hi
    Minimum you need to create three message interfaces i.e. Bpm_In_MI_Abstract,  aBpm_Out_MI_Abstract Bpm_Out1_MI_Abstract, because abstract interfaces can be use inbound and outbound as well.
    You can also use create implement it by using inbound and outbound message interfaces. In that case you have to use three additional interfaces(1 outbound and 2 inbound).
    Regards
    Sami
    Reward points if helpful.

  • 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 and Message Split using BPM UDFs Error

    hi
    As per the below blog
    Illustration of Multi-Mapping and Message Split using BPM in SAP Exchange Infrastructure
    I have just modified the UDFs(1.selectnodeifA 2.selectNodeifB)
    1.selectnodeifA
    for(int i=0;i<=n;i++)
    if(Name<i>.equals("A"))
    result.addValue(Node<i>);
    2.selectNodeifB
    for(int i=0;i<=n;i++)
    if(Name<i>.equals("B"))
    result.addValue(Node<i>);
    while checking I am getting the following errors
    Source code has syntax error: 
    D:/usr/sap/D10/DVEBMGS01/j2ee/cluster/server0/./temp/classpath_resolver/Mapdc8fa4d0896011dd907d001cc01cef0d/source/com/sap/xi/tf/_bpm_mm_.java:132: cannot resolve symbol
    symbol : variable n
    location: class com.sap.xi.tf._bpm_mm_
    for(int i=0;i<=n;i++)
    ^
    D:/usr/sap/D10/DVEBMGS01/j2ee/cluster/server0/./temp/classpath_resolver/Mapdc8fa4d0896011dd907d001cc01cef0d/source/com/sap/xi/tf/_bpm_mm_.java:140: cannot resolve symbol symbol : variable n
    location: class com.sap.xi.tf._bpm_mm_
    for(int i=0;i<=n;i++)
    ^
    2 errors
    The source code given in the blog is correct ? I thought for loop has not completed
    pls help
    manian

    Hi manian,
    I was having a look to Illustration of Multi-Mapping and Message Split using BPM in SAP Exchange Infrastructure blog.
    The functions are not the same. I mean, yours and blogs functions.
    Each function has two parameters, Name and node. Furtheremore, in the blogs' functions is using arrays and you don't.
    So, the right code will be
    1.selectnodeifA
    for(int i=0;i<=node.length();i++)
    if(Name<i>.equals("A"))
    result.addValue(Node<i>);
    However, if you don't need an advance user defined function as you want to process just one element of the node's queue, you will not need to use for sentence.
    Something like:
    1.selectnodeifA
    // for(int i=0;i<=n;i++)
    if(Name.equals("A"))
    result.addValue(Node);
    Hope it is usefull for you.
    Carlos

  • XI Configuration Design questions with multi-mapping message mapping object

    Hello,
    I'm having trouble designing a particular scenario for multi-mapping.  Currently i'm working with a Vendor create and change.  BPM is not being used.
    This is what i need:
    I need a CREMDM04 to turn into one or multiple ADRMAS/CREMAS IDocs and potentially a CLFMAS IDoc based on the values in the inbound CREMDM04 IDoc.
    This is what i currently have:
    A CREMDM04 inbound idoc is multi-mapped to a CREMDM03 (1...9999), another CREMDM03 (0...9999), and a CLFMAS01 (0...9999).  At a minimum only the first CREMDM03 IDoc will be created and at a maximum all three will be created.  The parameters on creating the second CREMDM03 IDoc and the CLFMAS01 IDoc are based on the values in the inbound CREMDM04 IDoc, whereas the first CREMDM03 IDoc will always be created and the values will just be converted/mapped from the inbound CREMDM04 IDoc.  This multi-mapping is currently set-up via a graphical message map and works successfully in the test-tab of the mapping object.  It has a main message and has sub-messages which are the IDocs.  I’m mapping the CREMDM04 to a CREMDM03 to then map it through an ABAP-Class and then to an XSL where the CREMDM03 inbound structure is expected to split into ADRMAS and CREMAS Outbound IDocs for Vendor Create/Change in the remote R/3 systems.
    After the graphical map we have a necessary ABAP Class call that calls a BAPI to the remote system.  This ABAP Class must come after the graphical map since the parameter for the BAPI is based on a converted value from the graphical multi-map.
    After the ABAP Class call there is finally an XSL message split the CREMDM IDoc into an ADRMAS and CREMAS IDoc.  There need to be two interface mappings (one per ADRMAS and CREMAS) since the ABAP classes and XSLs are specific to the ADRMAS and CREMAS.
    The CLFMAS IDoc can go directly to the remote system, but since it’s within this one multi-map, I’m not sure if is possible?  I’m not sure if it will fail once it tries entering the XSL mapping (this is the standard CREMDM message split offered from SAP).
    There are three interface mapping scenarios I can think of, but cannot get to work:
    CREMDM04 to ADRMAS02
    CREMDM04 to CREMAS03
    CREMDM04 to CLFMAS01
    Currently I have the Interface Mapping structured as follows:  (I cannot get this to activate as it appears it does not work)
    Multi-Mapping ==> ABAP Class Call ==> Standard XSL Message Split
    How should i design the interface mapping objects and the configuration objects for this scenario?
    Any help is appreciated and I definitely will reward points (no need to include it in your response).

    Hi,
    I suggest you may use multiple steps interface mapping. It's composited with 3 message mappings as step by step.
    Mapping 1: One to one mapping. For the output schema, use a composition schema which includes those 3 IDOCs you want.
    Mappign 2: ABAP Mapping. I am not sure the ABAP class you mentioned is an ABAP mapping or not. If it does, That's ok. If not,
    call that ABAP class in your ABAP mapping and do corresponding change for your message. Return back the same structure as output.
    Mapping 3: One to multiple mapping to split the message.
    So basically as interface mapping, it's one to multiple mapping. And internally, you have 3 steps to realize the mapping.
    And as my experience, for both one to multiple message mapping & multiple steps interface mapping, it works well in my project. And
    in ID, you have to configure it via "advance" function in receiver determination or interface determination.
    Let me know if any confusion.
    Thanks
    Nick

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

  • 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

  • Multi mapping & seeburger Message Tracking (Filestore module)

    Hello,
    For the people who knows seeburger archiving...
    Anybody make the scenario using multi mapping (split in the receiver) with message Tracking seeburger (File Store module in the Receiver Channel)?

    Hi,
    before these steps  you need to have MT installer file based on your database and some settings needs to be done at database level.
    if you have seeburger manuals there is one pdf 'SAPXI_Archiving_en.pdf' which talks about MT.
    Suresh

  • Split message mapping to integration process

    Hi,
    I faced an error when trying to send a multiple message (after a message split) to an integration process and I would like to know the possibilities to resolve this issue.
    What I want to do (more details below) :
    1. Get an order list from a database
    2. Split the order list in multiple orders (via a multi-mapping)
    3. For each order, create a new integration process instance
    The error I got is:
    Messages in multi message format can be sent to one adapter engine only
    The solutions I thought of:
    - Creating a new integration process / Update the existing integration process in order to execute the message split in the process engine
    - Create a new service (or business system) as a receiver instead of the process that points back to another XI service and set-up the appropriate configuration between the second service and the existing integration process
    My question: is there another solution than the two above?
    Thanks in advance
    Here are the details of what I did:
    1. A JDBC request returns an order list like:
    <resultSet>
       <row>
          <order>[...order 1 details...]</order>
       </row>
       <row>
          <order>[...order 2 details...]</order>
       </row>
    </resultSet>
    2. During interface determination phase, a multi-mapping is executed to produce several orders:
    <order>[...order 1 details...]</order>
    <order>[...order 2 details...]</order>
    3. The target receiver is an integration process who take as initial document only one order ; so, having two orders as a result of the split, I would like XI to create two new instances of my integration process, each receiving exactly one order.
    And there's when the above error occured.

    Hi Alexis
    Creating a new integration process is suggested as your target receiver is your current integration process and along with this splitting and passing data to multiple receiver can be done in integration process.
    Thanks
    Mitesh

  • Multi mapping before BPM and then message routing to different IDocs

    I am working on PI 7.0.
    I have a scenario where a message from a third party needs to be split and then mapped to multiple IDocs in the target. This decision happens based on an RFC call to SAP ECC. Before the message passes to BPM, I have done a multi mapping to make the RFC call and split the message into multiple messages. Subsequently I have taken a multi line container inside the BPM to receive these messages and process them Parforeach and then a switch is applied to handle the rest of the scenario.
    Problem is when I am trying to execute the scenario, it fails in first step(multi mapping) before the BPM, it is not able to create the node for the multiple message.
    To explain a bit more, Message type say M1 is linked to Message interface MI1_OB. Then I have created an abstract message interface MI1_ABS and made it as 0---unbounded. Similarly in the message mapping I have changed the occurrence of the target message type (same as source message type)

    Hi Ambrish Mishra,
    Please check "Performing Several Multi-Mappings in a Series" [Link|http://help.sap.com/saphelp_nwpi711/helpdata/en/21/6faf35c2d74295a3cb97f6f3ccf43c/frameset.htm] . According it, second mapping should be able to accept this structure as input
    <?xml version="1.0" encoding="UTF-8"?>
    <sm:Messages xmlns:sm="http://sap.com/xi/XI/SplitAndMerge">
      <Message1>
      </Message1>
      <MessageN>
      </MessageN>
    </sm:Messages>
    Regards,
    Raghu_Vamsee

  • Mapping Issue: How to split the value  of Lineitem

    Hi  All,
    I have issue in Mapping .XML-> BAPI Scenario
    1 line item  has the  one 50% Cost Centre , another 50% Cost centre data
    2 line item has only      100% WBS elemnt
    WBS elemnt mapping :
    If A |EQUALS (Text) | WBS_ELEMNT   |If without else|  B(WBS value)  |REmoveContexs| SplitByValue|   WBS_ELEMNT(BAPI field)
    But this supress second line item : WBS_ELEMNT data and uploads into1.Item .Hence PO is not getting created in SAP.
    Could you please giv me a logic to actaually split the value into 2 seperate so that respective data of each line item  are split properly .
    Thank you ,
    Vara

    Hi I think you need an udf for this:
    int total = Integer.parseInt(value[0]);
    result.addValue(Integer.toString(a/2));
    result.addValue(Integer.toString(a/2));
    and after it you can add a splitbyvalue

  • 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

  • Multi-mapping with message bundling but without using BPM

    Hi all,
    I have a requirement to bunch specific no. of records (say 50) from source message and create separate target messages for those bunches. For example, if the source message has 120 records, then there should be three separate target messages created containing 50, 50 and 20 records each.
    I am wondering whether this multi-mapping is possible without using BPM, as the typical no. of records in the source message are in the range of 600 to 800, and rarely (twice or thrice a month) they shoot up to 2000. So my concern is whether BPM would affect the performance. We are using PI at SP12.
    Regards,
    - Shankar.

    Sorry for late reply.. Well the sender is a file system, which sends a single XML file containing multiple records. (I mean I have a sender file adapter that polls periodically from a specific path and picks up the file when it is available)
    The no. of records in the source file may be different in each run. The requirement on the receiver system is that it can handle a file which has maximum of 'n' records only (say 50 in my example)
    Now the sender file can contain any no. of records. It may contain 10 on some day, or 200 the next day, or 120 on the third day. But on the receiver side, I want the files to be created such that each will contain AT MAX 50 records.
    So, if source file has <=50 records, then there will be only 1 target file having the same no. of records.
    If source file has between 51 to 100 records, then there will be two target files. One will have 50 records, and the second will have remaining records.
    And so on..
    Regards,
    - Shankar.

Maybe you are looking for

  • Hostname change is not working in LMS 4.0.1

    Dear All, Eventhough i change the hostnames in LMS using Edit Identity, it sends alert using the old host name. Do we have to change somewhere else to make it updated or need to restart any services for this..? How it takes effect..?

  • Problem of synchronization during the export

    Hello. My config: Windows 7, premiere elements 9 The movie lasts about 4min, I have 3 video tracks and 3 audio tracks). The first exports were completed but since I made modififications of titration, nothing goes more. At the end of 2m30 of movie I 2

  • Can not Accept and save SERVICE ENTRY SHEET

    Hi I have maintained a simple Service master, maintained the conditions in ML33, created a PO. I am doing a Service Entry Sheet, and trying to  Accept and save. A popup comes, and if I see ERROR Log it says.. "Z1                   001 Needed approval

  • SQL Fetch Recordset Data provides incomplete results

    I am using the code below to return data from an SQL database. However, all of the elements in the variant array are blank except for the last column. Using "Database Variant to Data" doesn't help (everything but the last column is still blank). All

  • Restore oracle DB from different SAP server

    Hi Experts, Our SAP PROD Server is down at the moment, we would like to restore the backup DB from QA server. Its a temporary solution for the users to transact. My issues are: 1. How to restore a DB from a cluster prod server to a central instance s