Help in graphical mapping needed

Hi,
i have a graphical mapping where the scenario is that in input we have the following structure
header0
header1----
occurances 1-unbounded
header2----
occurances  1-2
in the output i have to get the below structure
header0
header1----
occurances 1-unbounded
    |--header2---occurances 1-2
So i have done a one onone mapping
if my inp xml is like the one given below it works
<header0>
<value1>099</value>
</header0>
<header1>
<value1>09</value>
</header1>
<header2>
<value1>hjjd</value>
</header2>
<header2>
<value1>094f9</value>
</header2>
But if the input is like the one given below its not working
<header0>
<value1>099</value>
</header0>
<header1>
<value1>09</value>
</header1>
<header2>
<value1>hjjd</value>
</header2>
<header2>
<value1>094f9</value>
</header2>
<header1>
<value1>09769</value>
</header1>
<header2>
<value1>09469</value>
</header2>
i.e., if header1 repeats its not working can anyone help me in this issue
Thanks in advance,
Bhargav.

Hey Rajeev,
i had activated it and i can also see that in my message mapping.but still its not working.
Hey raj,
As suggested by you i have used splitbyvalue in between header1 in source and header1 in target than the output that was generated is diferrent from that i wanted.The output it generated is
<header0>
<value1>099</value>
</header0>
<header1>
<value1>09</value>
</header1>
<header2>
<value1>hjjd</value>
</header2>
<header2>
<value1>094f9</value>
</header2>
<header2>
<value1>09469</value>
</header2>
but the actual output to be generated should be as gievn in the topmost post.here the header2 under the second header1 is coming under the first header1 only and the second ocurance of header1 is not replicating in the output.
Thanks,
Bhargav

