Produce multiple target nodes

Hi Experts,
In my SOAP to RFC scenario , the SOAP req contains one input value i.e. MAtnr . I have mapped this field with a field Mat_Number in RFC -Req . Its simply direct mapping . Its working for a single value perfectly .
My requirement is If SOAP -Req contains many matnr values , Its not working . How can I build this MEss Mapping to produce multiple  Mat_Number field in RFC-Req.
Presently It is MATNR----
>MAT_NUMBER.
Can you pls suggest how to build mapping to produce multiple MAT_NUMBER .
Thanks.
Drumi

Mark,
This is source and target structures.
Source::
MT                             1..1
   -Records                1..Unb
       -Matnr                 1..Unb
Target::
ZRFC                                 1..1
     -IMPORT                       1..1
            -Item                      0..Unb
                  - werks           0..1
Here I have mapped matnr -
> werks and Records -
> item .
Can you now explain If I want multiple werks values at target side .
-Drumi

Similar Messages

  • Single source to create multiple target nodes

    Hi Guys,
    I need to create multiple target node as many occurrence of source node. how should i achieve it?
    Source node (1...999999)  to Target node(1..1)
    please suggest.
    Regards
    Swapnil

    Hi Nutan,
    Sorry formatting got messed up so posting again.
    Sorry for the confusion. Target structure is 0..unbounded.
    Source structure ...................................... Target structure
    Message 1 ...................................................Message 1
    ZHRMD_A07 (1...1)..........................................MT_EMPLOYEE (0....unbounded)
         E1PLOG1(1...unbounded)................................ Field1
                                                                                    I need to create MT_EMPLOYEE multiple times depend upon occurences of E1PLOG1.
    Regards
    Swapnil
    Edited by: Swapnil Bhalerao on Mar 3, 2010 12:41 PM
    Edited by: Swapnil Bhalerao on Mar 3, 2010 12:47 PM

  • [Solved] How to create multiple target nodes from single input node (XSL)

    Hello all,
    I have identified what I think is a bug in the visual XSLT mapper (JDev 10.1.3.3). Here is the simplified scenario:
    I have a source XML file that contains a bill-to address and a ship-to address, something like this:
    <header>
    <bill-to-name>My Customer Bill To</bill-to-name>
    <bill-to-address>123 main street</bill-to-address>
    <ship-to-name>My Customer Ship To</ship-to-name>
    <ship-to-address>567 first avenue</ship-to-address>
    </header>I want to translate it to a target XML file that looks like this:
    <addresses>
    <address>
    <address-type>BILLTO</address-type>
    <name>My Customer Bill To</name>
    <street-address>123 main street</street-address>
    </address>
    <address>
    <address-type>SHIPTO</address-type>
    <name>My Customer Ship To</name>
    <street-address>567 first avenue</street-address>
    </address>
    </addresses>Note that what I am trying to do is to create two nodes in the target (something like a for-each), but where there is no repeating node in the source.
    I was able to do this quite simply with a map like this:
    <xsl:template match="/">
      <ns2:addresses>
        </ns2:address>
          <ns2:address-type>
            <xsl:text disable-output-escaping="no">BILLTO</xsl:text>
          </ns2:address-type>
          <ns2:name>
            <xsl:value-of select="/ns1:header/bill_to_name"/>
          </ns2:name>
          <ns2:street-address>
            <xsl:value-of select="/ns1:header/bill_to_address"/>
          </ns2:name>
        </ns2:address>
        </ns2:address>
          <ns2:address-type>
            <xsl:text disable-output-escaping="no">SHIPTO</xsl:text>
          </ns2:address-type>
          <ns2:name>
            <xsl:value-of select="/ns1:header/ship_to_name"/>
          </ns2:name>
          <ns2:street-address>
            <xsl:value-of select="/ns1:header/ship_to_address"/>
          </ns2:name>
        </ns2:address>
      </ns2:addresses>
    </xsl:template>As long as I only use the source view for the xsl file, this works fine and tests just fine. As soon as I switch over to the graphical (design view), the source gets mangled to:
    <xsl:template match="/">
      <ns2:addresses>
        </ns2:address>
          <ns2:address-type>
            <xsl:text disable-output-escaping="no">BILLTOSHIPTO</xsl:text>
          </ns2:address-type>
          <ns2:name>
            <xsl:value-of select="/ns1:header/bill_to_name"/>
            <xsl:value-of select="/ns1:header/ship_to_name"/>
          </ns2:name>
          <ns2:street-address>
            <xsl:value-of select="/ns1:header/bill_to_address"/>
            <xsl:value-of select="/ns1:header/ship_to_address"/>
          </ns2:name>
        </ns2:address>
      </ns2:addresses>
    </xsl:template>which obviously does not work.
    So:
    1). Should my original map work? If not, what is the correct way to do it?
    2). If the map should work (it does), this looks like a bug in the design view.
    3). If my map should work, is there a way to do this in the design view?
    Kind regards,
    John

    John,
    GUI has limited functionality and hence it does not support all the constructs. If you want to implement soln that is visible in gui follow this steps.
    for-each(bill-to-name)
         create <address>tag
         map concat(BILLTO) to <address-type>
         map value of <bill-to-name> to <name>
         map value of <bill-to-address> to <street-address>
    select the for-each you created - right click -> add xsl node ->clone for-each
         repeat similar steps for mapping <ship-to_name>...etc
    If you still unsure send me the source & target xsd and I will send the xsl your way. You can email me at [email protected]
    Dipal

  • How to map one element to multiple target nodes? Kindly help!

    Hi Experts,
       I have a source XML:
       <Inventory>
             <MaterialNo>Z001</MaterialNo>
             <InventoryLineItem>
               <BatchNo>B001</BatchNo>
               <Quantity>100</Quantity>
             </InventoryLineItem>
             <InventoryLineItem>
               <BatchNo>B002</BatchNo>
               <Quantity>120</Quantity>
             </InventoryLineItem>
             <InventoryLineItem>
               <BatchNo>B003</BatchNo>
               <Quantity>50</Quantity>
             </InventoryLineItem>
       </Inventory>
    I want the target output as: This is a RFC function module which has an internal table ITAB_STOCK as the input parameter.
       YGET_STOCK
           ITAB_STOCK
             Item
                 MM - Z001
                 Batch - B001
                 Qty - 100
             Item
                 MM - Z001
                 Batch - B002
                 Qty - 120
             Item
                 MM - Z001
                 Batch - B003
                 Qty - 50
       What I am getting is:
            YGET_STOCK
           ITAB_STOCK
             Item
                 MM - Z001
                 Batch - B001
                 Qty - 100
             Item
                 Batch - B002
                 Qty - 120
             Item
                 Batch - B003
                 Qty - 50
          The MaterialNo (MM) is not coming in all the items. What could be the problem in my graphical mapping? How to achieve the expected target uisng graphical mapping?
          Kindly help!
    Thanks
    Gopal

    Hello,
      Just do the below mapping you will get it...
    Map InventoryLineItem to Item in your table.
    Then MaterialNo--->CopyValue---->MM
                                       [0]
    You will get it let me know if not.
    Regards,

  • Multiple Target Files as the number of times Item in source node

    Hi all
    I am new XI ,my scenario is File to File and my data type structures for source and target are as follows 
    Data type for source
    Source     
         Header      1:unbound
             Org       1:unbound
    In declaration of target data type occurrence of all child nodes are 1:unbounded. And I have used it in Message type and in message mapping for my target message type occurrence is showing as 1:1.
    My objective is to replicate this entire Target as the no of times the Item is occurring in source  ie for multiple items in source I want multiple target files. For this I have mapped item node of source to Target(parent node). But in mapping test it is only displaying one Target structure for multiple nodes in source. Please Help me in solving this issue

    Hi Satish,
    Use Multi Mappings :
    When you create message mapping change the occurence of target from 1 to unbounded. This will allow you to create multiple target structures.
    Then map them accordingly as per your need and you can see multiple output in test.
    Just you have to be more focused on the context and for that you have to go thro' the mapping documents.
    Search related documents on SDN and go thro' them.
    Regards,
    Shri

  • Multiple Target files as the item in source file

    Hi all ,
    I am new XI ,my scenario is File to File and my data type structures for source and target are as follows 
    _Data type for source:     _               
    Source
          Header     1:unbound                     
              org       1:unbound
              order     1:unbound
          Item             1:unbound    
               itemno   1:unbound
               matno   1:unbound
    Data type for Target
    Target
         org          1:unbound
         order        1:unbound
        itemno      1:unbound
       matno         1:unbound
    In declaration of target data type occurrence of all child nodes are 1:unbounded. And I have used it in Message type and in message mapping for my target message type occurrence is showing as 1:1.
    My objective is to replicate this entire Target as the no of times the Item is occurring in source  ie for multiple items in source I want multiple target files. For this I have mapped item node of source to Target(parent node). But in mapping test it is only displaying one Target structure for multiple nodes in source. Please Help me in solving this issue .
    Full Points will be awarded
    Thanks & Regards
    Satish.

    Hi,
    If you want multiple Targerts you need to use UseOneAsMany.
    check below link
    http://help.sap.com/saphelp_nw70/helpdata/en/38/85b142fa26c811e10000000a1550b0/content.htm
    Thanks,
    RamuV

  • Server 2012 R2 iSCSI Target - Multiple targets per iSCSI Virtual Disk with CHAP

    Scenario I am trying to achieve is this:
    Windows Server 2012 R2 serves as iSCSI Target configured to have 1 iSCSI Virtual Disk
    2 Hyper-V servers connecting to this target with iSCSI Inistator and have multiple targets for that iSCSI Virtual Disk using CHAP
    **These 2 are nodes in fail over cluster, this iSCSI is added as a CSV.
    Issue that I have, is that you can only have 1 target per iSCSI Virtual Disk
    Both Hyper-V servers can connect to this LUN without issue when I add both initiator IDs to the target, but once I enable CHAP, you can only put one initiator ID in the "Name" field, so I can only connect from 1 Hyper-V server.
    Do you know of a way around this?

    From my understanding, "chaptest" is a single target, my goal was to make 2 targets to the same iSCSI virtual disk.
    So if you were to right click the iSCSI virtual disk that "chaptest" is assigned to and click "Assign iSCSI Veritual Disk...", then select "New iSCSI Target, and proceed with the wizard it removes the "chaptest" target
    and adds the new one just created.
    My goal was to have 2 targets to 1 iSCSI VD, but seeing your screenshot, with 2 initiators connected, that goal doesn't seem needed anymore.
    I was under the impression that the "User name" = the iscsi initiator IQN name, which had to be unique. That is why I thought I would need 2 targets.
    Thanks

  • Biztalk Map create duplicate target node

    Using biztalk mapper, I need a target node to be duplicated.. I have created a simplified version of my issue. Please see below map
    link for source and destination schema.
    I  need the target Option node to be duplicated for each OptionNotes. The value of OptionNotes is to be split by a pipe ("|"),
    then map to target Code and Description.
    The input is as below:
    <ns0:Source xmlns:ns0="http://Test.SOAP.Source1">
    <Option>
    <OptionID>ID0_NoNotes</OptionID>
    <OptionName>OptionName_0</OptionName>
    </Option>
    <Option>
    <OptionID>ID1_NoNotes</OptionID>
    <OptionName>OptionName_1</OptionName>
    <OptionNotes>NOTE1|BLAH1</OptionNotes>
    <OptionNotes>NOTE2|BLAH2</OptionNotes>
    </Option>
    </ns0:Source>
    The output should be as below:
    <Destination>
    <Options>
    <Option>
    <Code>ID0_NoNotes</Code>
    <Description>OptionName_0</Description>
    </Option>
    <Option>
    <Code>ID1_NoNotes</Code>
    <Description>OptionName_1</Description>
    </Option>
    <Option>
    <Code>NOTE1</Code>
    <Description>BLAH1</Description>
    </Option>
    <Option>
    <Code>NOTE2</Code>
    <Description>BLAH2</Description>
    </Option>
    </Options>
    </Destination>
    Tried to use Looping and combination with Value Mapping, but to no avail. Do I have to resort to inline xslt?
    Thanks.

    Thanks for all your answers.
    @Pi_xel_xar Your suggestion requires a change in the message schema.
    @Nadeem We have already tried the solution on the blog, but it's not quite the scenario we face. The issue is the OptionNote is in the same layer as OptionID and OptionName.
    We have used another tool, which has done this easily. We then get the XSLT and import it as part of Inline XSLT scripting functoid.
    The XSLT produced was as below:
    <xsl:for-each select="ns0:Source/Option">
    <Option>
    <xsl:for-each select="OptionID">
    <Code>
    <xsl:value-of select="string(.)"/>
    </Code>
    </xsl:for-each>
    <xsl:for-each select="OptionName">
    <Description>
    <xsl:value-of select="string(.)"/>
    </Description>
    </xsl:for-each>
    </Option>
    </xsl:for-each>
    <xsl:for-each select="ns0:Source/Option/OptionNotes">
    <xsl:variable name="var1_resultof_cast" select="string(.)"/>
    <Option>
    <Code>
    <xsl:value-of select="substring-before($var1_resultof_cast, '|')"/>
    </Code>
    <Description>
    <xsl:value-of select="substring-after($var1_resultof_cast, '|')"/>
    </Description>
    </Option>
    </xsl:for-each>
    Thanks everyone.

  • Batch Automap to Multiple Target Applications

    Hello,
    I've Googled and read through the admin guide but I'm still confused with this function.  I have multiple target applications in one FDM application and I need to setup an automap function for all the target applications.
    I would be very grateful if someone could answer the following questions and describe the process.
    How do you set  “AutoMapCorrect” location for multiple target applications since there are different dimensions in each application? 
    Do I have to add a suspense member for each dimension in every target application?
    I’m not sure how to produce a report that will tell a user: Here are the automapped members of the outline that kicked-out during this run?
    Any help is greatly appreciated.
    Thanks!

    As far as your first 2 questions, I can not provide a lot of help, as I'm pretty sure the out of the box automapping works only for the default adapter but I'm not entirely sure on that.  To the 3rd problem, I've implemented a little script and put a taskflow associated to it in menumaker.  I've toned this down a bit so I may have missed something in the syntax, in my implementation, I also removed the records of the suspense mapping to help push the user to fix them on a timely basis and added some error trapping.  This was done by changing select * to delete * from tDatamap.
        strSQL = "Select * from tDatamap "
        strSQL = strSQL & "Where SrcDesc = 'Auto Map Suspense'"
        Set rs = DW.DataAccess.farsKeySet(strSQL)
        If Not rs.bof And Not rs.eof Then
            Do Until rs.eof
                lngCounter = lngCounter + 1
                strProblem = strProblem & rs.fields("srcKey") & vbcrlf
                rs.movenext
            Loop
        rs.close
        Set rs = Nothing
            RES.PlngActionType = 2                '(See Enumeration: ScriptActionTypes)
            RES.PstrActionValue = "The Following were the suspense Maps" & vbcrlf & strProblem
    End Sub
    Regards
    JTF

  • Generating target nodes dynamically in message mapping

    Hi XI GURUS
    I am trying to generate target node using using more then source node. Is it possible to do this.
    I need this as in source I have 2 different nodes (0 to unbounded) and in target I want to create corresponding number of target nodes. For e.g if I have 2 + 1 nodes in source then I want to create 3 nodes in target
    Source as below
    <FIRSTNAME>
         <Raj>
         <Kum>
    </FIRSTNAME>
    <FIRSTNAME>
         <Naveen>
         <Kumar>
    </FIRSTNAME>
    <CITY>
    <bANGALORE>
    </CITY>
    Desired output in target as below
    <ADDRESS>
    <qwerty1>
    <ADDRESS>
    <ADDRESS>
    <qwerty2>
    <ADDRESS>
    <ADDRESS>
    <qwerty2>
    <ADDRESS>
    Can i follow an alternative approach (using java function) of counting the total number of occurences of  source nodes and generating as many number of the target node
    Thanx

    If you have a condition check for each of the source node to be mapped to the target node,
    use "create if" standard function and pass the boolean result of your Condition check as an input to this standard function. For each "true" a value would be added to the output queue. If you have a simple condition check on some source field value for each correspoding node, use "if without else" or depending on the complexity of the condition you may use a udf to get the boolean outcome.
    And for mapping from more than on type of source node, you may duplicate subtree for target node.
    Regards,
    Suddha

  • Loading Data to Multiple Targets in BI

    Hi Experts,
    I have one doubt regarding data load to multiple targets in BI. I explain clearly- the scenario is to load the data coming from one source system to multiple Data Targets in BI. Like in BW, we will just create multiple update rules from InfoSource to different targets. In InfoPackage maintenance screen, under  Data Targets Tab, we will select the respective targets which we want to load and we run the InfoPackage, it will updates the data to all the selected targets in the infopacakge.
    But in BI, how we will implement this scenario, bcoz here we need to create the individual DTPs, and there is no options to load the data simultenaously to multiple targets.
    So, is there any solution to implement this scenario in BI, plz expalin.
    Thnaks in Advance
    Ragards
    Ramakrishna Kamurthy

    Hi Dennis,
    No worries at all. I've been trying different approaches and strangely it does seem to load data packages faster when going via an InfoSource. (I don't understand why). However, it doesn't want to do it parallel.
    Whereas when I went loaded direct from the DataSource to DataSource, it processed data packages twice as slow but three at a time. The result being without the InfoSource was faster. This can be seen in the DTP Process Monitor and in SM50.
    Both DTPs had the default setting in Settings for Batch Manager of 3 parallel processes.
    Our batch queues in SM50 have not been blocked with other processes.
    Has anyone else had problems with parallel processes when loading via an InfoSource?
    Thanks
    Adrian
    P.S.
    I think I've discovered two cases where InfoSource may bring performance improvements:
    Filtering Records
    Transformation A includes the common and more simplistic transformations. e.g Sets a flag "Relevant" for certain conditions being met.
    Transformation B includes the complex transformations. At the beginning of B, you include a Start Routine that filters out records not marked "Relevant". That way it only does the complex work on relevant records.
    Time Conversion
    If your Data Source has Fiscal Period, but you wish your DataTarget to have Calendar Month, you need to write a routine to covert if you extract direct from DataSource to DataTarget.
    Whereas, if the Fiscal Period is passed to an InfoSource, you can use Time conversions or formulas to convert Fiscal Period to Calendar Month in a transformation between InfoSource and DataSource
    Edited by: Adrian Bell on Jul 31, 2008 9:33 AM

  • ABAP MAPPING Querry - How to create Different Target NODE NAME as of Source

    Hi,
    In abap Mapping
    <b>DATA READ FROM SOURCE XML NODE into <u>incode</u></b> ******
    data: incode type ref to if_ixml_node_collection.
    incode = idocument->get_elements_by_tag_name( 'BUSINESS_DAY' ).
    <b>CREATE OUTPUT XML NODE WITH SAME NAME AS <u>'BUSINESS_DAY'</u></b> **
    data: outcode type ref to if_ixml_node.
    outcode = incode->get_item( index = 0 ).
    data irc type i.
    irc = msgtype->append_child( outcode ).
    *<b>BUT TO CREATE OUTPUT XML NODE WITH <u>DIFFERENT NAME AS 'BUSS_DAY'</u></b>*
    data: ws_val type string VALUE 'xyz'.
    data: elementsender type ref to if_ixml_element.
    elementsender = odocument->create_simple_element(
    name = 'BUSS_DAY'
    value = ws_val
    parent = msgtype ).
    <b>Please guide me how I can assign <u>incode</u> value to ws_val.
    So that I can generate <u>OUTPUT XML NODE with different name as of SOURCE XML NODE</u></b>
    i.e. How to create Different Target NODE NAME as of
    Source with same Data
    <Note>: I am using "How to... Use ABAP Mapping in XI 3.0 ver.1.00" and to create different NODE name as of source
    is not given in it.
    Thanks & Regards.

    Hi ABAPers,
    Please Guide Me .....
    <u>This is ABAP Mapping problem in XI.</u>
    <b>How can I read data from incode into ws_val.</b>
    data: <b>ws_val</b> type string
    data: <b>incode</b> type ref to if_ixml_node_collection.
    <b>incode</b> = idocument->get_elements_by_tag_name( 'BUSINESS_DAY' ).
    Best Regards

  • How to remove target node if source field value is empty SAP PI Mapping

    Hello,
    how to remove target node if source field value is empty in graphical Mapping.
    Like if
    MIddle name in source filed is empty, I would like to eliminate target field from out put XML.
    Thank you
    John

    Hi Jhon,
    If you want to remove all empty tags and you dont to complicate your message mapping, you can use a XSL, after the message mapping,  to remove all the empty tags:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="node()|@*">
            <xsl:copy>
                <xsl:apply-templates select="node()|@*"/>
            </xsl:copy>
        </xsl:template>
        <xsl:template match="*[not(@*|*|comment()|processing-instruction())
         and normalize-space()='' ]"/>
    </xsl:stylesheet>
    Regards

  • Child element of target node in message mapping getting suppressed

    Hello All,
                      I am having  mapping where i am trying  to generate the target node based on some condition of the source structure ,this is working fine ,I am able to generate the target node once the condition gets satisfied ,but the problem is one of the  child elements of the same node is not getting populated,its getting suppressed,i have some condition for the same
    I checked  the  queues its showing value as
    SUPPRESS
    Value
    Value ( in grey )
    But still element is not getting generated..
    I have added a condition used at the node function and apart from other condition of element..
    If some body have the solution for the same,please help me out
    Thanks in advance
    Rajesh

    Hi Rajesh,
    The Error is mostly cause of that the node and your child are in same context.
    You got to remember that the parent node creates the context, and then the child element puts the value in it.
    Try putting your child element to a higher context then mapwithdefault for your supress and then removecontext.
    This Issue, you got to work it out with the node functions,
    I had the same kind of issue in my mapping, it was rectified with the help of node functions as mapwithdefault, removecontext.
    Further unless one sees the mapping of your issue it is a bit difficult to imagine it and answer it.
    For more clarifications please give the full hierarchy, and the condition. As of now try with the node functions.
    Thanks
    Ashmi

  • Target node creation on condition

    Hi I have a requirement where i have to create a target node based on a requiremnt.
    the source is                                         The target is
    Line                                                     Tar
      a1                                                         C1
      b1                                                         C2
    c1
    Line
    a1
    b1
    c2
    Line                                                    Tar
    a2                                                          C3
    b2
    c3
    I have achieved creating Tar based on a b values . now i have to map the C target so that it is created for every c value . but if a,b values are same then C has to be in the same Tar element.
    How can i achieve this . Any help is greatly appriciated.
    Note: i just need the mapping for C node. not the Tar node.
    Thank you

    Hi ,
    in my input i have,
    <Name>
    <FirstName>demo</FirstName>
    <LastName>test</LastName>
    </Name
    <Name>
    <FirstName>Testdemo</FirstName>
    <LastName>test</LastName>
    </Name
    <Name>
    <FirstName>Test</FirstName>
    <LastName>test</LastName>
    </Name
    <Name>
    <FirstName>demo data</FirstName>
    <LastName>test</LastName>
    </Name
    So i have to create Name node in target whenever FirstName is  starts with demo with other values in the corrspoinding Name node.
    So my target will be
    <Name>
    <FirstName>demo</FirstName>
    <LastName>test</LastName>
    </Name>
    <Name>
    <FirstName>demo data</FirstName>
    <LastName>test</LastName>
    </Name
    Please tell me how to get this
    Thanks
    Archanaa

Maybe you are looking for