Multiple Message Mapping

Hello Guru,
I am doing a multiple message mapping. the purpose is:
the source message structure is
MT_input
|row <1...unbound>
|---plant
|---name
the two target message structure are:
MT_output1
-|row <1...unbound>
|---plant1
|---name1
MT_output2
-|row <1...unbound>
|---plant2
|---name2
there can be many row in source message, the value of plant could be 1 and 2.
I want all rows with plant = "1" goto MT_output1,
all rows with plant = "2" goto MT_output2.
but I can not accomplished this job with graphic mapping. could you give me help?
I don't want to use Java Mapping.
Thanks a lot.

Hi,
  MT_input
|row <1...unbound>
|---plant
|---name
the two target message structure are:
MT_output1
-|row <1...unbound>
|---plant1
|---name1
MT_output2
-|row <1...unbound>
|---plant2
|---name2
solution :
MT_input                                                 MT_output1
-|row <1...unbound>                            |row <1...unbound>
if the plant[context set to MT_input] is equals to 1 then map row from source to row in target[MT_output1]
plant and name mapping are direct.
Repeat the same mapping for MT_output2.
This definitely works, i have tried it.
Regards,
Pragati

Similar Messages

  • PI 7.1 Operation mapping - Multiple message mapping - one to many issue

    Dear Experts,
    I am facing this issue in PI 7.1 and I beleive i did similar one in PI 7.0 successfully.
    I have an operation mapping with two message mappings.
    The occurence of source message of operation mapping is 1
    The occurence of target message of operation mapping is 0..unbounded
    Corresponding i configured two message mappings
    For message mapping-1
    Source message occurence = 1  and Target message occurence = 1
    For message mapping-2
    Source message occurence = 1  and Target message occurence = 0...unbounded
    When i test message mappings individually they are working good. But when i test it in operation mapping, the operation mapping is not working..as it is not able to convert single occurence output of message mapping -1 to the second message mapping-2.
    Any suggestions?
    Thanks.

    The message that i get when testing in operation mapping:
    Runtime Exception when executing application mapping program com/sap/xi/tf/_MM_MessageMapping_1_; Details: com.sap.aii.mappingtool.tf7.IllegalInstanceException; Cannot create target element /ns0:MT_MessageMapping_1_TargetMessageType/RECORDSET. Values missing in queue context. Target XSD requires a value for this element, but the target-field mapping does not create one. Check whether the XML instance is valid for the source XSD, and whether the target-field mapping fulfils the requirement of the target XSD
    My question is, has somebody mapped similar scenario in your environment? If yes, can you please provide details.
    Operation mapping :  1 to 0..unbounded
    Message Mapping1: 1 to 1
    Message Mapping2: 1 to 0...unbounded

  • Multiple Message Mapping with same Idoc, Sender and Receiver

    Hi,
    We have one Interface sending INVOIC02 Idoc from SAP R3 4.6C to SAP R3 4.6C through XI 3.0.
    On Inbound side we are using SAP standard configuring one Partner Profile with inbound INVOIC MM process code INVL.
    In customizing, we have defined one invoic type for the EDI partner.
    Now we have to integrate another type of inbound invoic, but in customizing it's not possible to assign more than one invoic type to the same Partner EDI.
    So, we have a restriction in SAP 4.6C inbound standard. On the other hand, we can't desing two Integration Scenarios in XI 3.0 with the same idoc INVOIC02, for the same sender service and receiver service because Integration Directory doesn't allow to create two interface determination for them.
    We are thinking on using header mapping in XI (receiver agreement to avoid use the same EDI partner profile for the inbound invoic, but we can't assign the same client and technical system with the same ALE Logical System in SLD for two different business systems.
    Does anybody have any solution for this problem, SAP side or XI side?.
    Thank you
    Best regards
    Luis

    Hi!
    In XI configuration  - interface determination, you can specify more than one Inbound interface. If you identify more than one, you get a new column where you specify condition (xpath) for selecting between the different inbound interfaces.
    In 4.6c, you can have more than one inbound invoic for the same EDI partner profile, if you separate between them using message function. Just add a new inbound parameter with a different message function, or copy the one you have and specify another message function, i,e. "DIFF".
    Hope this helps.
    Regards,
    Oeystein

  • Accessing container variables from ccBPM in Message Mapping?

    Hello Friends,
    I have created a ccBPM and require to send response messages to the sending system at different points as the message proceeds from one state to another. I do not want to create multiple message mapping stating different status in every message mapping. The message mapping remains the same only the status is changing. So I am thinking if I can access container elements in ccBPM at message mapping then I should be able to use only one message mapping.  Is it possible at all?
    Let me know if you have other solutions. Let me know if I am not clear?
    Thanks & Regards,
    Anand Patil

    Hi Abhishek,
    Your suggestion to use Parameterized Mapping did solve my issue. I was looking something like this. Thanks.
    Now I have only one Message Mapping and it is used in multiple places. Thanks a lot
    Best regards,
    Anand Patil

  • 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

  • Send Multiple field values to Single Target field in Message Mapping

    Hi,
    My  Requirement is to Map Multiple fields to Single field in Target side.I have to send all the values concatenated and pass the same to target Field in Message Mapping.
    We can use Concat function,but more that 15 fields are there.If using concat,the mapping will be complex.
    Is there any way to simplify this requirement or we can use any UDF for this,kindly suggest.
    Regards,
    Madhu

    >>>We can use Concat function,but more that 15 fields are there.If using concat,the mapping will be complex.
    I don't think it's complex but  just that it occupies more mapping area
    Just write a simple UDF - a one line code and pass all your input variables.
    return var1+var2+var3+var4+...+var15;

  • Interface Mapping with Multiple Message Mappings

    Hi My Scenario is
    File to Idoc.( Multiple records to Multiple idocs )
    Due to Complexity of Mapping I split the Mapping step into 2.
    My Source System does not provide Namspace when they are sending XML Data.
    When I try 2 mappings individually both Mappings works fine.
    However when I try test using Interface Mapping target messages are not generated.
    Since 2nd Mapping invoves Mapping Split its expecting extra tags as shown here in the Targert Message generated from Message Mapping 1.
    <i><ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
       <ns0:Message1></i>
    How can I solve this problem ?

    When I do Message Mapping:
    From message Mapping 1 target Produced is as follows:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:CostMaintenanceXI xmlns:ns0="http://test.xxx.com">
    <CostMaintenanceXI>
    <CostMaintenanceXI>
    <Product>000000000000000023</Product>
    <Plant>1401</Plant>
    <Supplier>0000000001</Supplier>
    <ValidityFrom>20021212</ValidityFrom>
    <DIIndicator>ZFOB</DIIndicator>
    <COGAmount></COGAmount>
    <COGCurrency></COGCurrency>
    <FreightAmount></FreightAmount>
    <FreightCurrency></FreightCurrency>
    <MISCAmount></MISCAmount>
    <MISCCurrency></MISCCurrency>
    <SPAAmount></SPAAmount>
    <SPACurrency></SPACurrency>
    <LandedCaseCost></LandedCaseCost>
    <LandedCaseCurrency></LandedCaseCurrency>
    <FrontLinePrice></FrontLinePrice>
    <FrontLinePriceCurrency></FrontLinePriceCurrency>
    </CostMaintenanceXI>
    </CostMaintenanceXI>
    </ns0:CostMaintenanceXI>
    in 2nd Mapping I entered some details in the test tab and the generated source is as follows:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
       <ns0:Message1>
          <ns1:CostMaintenanceXI xmlns:ns1="http://test.xxx.com">
             <CostMaintenanceXI>
                <CostMaintenanceXI>
                   <Product>1</Product>
                   <Plant>1</Plant>
                   <Supplier>2</Supplier>
                   <ValidityFrom>12212122</ValidityFrom>
                   <FOBIndicator/>
                   <DIIndicator>ZFOD</DIIndicator>
                   <COGAmount>10</COGAmount>
                   <COGCurrency/>
                   <FreightAmount>10</FreightAmount>
                   <FreightCurrency/>
                   <MISCAmount>10</MISCAmount>
                   <MISCCurrency/>
                   <SPAAmount>10</SPAAmount>
                   <SPACurrency/>
                   <LandedCaseCost/>
                   <LandedCaseCurrency/>
                   <FrontLinePrice/>
                   <FrontLinePriceCurrency/>
                </CostMaintenanceXI>
             </CostMaintenanceXI>
          </ns1:CostMaintenanceXI>
       </ns0:Message1>
    </ns0:Messages>
    As you can see both of the above structures differs in xmlns. I dont see anything else weird.

  • Message Mapping for multiple item levels

    Hi,
    My query is regarding message mapping
    Example of source data structure & Target data structure
    Source data Structure
    <item>
          --<no>1</no>
          --<address/>
          --<ITEMS>
            ----<item>
              ------<Name>a</Name>
            ----<item>
              ------<Name>b</Name>
    <item>
          --<no>2</no>
          --<address/>
          --<ITEMS>
            ----<item>
              ------<Name>c</Name>
            ----<item>
              ------<Name>d</Name>
    Expected  Target data structure
    <Item>
      -- <no>1</no>
      -- <name>a</name>
    <Item>
      -- <no>1</no>
      -- <name>b</name>
    <Item>
      -- <no>2</no>
      -- <name>c</name>
    <Item>
      -- <no>2</no>
      -- <name>d</name>
    How I can map the '<no>' field to target '<no>' field to repeat value until to second sub item level occurance complete ?
    Thank you
    Sateesh

    Hi Sateesh,
    Please see the solution below.
    The are 2 contect changes you need to do on field level. Right click and go to context and select your context you need.
    Context on ITEMS - Should be on Root Structure(In my mapping it is MT_Multiple_Item_Level_Source)
    Context on Name - Should be on Item (The first Item Tag)
    Good Luck.
    Regards,
    Jannus Botha

  • Output from JDBC Adapter mapped to multiple message types

    Hi!
    I face to a problem with the message mapping.. I do select with the JDBC adapter. This statement selects one field of clob type and it already contains a message - XML document. Depending of the type of this message will be done the message mapping and also the target message type depends on this XML document type. But when u define message mapping, there must be always a target message type... But in the design time, I don't know the exact type! It is dynamic...
    And not just with the message, the same situation is also with the target interface...
    Any ideas how to solve this?
    Thanx, Peter
    Message was edited by: Peter Jarsunek

    Hi,
    I saw the weblog, but I think more important is the 'XI in action' mentioned in this one..
    /people/ravikumar.allampallam/blog/2005/06/22/sap-xi-in-action
    What I just can not understand from that blog is the step 2/4:
    Receive XML file of any format and route to interface specific BPM..
    How is it possible? On the output from the 1st BPM must be exact interface defined... How can different messages go out and than into the 2nd BPM?
    Can you please write me, how the individual steps could follow after each other to achieve this?
    Message was edited by: Peter Jarsunek

  • In Idoc bundling ...message mapping not found

    Hi XI Friends..
    In my File to Idoc scenario..i want to send multiple IDOCs from the XI without a BPM .
    I am following blog by Michal.
    <a href="///people/michal.krawczyk2/blog/2005/12/04/xi-idoc-bundling--the-trick-with-the-occurance-change:///people/michal.krawczyk2/blog/2005/12/04/xi-idoc-bundling--the-trick-with-the-occurance-change
    I have xsd for source ..so i created one external definition .and message interface for outbound.
    following the above blog by michal..
    i imported  idoc ..and i exported that idoc into xsd and i changed the occurance of idoc to unbounded and again imported as external definition.
    i created  the message mapping between these two external definitions.and tested ..
    As in michal 's blog..
    In Interface mapping..i given source and target interface as standard idoc.and clicked on Read interface then i am not finding  the message mapping created in previous step..
    i refreshed cache also..
    please guide me.....
    regards
    ram

    Hi bavesh...
    thank you so much for very your quick responses..
    i got xsd as source..based on xsd i created external definition for source xsd  and  i created outbound interface based on source external deifinition <b>MI_OUT_WearUnits</b>.
    and i imported Idoc and exported as xsd and changed occurance to unbounded and again imported as external definition.
    i did mapping between these two external definitions.
    and i selected standard idoc for source and target interface for interface mapping  and given message mapping of previous step.
    In ID
    sender agreement :
                    sender service :BS_external
                    sender interface :<b>MI_OUT_WearUnits</b>
    receiver agreement:
                  receiver service :R/3
                  receiver interface :  standard Idoc
    Interface determination:
    sender service :BS_external
    sender interface :<b>MI_OUT_WearUnits</b>
    reciever service :R/3
    and clicked create
    inbound interface : Standard IDOc
    i am not getting Interface mapping which i created in IR.
    i tried Enhance interface determination also..
    please guide me....
    waiting for your help.
    regards
    ram

  • Need Clarification on Looping in Message Mapping.

    Hi All,
      I'm trying to implement the Dynamic emailing as explained in the Michals blog.
    /people/michal.krawczyk2/blog/2005/03/07/mail-adapter-xi--how-to-implement-dynamic-mail-address
    I have this partially working for the scenario I have.
    XI will be receiving a ORDRSP IDoc from an external system and XI needs to do the following.
    1) Check the value of <b> E1EDP01-ABGRU </b> equals to Z2. If any of the E1EDP01-ABGRU has a value of Z2, it should do the following
             a) Get the email address from the E1EDKA1-ILNNR and map it to the TO field as shown in the blog.
              b) Get the values of BELNR-E1EDK01, MENEE, VPREI, POSEX, PEINH, ABGRT from the E1EDP01 segment and concatenate them all and map it to the Content tag as explained in Michals blog.
      I have this process partially working. The XI interface is only mapping for the first occurrence of E1EDP01 and not the subsequent occurrences of E1EDP01 which matches the criteria ( E1EDP01-ABGRU = Z2)
    Any help in getting fixing this problem??
    Thanks

    Make sure to define multiple target messages in your message and interface mappings, for the mail package message definition (occurrence = 0...unbounded).
    Also, in the logic of your message mapping, you need to create a new mail package message only if  E1EDP01-ABGRU = 'Z2'. Use it like this:
    ABGRU   ---   EqualS   ---   createIf   ---   Mail
    Constant[Z2]
    Regards,
    Henrique.

  • Query Error in Message Mapping

    Hi everyone
    I am working on a BPM, that BPM has a  Message Mapping that makes a Query to a DB.
    When I send a message with multiple details its working in the following way:
    1.- If the first detail makes a query of a catalogue that exists on the DB, and the second detail makes a query to a cataloge that does not exists on the DB it finishes with error.
    2.- If the first detail has the query of an unexisting catalogue on the DB, and the second detail has the query that exists on the DB it finishes correctly.
    Can someone give me some light on whats happenning here?
    Thanks in advanced

    Ended message

  • Message Mapping- 3 problems

    Hi,
    1)I need some information regarding Message Mapping. I need to map the field TDLINE of segment E1EDKT2 of IDOC ORDERS05 to the target fields. But based upon the index number of the record of this segment, I must map it to different fields (eg.E1EDKT2[10], E1EDKT2[3]). How can I incorporate this in Message Mapping?
    2)And one more scenario is as follows.Use PARTN if exists or use LIFNR to map to target and it must satisfythe conidtion PARVW = AG. Should we need Java code or can we achieve this using two 'If' conditions.
    3)We are looping at a source segment and it has multiple  occurances.How to create multiple segments in target based on condition.
    Can anyone help me.
    Thanks,
    Srinivas

    > 1) I need to map the field TDLINE of segment E1EDKT2
    > of IDOC ORDERS05 to the target fields. But based upon
    > the index number of the record of this segment, I
    > must map it to different fields (eg.E1EDKT2[10],
    > E1EDKT2[3]). How can I incorporate this in Message
    > Mapping?
    You can use the index function (with SP13):
    E1EDKT2* - index
                      equalS
        constant(10) /     
                             ifWithoutElse - target
    TDLINE - removeContexts /
    check the correct context
    > 2)And one more scenario is as follows. Use PARTN if
    > exists or use LIFNR to map to target and it must
    > satisfy the conidtion PARVW = AG. Should we need Java
    > code or can we achieve this using two 'If'
    > conditions.
    Sure you can chain if statements:
            PARVW
                  equalS 
    constant(AG) /     
                         ifWithoutElse
                  PARTN /            
                       PARTN - exist - if - target
                                  LIFNR
    This mapping assumes, that PARVW = AG is available, when PARTN is available.
    > 3)We are looping at a source segment and it has
    > multiple  occurances. How to create multiple
    > segments in target based on condition.
    Here is a pattern:
    condition - createIf - target
    condition has to be a queue of true and false with the same occurrency as source.
    All sub nodes of source are now arranged correctly under the target node.
    Regards
    Stefan
    Message was edited by: Stefan Grube

  • Message Mapping(Display queue and Suppress Value)

    Hi Experts,
    In Message Mapping(graphical mapping), upon checking the properties of the nodes,there's one property display queue, in which suppress is there??
    What does it mean?? Which queue it points and what value is suppressed??
    Thanks & Regards,
    Sushama

    Hi Sushama,
    SUPPRESS means no value.
    suppose we are checking one condition (tdid = "RE" then pass tdline) based on the condition we will send one output. if the condition fails then suppress value goes to the target.
    > What does it mean?? Which queue it points and what value is suppressed??
    es:  if(tdid.equals("WE") ifwithoutelse pass tdline value as output.    [tdid is in E1EDKA1 segment and this segment occurance is multiple]
    In this case if the condition is satisfied once and failed once (means E1EDKT1 segment comes 2 times) then first time it sends the corresponding tdline value and second time it sends the SUPPRESS value.
    Regards
    Ramesh

  • Hierarchical structure message mapping in PI

    Hello All,
    I have a source and target structure in graphical message mapping
    <?xml version="1.0" encoding="UTF-8"?>
    <Material_MT>
       <row>    0..unbounded
          <MATERIAL_ID>1234</MATERIAL_ID>
          <DEL_FLAG>
         </row>
      <row>    0..unbounded
          <MATERIAL_ID>1234</MATERIAL_ID>
          <DEL_FLAG>Y</DEL_FLAG>
         </row>
      <row>  
          <MATERIAL_ID>4567</MATERIAL_ID>
          <DEL_FLAG>N</DEL_FLAG>
         </row>
    <row>  
          <MATERIAL_ID>1234</MATERIAL_ID>   
          <DEL_FLAG>N</DEL_FLAG>
         </row>
    </Material_MT
    Materials can repeat in the source structure but their flags could be different
    Target structure
    <Mat>  1..1
    <Mat_update> 0..unbounded
       <Matid>
               <Matreg>
                     <Matcomplete/>
                     <tuple>
                          <id/>
                      </tuple>    
               </Matreg>
         </Matid>
         <recordind>
                <id>
          </recordind>
    </Mat_update>
    Now, the requirement is
    1) For each <MATERIAL_ID>  in the source, map its corresponding flag <DEL_FLAG> value <Matcomplete/ field in the target ,
    2) For each  <MATERIAL_ID> in the source, take its corresponding value and make a soap  lookup call in mdm to get tuple ids (mutiple value per material possible) and map each to <id> (under <tuple>)
    3) For each <MATERIAL_ID> in the source, take its corresponding value and make a soap lookup call in mdm to get <recordind> (single value per material) and map to <id> under <recordind>
    Now, I have done soap lookup for 2)  and getting multiple tupleIDs for a single material
    For 3) also, I am doing a lookup and getting a single ID back 
    Both 2)   and 3) are achieved using  udf soap lookup  - 2) will return a resultlist and 3 a single string value
    My main question is how to do message mapping for achieving step1, 2 and 3. Pls help...its needed badly
    Thanks
    mike

    Hi Mike,
    Below is the logic as per my understanding.
    1- Direct mapping from DEL_FLAG> value <Matcomplete/ field in the target
    2- After lookup Map multiple Tuple Id's to Tuble node.
    3-After lookup Map  recordind to Id .
    If you want it in detail let me know the sample output structure with values.
    Regards,
    Sudha

Maybe you are looking for