Similar Messages

  • Help needed for Graphical mapping.Tag only once produces

    Hello experts,
    I have a problem in my graphical mapping.This is the example:
    from each segment A in IDOC has to be made Tag A or Tag B in output XML.
    Segment A has a field USER_STATUS and if it is X than Tag B has to be made otherwise Tag A.
    Segment A is 0..9999999. occurence
    Tag A  0..unbounded
    Tag B 0..unbounded.
    I made a mapping
    mapping for Tag A:
    USER_STATUS -> mapwith default(empty)->length->EqualsA (with Constant =0)-> createif->Tag A
    for Tag B as following:
    USER_STATUS -> mapwith default(empty)->EqualsS (with Constant =X)-> createif->Tag B
    The problem is that in output XML, I have only one Tag A or B (depending on field USER_STATUS in first occurence of the segment) while in inbound IDOC 5 segments are with different value of the field: USER_STATUS.
    Does anyone idea to solve this problem!
    Thank you very much for your effort.
    King regards,
    Danijela Zivanovic

    HI,
    CAn you try this way,
    Use Maping Node UseOneAsMany for Tag B
    and pass 3 inputs as
    Constant[]----
    >
    USER_STATUS -> mapwith default(empty)->EqualsS (with Constant =X)----
    >
    USER_STATUS -> mapwith default(empty)->EqualsS (with Constant =X)----
    >
    Same way try for Tag A also.
    Thanks
    Swarup

  • Can i use graphical mapping to do such conversion or do i need java mapping

    Hi Folks,
    Need all your help and experience in solving this .
    Can you let me know is it possible do to such kind of conversion in XI using file adapter or do I need to do java mapping
    Say from rom database I get data in this format
    Seq  Field Name  Field Value
    1    Cust No          Cust 1
    1        S             SS1
    1     Score1            10
    1     Score 2           12
    2     Cust No          Cust 2
    2        S             SS2
    2    Score1            5
    2    Score 2           10
    Based on this my o/p has to be
    Cust 1 SS1 10 12
    Cust 2 SS2 5 10
    ( ie values in the last column )
    The number of rows returned from database can vary . like here for 1 seq it gives 4 in the example bt it can be any number
    Like
    Seq  Field Name  Field Value
    1    Cust No          Cust 1
    1        S             SS1
    1     Score1            10
    1     Score 2           12
    1     Score3            15
    2     Cust No          Cust 2
    2        S             SS2
    2    Score1            5
    2    Score 2           10
    2     Score3            25
    Based on this my o/p has to be
    Cust 1 SS1 10 12 15
    Cust 2 SS2 5 10  25
    is there any way that we can use graphical mapping plus file content conversion to do this or is java based mapping the only solution
    Thanks
    amit

    Hi Amit,
    You can do this using Graphical mapping and File Content Conversion.You concatenate the necessary fields in a Context and assign it to the the field Data(or field name of your wish )) in the target which will of the structure
    <Records>
    <Record>
    <Data>concatenated value</Data>
    </Record>
    </Records>
    and in File Content Conversion
    make Records,Record 0:1 and Data as 0:unbounded
    and give Recordset Structure as Record
    then Record.fieldSeparator as 'nl'
    This will give you desired output
    Regards,
    Sundar

  • Graphical Mapping Help

    Hi
    I am trying to sort idoc segments based on values like below. I have written XSLT before which just broken after applying SPs. i need a break fix immediately before SAP look into the SP issue.
    Now i am leaning towards graphical map. Please help with this
    Sample Structure
    <E1EDL37>
    <EX1DV>0000000000101</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000102</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000103</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000104</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000201</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000202</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000203</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000204</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EXIDV>0000000000200</EXIDV>
    <VHILM>RFID_PALL</VHILM>
    <E1EDL44>
    <EXIDV>0000000000201</EXIDV>
    <EXIDV>0000000000202</EXIDV>
    <EXIDV>0000000000203</EXIDV>
    <EXIDV>0000000000204</EXIDV>
    </E1EDL37>
    <E1EDL37>
    <EXIDV>0000000000100</EXIDV>
    <VHILM>RFID_PALL</VHILM>
    <E1EDL44>
    <EXIDV>0000000000101</EXIDV>
    <EXIDV>0000000000102</EXIDV>
    <EXIDV>0000000000103</EXIDV>
    <EXIDV>0000000000104</EXIDV>
    </E1EDL37>
    Here is the output i am looking for
    <E1EDL37>
    <EXIDV>0000000000100</EXIDV>
    <VHILM>RFID_PALL</VHILM>
    <E1EDL44>
    <EXIDV>0000000000101</EXIDV>
    <EXIDV>0000000000102</EXIDV>
    <EXIDV>0000000000103</EXIDV>
    <EXIDV>0000000000104</EXIDV>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000101</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000102</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000103</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000104</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EXIDV>0000000000200</EXIDV>
    <VHILM>RFID_PALL</VHILM>
    <E1EDL44>
    <EXIDV>0000000000201</EXIDV>
    <EXIDV>0000000000202</EXIDV>
    <EXIDV>0000000000203</EXIDV>
    <EXIDV>0000000000204</EXIDV>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000201</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000202</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000203</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>
    <E1EDL37>
    <EX1DV>0000000000204</EX1DV>
    <VHILM>RFID_CASE</VHILM>
    </E1EDL37>

    Hello,
    This can be done using graphical mapping and without udf. See mapping below:
    Legend: rc = removeContext, sBV = splitByValue :EV = eachValue :VC = ValueChanged, mWd = mapWithDefault
    fBe = formatByExample
    For E1EDL37
    E1EDL37 -> E1EDL37
    For EX1DV
    EX1DV -> rC -> sort:ascending -> sBV:EV -> EX1DV
    For VHILM
    EX1DV -> rC -> sortByKey:ascending -> sBV:EV -> VHILM
    VHILM -> rC -> /
    Now for the fun part
    For E1EDL44
                          EX1DV -> UseOneAsMany (2,3) -> rC -> sortByKey:ascending -----> fBE -> equalsS: -> not -> ifWithoutElse (output of fBE is mapped to then) -> E1EDL44
    EXIDV(setContextTo E1EDL37) -> mWd: -> /                                                / Constant: /
                          EX1DV -> UseOneAsMany (2,3) -> rC -> sort:ascending -> sBV:VC -> /
    EXIDV(setContextTo E1EDL37) -> mWd: -> /
    For EXIDV
                              EX1DV -> UseOneAsMany (2,3) -> rC -> sortByKey:ascending -----> fBE -> equalsS: -> not -> ifWithoutElse (output of fBE is mapped to then) -> sBV:EV -> EXIDV
    EXIDV(setContextTo E1EDL37) -> mWd: -> /                                                / Constant: /
                          EX1DV -> UseOneAsMany (2,3) -> rC -> sort:ascending -> sBV:VC -> /
    EXIDV(setContextTo E1EDL37) -> mWd: -> /
    Hope this helps,
    Mark

  • Need help in modifying mapping parameters of out the box mapping

    Hi There,
    I am a new bee to dac.
    Need help in modifying mapping parameters of out the box mapping, which is invoked by DAC task.
    We got a requirement to edit mapping parameter. When I go and see parameter under mappings tab in a mapping, I could not see any values in it.
    But when I set any value, and validate it. It is successful.
    Is it right way to do it?
    What my concern is, When I initially go and see parameter values under maapings tab in a mapping, they are blank.
    Where is it storing these values?
    Thanks,
    Rag

    If you modify mapping then u have to create new task in dac and dac itself craete parameter file at run time. if you want to add more parameters then do it in dac system parameters tab.
    Thanks
    Jay.

  • Need help in Multi mapping

    Hi experts,
    we have a scenario need to send an EDI text file to 2 different receivers. We are receving the EDI file using the JMS adapter as Sender and File/FTP adapter as a receiver.
    We are using Multi mapping (includes Java mapping and Graphical ) to send the Messages to receivers, While sending we are getting the Error In Moni as "Error in creating Multi XML Document".
    In Java Mapping we are Converting the EDI text to EDI xml with <ns0:Messages1> and the output of Java mapping to Graphical Mapping,
    While testing in Interface Mapping Test it works fine.
    Please provide your Valuable inputs.
    Thanks,
    Ramg

    HI
    The below is the output im getting from Interface mapping
    =====
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge"><ns0:Message1><ns2:MT_Req xmlns:ns2="http://test.com/CommonServices"><DataConversionArea><SapQtySign>P</SapQtySign><Filler>                                                              </Filler></DataConversionArea><DataElement><RspShipToLoc>000000</RspShipToLoc><Filler>                                                                       </Filler></DataElement></ns2:MT_Req></ns0:Message1>
    <ns0:Message2><ns2:MT_In_Req xmlns:ns2="http://test.com/CommonServices"><DataElements><ProdSchedNbr>             </ProdSchedNbr><Filler>0030</Filler></DataElements></ns2:MT_In_Req></ns0:Message2></ns0:Messages>
    =====
    Thanks
    Ramg

  • I need help with my mapping - CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV

    hi, guys, i need help with my mapping, i dont know this error (i not speak english)
    <Trace level="1" type="B">CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV</Trace>
    <Trace level="2" type="T">......attachment XI_Context not found </Trace>
    <Trace level="3" type="T">Mapping already defined in interface determination </Trace>
    <Trace level="3" type="T">Object ID of Interface Mapping 4B903E2DDC853C1493E1DED5C5ED70A3 </Trace>
    <Trace level="3" type="T">Version ID of Interface Mapping 88D96A70BAAE11DFAE5EE925C0A800C2 </Trace>
    <Trace level="1" type="T">Mapping-Object-Id:4B903E2DDC853C1493E1DED5C5ED70A3 </Trace>
    <Trace level="1" type="T">Mapping-SWCV:88D96A70BAAE11DFAE5EE925C0A800C2 </Trace>
    <Trace level="1" type="T">Mapping-Step:1 </Trace>
    <Trace level="1" type="T">Mapping-Type:JAVA_JDK </Trace>
    <Trace level="1" type="T">Mapping-Program:com/sap/xi/tf/_mm_sgipi_fi001_vta_clientes_ </Trace>
    <Trace level="3" type="T">MTOM Attachments Are Written to the Payload </Trace>
    <Trace level="3" type="T">Dynamic Configuration Is Empty </Trace>
    <Trace level="3" type="T">Executing multi-mapping </Trace>
    <Trace level="1" type="E">CL_XMS_PLSRV_MAPPING~ENTER_PLSRV</Trace>
    help me please

    you can use the sharedobject to record a user/computer has taken your quiz, the session data and record their results.  at the start of your quiz, check for the sharedobject and, if it exists, check the other data and take appropriate action.

  • Need Help In The Mapping!!

    Hi,
    The scenario is,
    The Characteristic Name is a 0-unbounded field,
    If the Characteristic Name endsWith u201CSTATEu201D,
    Then,
    We have to check the Characteristic Value, if it is u201CFreshu201D, u201CFrozenu201D or u201CDryu201D,
    Accordingly we have to return value( map to stateIndicator ).
    If I am using Graphical Mapping, it is getting partially solved.
    Problem:
    If the case is,
    Characteristic Name occurs only once and it is ending with STATE or it is not ending with STATE, the mapping works fine.
    But,
    If it occurs more than 1, and if the 1st Characteristic Name is not ending with u201CSTATEu201D then, it is not checking the Characteristic Name which follows, and directly returns an empty value.
    If I am using the following UDF instead graphically checking th "STATE" part,
    int flag=0;
    while(var1.indexOf("STATE")!=-1)
            if(var1.endsWith("STATE"))
                    flag=1;
    if (flag==1)
        return true;
    //Since the default return value of the UDF is String in PI, I am getting ERROR "Type Imcompatibility Required String, Getting Boolean"
    Please reply with what change can I make to the UDF or a solution which I can use instead.
    Thanks and Regards,
    NehaSingh

    >>//Since the default return value of the UDF is String in PI, I am getting ERROR "Type Imcompatibility Required String, Getting Boolean"
    One solution for the above error ...You are returning boolean here. You can return string as below
    int flag=0;
    while(var1.indexOf("STATE")!=-1)
            if(var1.endsWith("STATE"))
                    flag=1;
    if (flag==1)
        return "TRUE";
    }else{
       return "FALSE";
    In mapping..
    check equals function at the output of target and see it has "TRUE" , if true then do what you want...

  • How to use  Advance java function in graphical mapping in XI 2.0?

    Hi,
    currently I am using a simple java function to make an RFC call to R3 system.
    I want to avoid making connection for each lookup. Instead I want to make a single connection for whole message queue and get the corresponding values in some array or container object.
    please suggest a solution.
    I think this is possible using Advance java function, but I am not able to find any example on using Advance java function at help.sap.com.
    thaks in advance.

    Hi!!!
    I'm not sure if I understood you well.
    Do you want to preload some data into your structures in the memory and keep them there so you don't need to make a new connection during processing the whole message or every message?
    In my opinion you can cache some data during processing a message, but it's impossible to cache some data between processing messages.
    If you write your java mapping or you use graphical mapping (even with user-defined function), then you have a java class. The problem is that XI 2.0 reloads this class during processing every message, so even if you load some data from your data source into your structures in the memory, this data will be lost after reloading your mapping class.
    Regards,
    Andrzej Filusz

  • Help Required COMPLEX  MAPPING !!!!! POINTS WILL BE GIVEN !!

    Hii I am doing a file sender config and my message is something like this
    C1TN4028260000PP345700210 2620582 005 0000000000000072020061802 000000000000000000
    C2TN402826000000001037331742557076 0000071641086338975600000110230000394007
    C3TN4028260000000010000071641086338975600097BP 0005 00000000030000000000
    here the C1, C2, C3 are unbounded it is explained below
    This is only a part of the Payload............
    my Datatype format is
    OCCURANCES
    <Data_DT>
    <Record> 1
    <Header> 0..1
    There are many fields....
    </Header>
    <Control_1> 0...unbounded, this is the C1 record
    There are many fields....
    </Control_1>
    <Control_2> 0...unbounded, this is the C2 record
    There are many fields....
    </Control_2>
    <Control_3> 0...unbounded, this is the C3 record
    There are many fields....
    </Control_3>
    <Line> 0..1
    There are many fields....
    </Line>
    </Record>
    Only write E1EDL37 segment if subsequent "C3" record contains C3_Data(This is one of the fields in Segment Control_3) > 0.  If C2_Num = C3_Num, then only one E1EDL37 segment needs to be written for this "C2" record.  If C2_NUM <> C3_NUM, then one E1EDL37 segment has to be written for the C2 record and one has to be written for the C3_NUM for the C3 record.  In this case one E1EDL44 segment must be written with each unique C2_NUM.
    This is a standard Idoc,
    Part of the structure,
    E1EDL37   unbounded
           E1EDL44   unbounded, its in item level of E1EDL37

    Hai,
      <b>Only write E1EDL37 segment if subsequent "C3" record contains C3_Data(This is one of the fields in Segment Control_3) > 0.</b>
      In message mapping  choose <u><b>arithematic options</b></u> like if-else and compare ur data record with the condition and do mapping accordingly.
    <b>If C2_Num = C3_Num, then only one E1EDL37 segment needs to be written for this "C2" record.</b>
      Take if-else operator in  Graphical mapping and compare both C2_NUM and C3_NUM and if true map C2_Num to E1EDL37.
    <b> If C2_NUM <> C3_NUM, then one E1EDL37 segment has to be written for the C2 record and one has to be written for the C3_NUM for the C3 record. In this case one E1EDL44 segment must be written with each unique C2_NUM.</b>
      check for condition C2_NUM <> C3_NUM using if-else operator and if true map corresponding C2 record to E1EDL37  and if false map corresponding C3_NUM to required segment.
      To write E1EDL44 segment for unique C2_NUM....check the flds of C2 record with each other for uniqueness and map the corresponding unique C2_NUM to each E1EDL44.
    I hope this will help u to get through ur mapping.
    Cheers,
    Prasanthi.

  • Problem in  Graphical Mapping

    Hi all,
         i have a Graphical mapping logic here
    Source Structure:
    GS
    GP[1]
      F1-     QI
      SDQ
        F2-     2
    GP[2]
      F1-     QD
      SDQ
        F2-     3
    GP[3]
      F1-     PC
      CTP
        F2- 5.3
    GP[4]
      F1-     AI
      SDQ
        F2-     4
    GS
    Target structure:
          MT
         Material[1]
           Qty
         Material[2]
           Qty
         Material[3]
           Qty
         Material[4]
           Price
          MT
    Here the Material node  occurences is 0 to Unb.
    For values QI,QD and AI should be a seperate mapping ie) three nodes will be created.
    For values 'PC' seperate mapping ie. last node will be created only if F1 receives 'PC' beacause i need to implement the separate mapping logic for a value 'PC'.
    If i send the data sequence QI,QD,AI and PC  my mapping is working correctly.
          MT
         Material[1]
           Qty 2
         Material[2]
           Qty 3
         Material[3]
           Qty 4
         Material[4]
           Price 5.3
           MT
    But if i send the the data sequence QI,QD,PC and AI my mapping is not working properly for 'AI'. But for QI,QD and PC mapped correctly.
    Output:
          MT
         Material[1]
           Qty 2
         Material[2]
           Qty 3
         Material[4]
              Price 5.3
          MT
    Note: For Value 'AI' , target node Material[3] is completly ignored/not coming.
    We used createif function to create the target node in the target structure based on the value 'PC'.
    we think that once if mapping executed the value for 'PC', mapping for 'AI' is not executed i.e. it doesn't go back and execute the mapping for 'AI'.
    Can you please help me to solve this problem,
    Thanks and Regards
    Kamal

    Hi Kamal,
    I understand that your src is
    GS
    GP
    F1
    SDQ/CTP
    F2
    and depending on the value of F1 the target nodes has to be created.
    here, by using the createif, u can generate the nodes properly, but the problem arises when u have to get the corressponding values in the feild QTY of your target.
    in such a situation, writing a UDF would be better a better option.
    Thanks
    Hari.

  • Conditional mapping in Graphical mapping

    Hi All,
    I have a conditional mapping requirement i.e.I have 2 nodes ( collections/collection/object and  extensions/collection/@name) in the source structres. Both nodes are identical and have unbound occurences. Based on certain condtions I need to map second node in the  source node to target node ( Items ). Below is the condition.
    If first node '/MT_FCI_CONTRACT_EXPORT/fcidataexport/objects/object/collections/collection/object/@classname' (Occurs Unbounded ) value is not  'contracts.LineItem'  and second node '/MT_FCI_CONTRACT_EXPORT/fcidataexport/objects/object/extensions/collection/@name' ( Occurs Unbounded ) value is 'MATGRP_COLLN' then only map source field '/MT_FCI_CONTRACT_EXPORT/fcidataexport/objects/object/extensions/collection/row' ( occurs unbounded ) to target node 'Items' ( Occurs unbounded ).
    I have done this mapping using If condtions and did some context changes. My second condition is working fine but my first condition is not working as expected. Its only taking value in the first occurences and based on that passing first condition. But I need to check in all occurences whether value 'contracts.LineItem' is not exist  then only I need to pass that condition. Please let me know how to achieve this.
    Please help me to achieve my requirement.Thanks.
    Regards,
    Rajesh

    Hi Rajesh,
    To reply your query first we have to understand the exact requirement . So I am writing my understanding below and solution for it .Kindly reply if your requirement is different.
    you have three source field which is involved in mapping .@classname, @name, and row and target side you have node item .
    Now you have to check for all classname and name that if classname is not equal to contracts.LineItem and @name is equal to MATGRP_COLLN ( both the values I have considered as constant) then map row to target node item. i.e if classname and lineitem is occuring 4 time and two time both are satisfying both the codition then generate two target Item node .
    Solution.
    classname -> (CollapseContext)->equals to ContractLineitem --not -->
                                                                                    AND -
    IIF WITHOUT ELSE
    Name -
    >(CollapseContext)-->equals to MATGRP_COLLN--
    >
    the condition of if without else function will be output of AND and in then map row----.(collpasecontext) finally the output of if without else will be mapped to item
    note :all ittalic is Graphical mapping functions .
    Regards,
    Saurabh

  • Graphical mapping issue

    Hi gurus,
    we need help for following graphical mapping problem.
    Our input message structure and payload is like;
    <MT_INPUT>
         <Header>
              <VendorName>GREEN IT</VendorName>
         </Header>
         <Records>
              <MType>T</MType>
              <Unit>KG</Unit>
              <MS>40</MS>
         </Records>
         <Records>
              <MType>S</MType>
              <Unit>STK</Unit>
              <MS>2</MS>
         </Records>
         <Records>
              <MType>S</MType>
              <Unit>STK</Unit>
              <MS>5</MS>
         </Records>
         <Records>
              <MType>T</MType>
              <Unit>KG</Unit>
              <MS>30</MS>
         </Records>
         <Records>
              <MType>S</MType>
              <Unit>STK</Unit>
              <MS>3</MS>
         </Records>
    </MT_INPUT>
    We need only the values with Mtype = T
    needed output message is like;
    <MT_OUTPUT>
         <Header>
              <VendorName>GREEN IT</VendorName>
         </Header>
         <Records>
              <Type>Total</Type>
              <Unit>KG</Unit>
              <VALUE>40</VALUE>
         </Records>
         <Records>
              <Type>Total</Type>
         </Records>
         <Records>
              <Type>Total</Type>
         </Records>
         <Records>
              <Type>Total</Type>
              <Unit>KG</Unit>
              <VALUE>30</VALUE>
         </Records>
         <Records>
              <Type>Total</Type>
         </Records>
    </MT_OUTPUT>
    Kind Regards,
    PM

    MType---
    ------      equals-----if withoutelse(Unit----then) ------UNIT
    Constant("T")---
    MType---
    ------      equals-----if withoutelse(ms----then) ------VALUE
    Constant("T")---

  • Bug in exists() function of XI Graphical Mapping Tool?

    Hi!
    If I connect a source field with the exists() function in XI Graphical Mapping Tool and the tag exists it returns TRUE, otherwise it returns FALSE, so everything works as expected.
    But I have to connect a user-defined function with exists(). The user-defined function will either calculate a value or set Resultset.SUPPRESS.
    If there is a value the exits() function returns TRUE, however if Resultset.SUPPRESS is set it does also return TRUE! This looks to me like a bug in exists() function. Shouldn't it always return FALSE if the input is Resultset.SUPPRESS?
    Regards, Tanja

    Hi Stefan!
    > The exists() function checks, if a queue is empty.
    > An empty queue is <b>not</b> represented by the
    > SUPPRESS value.
    > If inside a queue there is a SUPPRESS value, the
    > queue is <b>not</b> empty.
    Ok, so it's not a bug and the exists() function is working as expected.
    > If you want the exist() function after a UDF, provide
    > an empty queue, or easier: return the values "true"
    > or "false" directly from the UDF.
    Yes, that's how I actually solved the problem. The UDF was used at several places where the ResultList.SUPPRESS output was needed. So I copied the UDF and changed it so that the output was TRUE or FALSE instead.
    Regards, Tanja

  • Graphical Mapping Vs XSLT mapping Vs Java Mapping Vs ABAP Mapping

    Hi Experts,
              I have a question regarding different message mapping options available in XI namely
    Graphical Mapping
    XSLT mapping
    Java Mapping
    ABAP Mapping
    Q1: Which amoung the above mappings is the best and why?
    Q2: On what cases Graphical, XSLT, Java and ABAP Mapping should be used?
    Q3: Is it true that graphical and XSLT mappings are converted into Java class internally?
    Kindly help!
    Thanks
    Gopal
    Message was edited by:
            gopalkrishna baliga

    Hi,
    There is no hard and fast rule for using the mapping techniques.
    Graphical Mapping is used for simple mapping cases. When, the logic for your mapping is simple and straight forward and it does not involve mult hiearchical mapping requirement. and context handling.
    Java and XSLT mapping are used when graphical mapping cannot help you.
    When the choice is between Java And XSLT, XSLT is simpler than java mapping and easier. But, it has its drawbacks.  XSLT can lead to a bad perfrormance if the Source XML is huge.
    Java Mapping uses 2 types of parsers. DOM and SAX. DOM is easier to use with lots of classes to help you create nodes and elements, but , DOM is very processor intensive.
    SAX parser is something that parses your XML one after the other, and so is not processor intensive. But, it is not exaclty easy to develop either.
    For further info on each of the mapping, refer to these links,
    Graphical Mapping,
    http://help.sap.com/saphelp_nw04/helpdata/en/6d/aadd3e6ecb1f39e10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/43/c4cdfc334824478090739c04c4a249/content.htm
    XSLT Mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
    http://www.w3.org/TR/xslt20/
    Java Mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/content.htm
    DOM parser API
    http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-frame.html
    Also, check this thread for more info,
    Different types of Mapping in XI
    Am not sure about XSLT , but , yes graphical mapping is converted into java classes internally and these classes use SAX parsing as well.
    Regards,
    Bhavesh

Maybe you are looking for

  • MC_UPDATE_VMVA  in Ecc 6.0 upgrade

    Hi,   We are in process of upgrade from 4.7->Ecc 6.0 , we are stuck in Tabim_post phase,please check the log below.   We had run the program SAPMAC0 to generate the functional_module still not possibule. I am logging with ddic user in 000 client, whe

  • I just want to launch the program and retouch a photo.[was:lost]

    i just want to launch the program and retouch a photo. why am i so lost?

  • How to load item level and location level member in demantra

    This is in context where we are not using any integration of demantra with either Ebiz or E1 system. Data is present in flat file. As per i know, integration interface can only export the data for item level and location level but can not import data

  • Approvals in Engineering Module

    Hi All, I am working on Oracle 11i Engineering. In ECO(Engineering change order) , we want to send notifications to Approvers in Approval List for Implementing ECO. I have assigned standard workflow to ECO change types and defined users in Approval L

  • Iphoto 4.0.3 won't show my photos anymore

    My pics appear as empty grey boxes, although they seem to be there in terms of disc space. This happened for no obvious reason. Cannot see them nor edit them. I tried to rebuild my library from iphoto 4.0.3. The library loads, and then starts to repa