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.

Similar Messages

  • Interface-Mapping with a Fault Message Type

    Hi,
    we have an abap-proxy and some messages generated errors. The errors can be displayed via sxmb_moni. The proxy raises an "Application Error (Restart possible)".
    Now I wanna transform the generated fault message (of the proxy) with a message mapping and send the output to a file.
    My problem is, that it is not possible to define an interface mapping with the fault message as well as it is not possible to define a receiver determination.
    Any ideas?
    Thanks a lot
    Regards
    Wolfgang Hummel

    Hello
    As far as I know you can propogate the application error back to the calling application only in case of a Synch Interface? Are you making a Synch call where the proxy triggers a fault message,  if yes then all you need to do is to make the change in XI to have the fault message for both the outbound and inbound message interfaces and then a corresponding fault message mapping and select this in the Interface Mapping and then the fault message will be sent to the source / calling application.
    In the case of Asynch calls I don't think this is possible until you use a BPM. Have not tried this myself though.
    Regards,
    Bhavesh

  • I need your expert opinion on how to create a map with multiple conditions.

    Hello.
    I need your expert opinion on how to create a map with multiple conditions.
    I have a procedure (which i cannot import or re-create in OWB due to the bug), so i am trying to create a map instead :-(
    How can i create a cursors within the map?
    My function creates table and cursor.
    Then it will have to check for duplicates in the tables (the one created and another table) - the criteria for finding duplicates is a number of fields.I then need to place few different conditions (if some attributes are not available) and it has to load cursor based on this conditions. The next step is to fetch the data into the cursor based on what attributes are missing.
    The next thing it will do is insert the data into table (if record doesn't exist), output the error in separate table is record is corrupted, or update the record with changed information.
    In short i need to re-create match / merge but with conditions, iterations etc 'built into' it.
    I can read up on available functions - it's just what would be the best options? and what would be the best approach to do so?
    In my function i use %rowtype - but cannot use it in owb - so what would be the alternative? i don't really want to create a lot of variables and then have a nightmare of maintaing it. are there any tips regarding this?
    having looked through Oracle dedupe - it's not really what i need because it is just DISTINCT.
    I would appreciate any help / advise on this.
    Thank you very much

    thanks a lot for your reply - i will look into this option :-)
    it is a bit more complicated now as i have to re-create the match / merge and then somehow 'tweak' it to achieve the result i need.
    At the moment i am looking to breakdown the package into smaller chunks 'functions' and try creating the map that way.
    Anyway, thank you very much for your suggestion.

  • Item master Item mapping with multiple vendors

    Hi Experts,
    I need your help, I have one item like 'TV' in item master and need to enter multiple prices make wise samsung,sony,lg like.
    How can I maintain this in SAP B1 2005B.
    One Item mapping with multiple vendors with price...
    Thanks,

    Dear Aarti,
    I would recommend to have multiple items for the different brands you are selling.
    For example, you can call the item code Samsung, Sony etc and all of these item can be added to an item group called TV.
    Then you can assign a price to the items in the price lists.
    Alternatevely, if you need to have one single item called TV and different prices according to the brand, create a number of price lists called Sony, Sumsung etc and then if you know which customers buy a particular brand you can connect the price list to the customer under
    Business partner master data - Payment Terms - Price list.
    Please, if these 2 options are not helpful let us know the exact scenario and business reason behind your request.
    Kind Regards,
    Marcella Rivi
    SAP Business One Forums Team

  • How do i test split by value functionality in mesage mapping with multiple

    how do i test split by value functionality in mesage mapping with multiple values ?
    regards,
    venkat

    repeat your source node. in mapping editor you can view queues by right clicking to mapped element.. selecting Display Queues option.. this will show u your values .
    You can also select this Display Queue option for splitByValue option
    for example
    source--->splitByValue>target
    Try viewing your queues to each this step... for splitByValue in display Queue you will see context inserted(grey colour) accodingly

  • Multiple message mappings in one integration scenario

    I am trying to send a message to a marketplace that uses a web service interface. First I have to map the SRM PO to OAGIS XML, then This must be embedded in the message of the web service which requires a further mapping. In the integration scenario in the repository it seems straight forward, however the configuration of the scenario in the directory seems a little strange. This becaue the middle step does not really have an eternal receiver, as it must stay in the integration engine until the final conversion. Is it actually possible to perform several mapping in series or must I use an integration process for the middle mapping?

    Andrew,
    I am addressing the same problem as follows.
    If you need a canonical mapping (such as OAGIS in your example) you need 2 mappings for 3 messages A(source) to B(canonical) to C(target). If you try to use XI (without BPM) as an action between the source and the target need to configure a channel in and out which as far as I can see is not possible.
    When setting multi-mapping you seem to only have the folowing options:
    Multiple source and multiple targets but this seems to limit you to one mapping program.
    Multiple mappings if I have only one source and one target.
    I think this is designed to map one or many sources to one or many targets in one mapping program.
    Also you can apply a series of mapping programs to a single source and target pair.
    If I understand Michal's solution you would define A as the source and C as the target. You then use multi mapping to get to the final result, but I think this is still on a single source and target. A second solution is to include multiple mappings as additional modules in the channel adpator.
    To take advantage of the canonical approach I am using a simple integration process with a receive and send step. All this realy does is get round the problem you highlight of having to have channels for the middle action in your integration scenario. This is an overhead but does allow you to add splitting and combining messages if needed in the future without much additional configuration.
    I can't see an easy option without BPM. Maybe there is an alternative but I can't find it. Maybe a next release of XI could include an interface mapping configuration that allows a sequnce of mapping betweem multiple pairs of maps:
    Seq  Source -
    Mapping Program   -
    Target
    1 -
      Message A  -
      Mapping Program 1 -
        Message B
    2 -
       Message B  -
      Mapping Program 2 -
        Message C
    I hope this helps.
    Regards
    Antony

  • Interface Mapping with out SWCV ?

    HI Guys,
    is it possible to create an interface mapping in the  XI Repository even without a software component version and a message  interface.
    Actually i have developed a Proxy-Soap synch scenario and now we got the need to change our namespace name and the interface name. Is there nay way that i can change the namespace and the interface name wiht the existing mappings
    any help would be appreciated
    Thanks,
    srini

    Hi Srini,
    >>>is it possible to create an interface mapping in the XI Repository even without a software component version and a message interface
    Neither nor.
    >>>Actually i have developed a Proxy-Soap synch scenario and now we got the need to change our namespace name and the interface name. Is there nay way that i can change the namespace and the interface name wiht the existing mappings
    You can copy single objects and all of one namespace to the other. The linked objects have to be changed manually.
    Regards,
    Udo

  • 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

  • Define Inbound Interface for Interface Mapping with Java functions

    Hi,
    we are developing an R/3-XI-ITK-SBO system. We realized our SOAP component as custom java functions and we installed it on ITK.
    We need to import and configure these functionality in XI because we need to reference to it when we define the Message Interface and the Interface Mapping in Integration Builder Design.
    Someone is able to tell us how we can import and configure these java function or definition in XI?
    Thanks in advance.
    Best regards.

    Hi,
    INBOUND:
    Step 1. EDI Subsystem creates an IDoc file from EDI Messages
    2. Subsystem calls Functional Module EDI_DATA_INCOMING from startRFC program.
    3. Data in Control Record is validate against the Partner Profile.
    4. IDoc is generated in Database and syntax check is carried out.
    5. IDoc file is deleted once file read.
    6. Event PROCESSSTATE REACHED is triggered in Idoc Object Workflow.
    7. Check for Process Immediately.
    If NO
    Execute RBDAPP01 Program
    Else
    Read Process Code from Partner Profile
    Process Code Points to Function Module
    Application Document Posted.
    further help:
    check url
    http://www.sappoint.com/abap/ale.pdf
    http://www.sappoint.com/abap/ale2.pdf
    http://www.sapgenie.com/ale/configuration.htm
    http://www.sappoint.com/abap/ale.pdf
    http://www.sappoint.com/abap/ale2.pdf
    http://www.sapdevelopment.co.uk/training

  • Sharing values accross multiple message mappings

    Hello all,
       I have a question about the posibility to share a value among severals messages mappings and use it in an operation mapping.
       How can I do it?
       An example:
           I have three message mappings( graphical and Java mappings ) where in the first message I have a value that I have to use in last mapping. In the operation mapping those mappings are executed in sequencial mode.
    Best regards and thanks in advanced
    Ivá

    Hi guys,
      Thank you for your responses.
       The solution for this issue was to create an attribute in a function library and the trick is:
          this solution doesn't work in design time when you test in the Operation Mapping test option but in runtime the solution works.
    Best regards
    Ivá

  • ABAP Mapping with multiple records

    Hi All,
    I am doing an ABAP mapping and I am new to this.
    I have a following record structure:
    <record>
       <field1>
       <field2>
       <fieldn>
    </record>
    I will receive the multiple records with the above structure in single file.
    I have following the Blog from SDN but it is saying only for single record.
    Can please someone post the code for handing multiple records (ie. loop structure).
    or else please mail me at [email protected]
    Regards,
    Shylesh

    Hi Thanks for the reply.
    But actually these threads do not sufficient for my requriement.
    I written the following code and it is working fine for one single record.  But I want to change this code to work for multiple records which I am not able to do as I am new to Object Oriented.
    method IF_MAPPING~EXECUTE.
    initialize iXML
      type-pools: ixml.
      class cl_ixml definition load.
    create main factory
      data: ixmlfactory type ref to if_ixml.
      ixmlfactory = cl_ixml=>create( ).
    create stream factory
      data: streamfactory type ref to if_ixml_stream_factory.
      streamfactory = ixmlfactory->create_stream_factory( ).
    create input stream
      data: istream type ref to if_ixml_istream.
      istream = streamfactory->create_istream_xstring( source ).
    parse input document =================================================
    initialize input document
      data: idocument type ref to if_ixml_document.
      idocument = ixmlfactory->create_document( ).
    parse input document
      data: iparser type ref to if_ixml_parser.
      iparser = ixmlfactory->create_parser( stream_factory = streamfactory
                                                     istream = istream
                                                    document = idocument ).
      iparser->parse( ).
    get message content of tag <empno>
      data: incode type ref to if_ixml_node_collection.
      data: incode1 type ref to if_ixml_node_collection.
      data: incode2 type ref to if_ixml_node_collection.
      data: incode3 type ref to if_ixml_node_collection.
      data: incode4 type ref to if_ixml_node_collection.
      data: incode5 type ref to if_ixml_node_collection.
      data: incode6 type ref to if_ixml_node_collection.
      data: incode7 type ref to if_ixml_node_collection.
      data: incode8 type ref to if_ixml_node_collection.
      data: incode9 type ref to if_ixml_node_collection.
      incode = idocument->get_elements_by_tag_name( 'empno' ).
      incode1 = idocument->get_elements_by_tag_name( 'empname' ).
      incode2 = idocument->get_elements_by_tag_name( 'address1' ).
      incode3 = idocument->get_elements_by_tag_name( 'address2' ).
      incode4 = idocument->get_elements_by_tag_name( 'address3' ).
      incode5 = idocument->get_elements_by_tag_name( 'zipcode' ).
      incode6 = idocument->get_elements_by_tag_name( 'mailid' ).
      incode7 = idocument->get_elements_by_tag_name( 'phoneno' ).
      incode8 = idocument->get_elements_by_tag_name( 'country' ).
      incode9 = idocument->get_elements_by_tag_name( 'city' ).
    get XI header data (here: "Sender Service")
      data: l_sender_service type string.
      l_sender_service = param->get( if_mapping_param=>sender_service ).
    add trace (appears in message monitoring)
      data: l_trace type string.
      concatenate 'Sender Service = ' l_sender_service into l_trace.
      trace->trace( level = '1'
      message = l_trace ).
    build up output document =============================================
    create output document
      data: odocument type ref to if_ixml_document.
      odocument = ixmlfactory->create_document( ).
    create element 'SenderService' and add it to the document
      data: msgtype type ref to if_ixml_element.
      msgtype = odocument->create_simple_element( name = 'record'
                                                parent = odocument ).
    create element 'SenderService' and add it to the output document
      data: elementsender type ref to if_ixml_element.
      elementsender = odocument->create_simple_element( name = 'SenderService'
                                                       value = l_sender_service
                                                      parent = msgtype ).
    add node to the output document
      data: outcode type ref to if_ixml_node.
      data: outcode1 type ref to if_ixml_node.
      data: outcode2 type ref to if_ixml_node.
      data: outcode3 type ref to if_ixml_node.
      data: outcode4 type ref to if_ixml_node.
      data: outcode5 type ref to if_ixml_node.
      data: outcode6 type ref to if_ixml_node.
      data: outcode7 type ref to if_ixml_node.
      data: outcode8 type ref to if_ixml_node.
      data: outcode9 type ref to if_ixml_node.
      outcode = incode->get_item( index = 0 ).
      outcode1 = incode1->get_item( index = 0 ).
      outcode2 = incode2->get_item( index = 0 ).
      outcode3 = incode3->get_item( index = 0 ).
      outcode4 = incode4->get_item( index = 0 ).
      outcode5 = incode5->get_item( index = 0 ).
      outcode6 = incode6->get_item( index = 0 ).
      outcode7 = incode7->get_item( index = 0 ).
      outcode8 = incode8->get_item( index = 0 ).
      outcode9 = incode9->get_item( index = 0 ).
      data irc type i.
      irc = msgtype->append_child( outcode ).
      irc = msgtype->append_child( outcode1 ).
      irc = msgtype->append_child( outcode2 ).
      irc = msgtype->append_child( outcode3 ).
      irc = msgtype->append_child( outcode4 ).
      irc = msgtype->append_child( outcode5 ).
      irc = msgtype->append_child( outcode6 ).
      irc = msgtype->append_child( outcode7 ).
      irc = msgtype->append_child( outcode8 ).
      irc = msgtype->append_child( outcode9 ).
    render document ======================================================
    create output stream
      data: ostream type ref to if_ixml_ostream.
      ostream = streamfactory->create_ostream_xstring( result ).
    create renderer
      data: renderer type ref to if_ixml_renderer.
      renderer = ixmlfactory->create_renderer( ostream = ostream
                                              document = odocument ).
      irc = renderer->render( ).
    endmethod.
    Can anybody help me making these changes.
    Thanks in advance.
    Shylesh

  • Problem in mapping with multiple values

    Hi all,
    I am facing a problem during mapping. I am explainning the problem with a example.
    Suppose i have a source table named Employee which has two columns emp no and account no. I have a target table Emp_account which has also the same columns.
    One employee may have more than one accounts. In source table this account nos are stored in account no column in one row corresponding to emp no. The multiple values in account no are separated by comma for one record in source table.
    But in the target table Emp_account a single record will be inserted for each employee's separate account. There should not be multiple values separated by comma in account no column of target table.
    So if any employee has two accounts this will be stored as one row in source table but in target table it will divided into two different rows for each account.
    EMPLOYEE(Source)
    emp no account no
    10 101, 102
    EMP_ACCOUNT(Target)
    emp no account no
    10 101
    10 102
    Think I explained the requirement.. How can i made this in OWB mapping editor..Is it possible?...Can any operator perform this task...If any of u know about this plzz give some solution..It's very important ..
    Thanks & Regards,
    Sumanta Das

    Hi,
    With reference to your question.
    Can any operator perform this task..I don't think any single operator will help you.
    I suggest using an intermediate (staging) table by using a PL SQL procedure with output port to store the values of account number provided the number of accounts are limited. Else use an array variable for account of an employee.
    In short no simple solution because of the bad source design else the pivot/unpivot operator would have helped you.
    Cheers
    - Mohammed

  • Configuring receiver determination with multiple messages in BPM

    I am configuring a BPM scenario which uses 3 abstract interfaces, one for receiving, 2 for sending. I need 2 abstract interfaces while sending because they use different message types. I have created a Receiver Determination for the 1st interface, but the problem is that when I try to create the second Receiver Determination the 2nd abstract interface is not listed after I select the Integration Process. Just the 1st interface is listed under the Integration Process. What might be the problem?

    Did you try to delete and reimport the BPM with the same name ?
    SKM

  • Mapping with changed message structure

    Hello,
    I have dowloaded a SAP IDOC into XI and build a mapping based on this IDOC.
    Now the IDOC is enhanced with a new (Z)segment and I have dowloaded the new structure again.
    But the new segment is not visible in the mapping based on that IDOC.
    Do I have to create a new mapping???
    Or how can I refresh the mapping, so that the new segment can be used there?
    best regards
    Werner Magerl

    Hi Werner,
    Check the following:
    1.Name of the Imported OLD IDoc structure and the new one.
    find out whether they are same.
    2.In your existing message mapping, make sure you have used the newly imported Idoc structure.
    In the edit mode of your message mapping, click on the button with a "hand and question mark".Navigate to the software component> software component version> Imported objects>Idocs>"select your new IDoc structure".
    If the are any new mapping to be done for the Z segment, do it.
    3.save and activate changes.
    Regards,
    Sridhar

  • ACE: a class-map with multiple ports... what about the probe/serverfarm?

    Hello Gilles,
    One question about something I was not able to find in the documentation.
    Lets say I have one class-map which includes 2 ports (in this case https and 5061).
    Can I associate this class-map to just 1 generic serverfarm and probe for both ports or I have to specify 2 serverfarms/rservers/probes?
    So, by not specifying the ports on the rserver, if a request is received on port 443 (or 5061), it is sent to the same respective port on the rserver?
    The same way is valid for the generic probe.  ACE module is able to probe both ports based on the class-map?
    Thanks and have a great day!!
    Giulio.
    probe tcp PROBE_GENERIC_TCP
      description This probe works for all TCP services by inheriting the VIP port.
      interval 15
      faildetect 2
      passdetect interval 15
      passdetect count 2
      open 2
    rserver host SERVER1_ACCESS
      ip address <1AC>
      inservice
    rserver host SERVER2_ACCESS
      ip address <2AC>
      inservice
    serverfarm host ACCESS-SFARM
      probe PROBE_GENERIC_TCP
      rserver SERVER1_ACCESS
        inservice
      rserver SERVER2_ACCESS
        inservice
    class-map match-any OCS_L4ACCESS
      2 match virtual-address x.x.x.176 tcp eq https
      2 match virtual-address x.x.x.176 tcp eq 5061
    policy-map type loadbalance first-match OCS_L4ACCESS
      class class-default
        sticky-serverfarm ACCESS_STICKY
    policy-map multi-match POLICY
    class OCS_L4ACCESS
    loadbalance vip inservice
    loadbalance policy OCS_L4ACCESS
    loadbalance vip icmp-reply active
    connection advanced-options OCS_VIPTIMEOUT
    nat dynamic XXX vlan 503

    Even if you use the 4710 appliance or expect the inheritance in the module software, it's worth considering if this is really what you want. If you keep multiple ports in the L3/L4 class-map you can't handle the services independently. You will have a common serverfarm for both https and 5061. If https service stops on one rserver, the ACE will place that rserver (and not that service) in out-of-operation state and it won't receive any 5061 traffic either. (You have the fail-on-all probe option but I wouldn't say it's a better choice. In that case, https traffic would be sent to the rserver even if https port is closed as long as there is at least one working service on it.) That's why I prefer a separate class-map and separate serverfarm for each service. (They can contain the same rservers, no need to duplicate.) BUT if the software supports probe port inheritance, you can benefit from it even in this scenario: serverfarm-443 and serverfarm-5061 can both use your PROBE_GENERIC_TCP.

Maybe you are looking for