Mapping help UDF

hello experts.
the standard functions are not working for the number of occurrences.
below is the structure.
Root 0....unbounded                                                        Root 0 ...unbounded.
   events 0...unbounded
       countries 1...1
       total 0....unbounded.
          amount 1
          totals
Now the condition is.....if countries tag is not available and  amount is zero and under total tag we have totals.....if the tag not there.......target side root should not come.
i have done mapping.
countries ----exists-------------------------------------
amount-------
                  equals-----not------                                        and--------createif----removecontext-----root.
constant-------                               and ---------------
   (0)
   totals --------exist------------
regards,
chinna

Hi,
check this mapping help...
it looks both the threads are same.
Regards,
Muni.

Similar Messages

  • Mapping Help/UDF needed.

    Hi my source looks something like this
    Recordset.      0-Unbounded.               
         Record           0-Unbounded
    Value1
    Value2
    DOCNO
    MatNo
    target
    =====
    MT_Target
    Recordset 0-Unb
    Header
    Val1
    Val2
    DOCNO
    Material 0-Unb
    Matno     
    Example Mapping
    =============
    Recordset.      .               
         Record           
    XXX
    YYY
    100
    01
         Record           
    XXX
    YYY
    100
    02
         Record           
    AAA
    ZZZ
    200
    22
         Record           
    AAA
    ZZZ
    200
    33
    Then My Target would be like
    MT_Target
    Recordset
    Header
    XXX
    YYY
    100
    Material
    01
    02
    Recordset
    Header
    AAA
    ZZZ
    200
    Material
    22
    33
    Please notice the Grouping of DOCNo and Corresponding material numbers
    So I am trying to group the Materials in the Target structure based on the DOCNO field. So all the materials falling under the same DocNo are listed  under that DOCNo,Like if Matno 01,02 fall under Docno 100 so they are listed Under DOCNO :100
    So if there are 3 DOCNo’s then we will have 3 Recordset in the target and each Recordset will have the corresponding MATNO for that DocNo. Hope u understand.
    Could anybody please help me out with this, I have tried using SplitByValue Changing and Collapse Conetxt, it works for the Header but not for the "Material" Node. Help needed, Points Guaranteed.

    John,
    DO you know the  DOCNO value before runtime? Will it have only values 100 and 200? If so, then it is easy to do this using graphical mapping.
    You need to evaluate the condition at recordset level in target.
    Have a look at this thread for evaluating the condition at root level
    Re: How to get access to sub-node elements with a UDF?
    If the value of DOCNO is unknown at design time, then it is better to handle the mapping using JAVA mapping.
    Regards,
    Jai Shankar

  • Mapping Help:-UDF or Direct mapping

    Hi I have two input field A and B based on certain criteria Field C will get created.
    Please help.

    HI Sudheer,
                     You can solve this requirement by combining the Node functions,Boolean and Constants.
    1) Exist Function 2) If then 3) If then Else 4) Constant
    You have to use this as
    1) take a if then else block for input A then check it for if  ' ' and take another if then else  for input B then check it for X.
    2) Now combine these two layers and perform one more if then else block and then populate the results using the constants.
    3) If you are also having an option where input A is not at all populated then use Exist function.
    I hope this is helpful to you
    Regards,
    Pramod.

  • XSLT mapping Help Required.

    XSLT mapping Help Required.
    Hi Experts,
    I am New to XSLT Mapping. I am practising the below Example:
    InputXML File:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="Persons111.xsl"?>
    <ns0:MT_XSLT_Source xmlns:ns0="http://XYZ.com/gen">
    <Person>
    <FirstName>Anshul</FirstName>
    <LastName>Chowdhary</LastName>
    <Gender>Male</Gender>
    <Address>
    <Street>2nd Main</Street>
    <Houseno>83/b</Houseno>
    <City>Mysore</City>
    </Address> </Person>
    </ns0:MT_XSLT_Source>
    XSL StyleSheet File:
    <?xml version='1.0' encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://XYZ.com/Gen"
    Xmlns:ns1=”http://XYZ.com/Test”>
    <xsl:template match="/">
    <ns1:MT_XSLT_Target>
    <Title> <xsl:value-of select="ns0:MT_XSLT_Source/Person/Gender"/> </Title>
    <Name> <xsl:value-of select="concat(concat(ns0:MT_XSLT_Source/Person/FirstName,' '), ns0:MT_XSLT_Source/Person/LastName)"/>
    </Name>
    <Street> <xsl:value-of select="concat(concat(ns0:Mt_XSLT_Source/Person/Address/Houseno,' '),
    ns0:Mt_XSLT_Source/Person/Address/Street)"/> </Street>
    <City> <xsl:value-of select="ns0:Mt_XSLT_Source/Person/Address/City"/> </City>
    </ns1:MT_XSLT_Target>
    </xsl:template>
    </xsl:stylesheet>
    The Desired Output shuold be:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns1:MT_XSLT_Target xmlns:ns1="http://XYZ.com/Test">
    <Title>Male</Title>
    <Name>Anshul Chowdhary</Name>
    <Street>83/b 2nd Main</Street>
    <City>Mysore</City>
    </ns1:MT_XSLT_Target>
    I have refered the xsl in xml and i am getting the below Oupt in a Single line like this:
    Anshul Chowdhary Male 2nd Main 83/b Mysore
    I am Unable to display in Target XML Fomrat as shown above. Please check and do the needful.
    Regards,
    GIRIDHAR

    Hi,
    I have used below for testing.
    Input xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="Persons111.xsl"?>
    <ns0:MT_XSLT_Source xmlns:ns0="http://XYZ.com/gen">
    <Person>
    <FirstName>Anshul</FirstName>
    <LastName>Chowdhary</LastName>
    <Gender>Male</Gender>
    <Address>
    <Street>2nd Main</Street>
    <Houseno>83/b</Houseno>
    <City>Mysore</City>
    </Address> </Person>
    </ns0:MT_XSLT_Source>
    xsl code:
    <?xml version='1.0' encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://XYZ.com/gen" 
        xmlns:ns1="http://XYZ.com/Test"> 
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
        <xsl:template match="/"> 
            <ns1:MT_XSLT_Target> 
                <Title> <xsl:value-of select="ns0:MT_XSLT_Source/Person/Gender"/> </Title> 
                <Name> <xsl:value-of select="concat(concat(ns0:MT_XSLT_Source/Person/FirstName,' '), ns0:MT_XSLT_Source/Person/LastName)"/> 
                </Name> 
                <Street> <xsl:value-of select="concat(concat(/ns0:MT_XSLT_Source/Person/Address/Houseno,' '), 
                    /ns0:MT_XSLT_Source/Person/Address/Street)"/> </Street> 
                <City> <xsl:value-of select="/ns0:MT_XSLT_Source/Person/Address/City"/> </City> 
            </ns1:MT_XSLT_Target> 
        </xsl:template> 
    </xsl:stylesheet>
    For testing in PI ,change the extension from .txt to .xsl and zip it and upload into PI as an imported archive .
    Regards
    Venkat

  • Message mapping help

    Hi,
    I am doing graphical message mapping.
    Source structure looks like
    <BAC>
    <IXYZ>
    <DEF>
    <PQR>
    All are 0.. 1.
    Target field is item which is also 0.. unbounded.
    If ABC is not blank, assign to target  field item[0] as 1st occurance.
    If DEF is not blank, assign the same to item[1] field as 2nd occurance and so on.
    Can this be done using message mapping without udf or java? If not, pls let me know other ways.
    Thanks
    anand

    Hi,
    <ABC> -> lenth Function (TEXT)-> Greate Then -> 0 (using the IF Condition)
      <ABC> -> CopyValue(docuble click and give the index 0) -> to Target
    <DEF> -> lenth Function (TEXT)-> Greate Then -> 0 (using the IF Condition)
      <DEF> -> CopyValue(docuble click and give the index 1) -> to Target
    Regards,
    Venu.

  • Mapping Help for replacing source value

    Mapping Help for replacing source value
    Posted: Mar 14, 2006 1:06 AM    Reply 
    Hi all,
    I am unable to do transform the source value to required target value,
    From Source ADDRESS_TYPE = 'HOME' should be replaced with 03 to target field ANSSA, and 'MAIL' to be replaced with 05, I am trying to do it but i am unable to handle it, please give u r valuable suggestions,
    The source structure is like this,
    - <Event ID="239" TRANS_TYPE="ADR">
    <PersAddr GEO_LOC_CD="US" EMPLID="29" ADDRESS_TYPE="HOME" EFFDT="02/15/2006" ADDRESS1="92nd Floor" ADDRESS2="812backstreet" ADDRESS3="" ADDRESS4="" CITY="London" COUNTY="" STATE="AN" POSTAL="EC2N 4AG1" COUNTRY="GBR" KEY1="29" KEY2="HOME" KEY3="02/10/2006" />
    <PersAddr GEO_LOC_CD="US" EMPLID="29" ADDRESS_TYPE="MAIL" EFFDT="02/15/2006" ADDRESS1="92nd Floor" ADDRESS2="812backstreet" ADDRESS3="" ADDRESS4="" CITY="London" COUNTY="" STATE="AN" POSTAL="EC2N 4AG1" COUNTRY="GBR" KEY1="29" KEY2="MAIL" KEY3="02/10/2006" />
    </Event>
    REGARDS,
    sridhar

    Hi,
    This can be done using user-defined function as well.
    Code the function as...
    if(Addr_Type.equals("HOME"))
       return "03";
    else if(Addr_Type.equals("MAIL"))
       return "05";
    else
       return "Invalid Address Type";
    Here, Addr_Type is Input String Argument for this function.
    Map this function between ADDRESS_TYPE and ANSSA.
    Regards,
    Uma

  • Need Mapping Help: Generate index if value comes

    Hi Experts,
    I need mapping help to generate index if value comes form source. we have 4 fields in item level of source and target side we have to pass the these filed values and sequence number.
    below given the structures:
    Source:              Target:
    Item                    Item
       A1                      Text
        A2                      Seq_No
        A3
        A4
    my requirement is if A1 filed values comes from source we should pass to text and pass seq_no to constant-1, same as A2,A3 and A4 filed values also we should pass to text and seq_no for A2 is 2 and A3 is 3 and A4 is 4. suppose if A1 value is not coming from source we should pass seq_no for A2 is 1. if A1 and A3 filed values are not coming from source then we should pass seq_no for A2 and A3 are 1 and 2.
    can you please help me how to achieve this. appreciate for your support.
    Regards,
    Sanjay.

    Hi Sanjay,
                      you can  try this mapping
    1. Generate the target 4  ITEM's  by duplicating the subtree as shown below 3 times.
    Now create the each target item starting from first by mapping them to A1,A2,A3 and A4 respectively. I have shown the first ITEM mapping above. similarly you can map A2 to ITEM[1],
    A3 to ITEM[2] and A4 to ITEM[3].
    2. Now you can map the A* fields to Text one to one as shown below
    Please repeat the same for A2,A3 and A4 to respective Text fields.
    3. 
    First seq_no field as shown
    and similarly others as shown
    Regards
    Anupam

  • Mapping help or UDF

    Hello Friends,
    I need some help in mapping through regular or UDF.
    Requirment is I have target field CORD_CODE,
    This needs to ge the value based on the segment values of EIEDT44-VSTEL
    If VSTEL = CO10 then 1055
    If VSTEL = CO11 then 1054
    If VSTEL = CO13 then 1057
    If VSTEL = CO12 then 1056
    Like this.
    Can we create UDF for the same or anyt other alternative?
    <removed by moderator>
    Regards
    Ramesh
    Edited by: Mike Pokraka on Jul 24, 2008 1:46 PM

    Hi Ramesh,
    This error Cannot produce target element /ns0:MT_GuiaTransport/DELIVERY_RECORDS[2]/MERCK_COORD_CODE could be becaus of two reasons
    1. Node VSTEL would have not been in the source structure.
    2. Value in the node would have been different than the possible values.
    Solution:
    In addition to this graphical mapping
    If VSTEL = CO10 then 1055 else drag and drop another if-then-else and if VSTEL = CO11 then 1054 else drag and drop another if-then-else and if VSTEL = CO13 then 1057 and drop another if-then-else and if VSTEL = CO12 then 1056 .....
    1. First check if the node VSTEL exist then check the conditions else map a constant.
    2. Add a constant to the else part of the last condition check i.e if VSTEL = CO12 then 1056 else constant.
    Thanks
    SaNv...

  • Mapping Help Needed - Message or Java UDF

    Hello Gurus,
       I have a source structure as below.
    Idoc
    -group_a (0 to 99999)
    --  sub_groupa_1 (0 to 99999)
          sga1_field_1
           sga1_field_2
    --  sub_groupa_2
         sga2_field_1
         sga2_field_2
    --  sub_groupa_n
         sgan_field_1
         sgan_field_2
    -group_n
    --  sub_groupn_1
         sgn1_field_1
         sgn1_field_2
    --  sub_groupn_2
         sgn2_field_1
         sgn2_field_2
    --  sub_groupn_n
         sgnn_field_1
         sgnn_field_2
    every group creates an output group (lineitem), that works fine 
    now my requirement is as below
    a particular output field (per output group) = sum (sub_field_2s) wherever sub_field_1s = first occurence of sub_fld_1 of the corresponding group
    I tried different things, but could not get the required results.
    pls let me know if my explanation is not clear..
    Please help..
    thanks
    KnowledgeQuest.

    Hi,
    Please provide your source and target structure...Also, if possible, please provide sample inputs/outputs so that we can visualize your problem correctly.
    hope this helps,

  • Java mapping or UDF required for a requirement!!!

    I am doing idoc to file scenario and stuck with the mapping in the following case. I think an UDF or JAVA mapping will do the bill. can some one help me in this regard please.
    IDoc message type, IDoc basic type, IDoc extension
    PAYEXT.PEXR2002.ZEXR2002.
    <u><b>conditions:</b></u>
    IF E1IDB02 BA-FIIKWAER = CNY
          then MID(E1EDKA1 BE-NAME1,12,11)
    IF E1IDB02 BA-FIIKWAER <> CNY and LEN(E1EDKA1 BE-NAME1)<=35
         then MID(E1EDKA1 BE-STRAS,1,35)
    IF E1IDB02 BA-FIIKWAER <> CNY and LEN(E1EDKA1 BE-NAME1)>35
         then MID(E1EDKA1 BE-NAME1,36,35)
    This will be mapped to "Info Line 1" field in file.
    Thanks,
    Kiran

    Hi Mr.Kiran,
    here is the code
    pass the following fields to Context UDF
    1.E1IDB02-FIIKWAER
    2.E1EDKA1-NAME1
    3.E1EDKA1-STRAS
      for(int k = 0;k<FIIKWAER.length;k++)
         if(FIIKWEAR[k].equalsIgnoreCase("CNY"))
            result.addValue(NAME1[k].substring(11,12));
         else if(!(FIIKWEAR[k].equalsIgnoreCase("CNY"))&&(NAME1[k].length() <= 35))
           result.addValue(STRAS[k].substring(1,35));
         else if(!(FIIKWEAR[k].equalsIgnoreCase("CNY"))&&(NAME1[k].length() > 35))
          result.addValue(NAME1[k].substring(35,36));

  • Create Attachment within Graphical Mapping using UDF

    Hi!
    We want to create an attachment witihn a graphical mapping using an UDF function.
    I use that function:
    public String addAttachment(String filename, String mimeType, String content, Container container) throws StreamTransformationException{
         BASE64Decoder decoder=new BASE64Decoder();
         try {
              GlobalContainer globalContainer = container.getGlobalContainer();
              OutputAttachments outputAttachments = globalContainer.getOutputAttachments();
              Attachment attachments = outputAttachments.create(filename, mimeType,decoder.decodeBuffer(content));
              outputAttachments.setAttachment(attachments);
              return "Adde1: "+filename;
         } catch (Exception e) {
              return e.toString();
    (SDN helped me much in creating that
    This function has no compiling errors, anything workes fine:
    It takes 3 input-parameters, see also: http://help.sap.com/javadocs/pi/SP3/xpi/com/sap/aii/mapping/api/OutputAttachments.html
    filename (ok, more or less contentID)
    mimeType (more or less contentType)
    content: Base64-encoded String which should be set as content
    In my sample I use the following constants for that function:
    filename = "fn1.txt"
    mimeType="application/xml"
    content = "UG9seWZvbiB6d2l0c2NoZXJuZCBhw59lbiBNw6R4Y2hlbnMgVsO2Z2VsIFLDvGJlbiwgSm9naHVydCB1bmQgUXVhcms=" --> cames directly from http://de.wikipedia.org/wiki/Base64
    When using the message, I got this error within SXMB_MONI:
    <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Could not queue receive for
    message 0022642d-b106-02df-8e8c-f41c243bd112(INBOUND). Reason: java.lang.NullPointerException: while trying to
    invoke the method com.sap.aii.af.sdk.xi.lang.Binary.getBytes() of an object returned from
    com.sap.aii.af.sdk.xi.mo.xmb.XMBPayload.getContent()</SAP:AdditionalText>
    This looks pretty much the same as Add Attachment from ABAP Mapping but this tread is also not answered.
    Adding attachment from PI level looks also in that direction, again, no answer.
    So, I was wondering if someone has solved such problem?

    Hi Divyesh!
    We did it that way:
    1. Choosing the XML-Mailstructure as Destination as described in Configuring the Receiver Mail Adapter - Advanced Adapter Engine - SAP Library -  Example (XI payload with mail package)
    2. now we have created a UDF for creating the "content"
    public void getContent(String[] text, String[] attFname, String[] attType, String[] attContent, ResultList result, Container container) throws StreamTransformationException{
    // vergleich ob alle att-Arrays selbe anzahl haben
    if (attFname.length!=attType.length || attFname.length!=attContent.length) {
        result.addValue(Integer.parseInt("Fehler: alle Attachment-Eingänge müssen die selbe Anzahl an Elementen haben!"));
        String CRLF = "\r\n";
        String output="This is a multi-part message in MIME format."+CRLF+CRLF+
        "--"+getBoundary(container)+CRLF+
        "Content-Type: text/plain; charset=UTF-8"+CRLF+
        "Content-Disposition: inline" + CRLF + CRLF +
        text[0]+CRLF;
    for (int i=0;i<attFname.length;i++) {
        output+="--"+getBoundary(container)+CRLF+
        "Content-Type: "+attType[i]+"; name="+((char)34)+attFname[i]+((char)34)+CRLF+
        "Content-Disposition: attachment; filename="+((char)34)+attFname[i]+((char)34)+CRLF+
        "Content-Transfer-Encoding: Base64"+CRLF+CRLF+attContent[i]+CRLF;
    output+="--"+getBoundary(container)+CRLF;
    result.addValue(output);
    This UDF is configured as "QUEUE"
    We have configured this input-structure
    The Content itself is allready base64.
    So we can call this mapping and it creates a Multipart-Mail for us.

  • Mapping Issue(UDF) in HTTP-RFC scenario with URL parameters - Urgent

    Hi All,
    I am working out an HTTP-RFC scenarion wherein there is no xml data to be pushed.
    The data will be coming in the url parameters.
    Also we'll exposing our url(created by SAP PI) to 3rd party system to push data in terms of url parameters.
    So how do I do mapping? Also what UDF code will contain?
    Since I'm working on this kind of scenario for the first time, I need every help from you guys.
    Thanks & Regards,
    Amit Patil

    Hi All,
    I have worked on RFC to HTTP scenario wherein URL have to be passed. I used UDF in d same.
    But now the case is reverse, how shall I move ahead with what source message type(in the mapping) and how to do mapping.
    What kind of UDF will be useful here?
    I am completely blank in this kind of scenario where 3rd party system is going to pass four parameters on URL link craeted by us since its an HTTP to RFC scenario.
    Please guys help me! Give me some inputs.
    Thanks,
    Amit Patil

  • Value mapping in UDF?

    Hi Guys,
    Is it possible to do the value mapping in a UDF.
    ReceiverService at runtime - X --> Value mapping not maintained
    ReceiverService - Y ---> Value mapping maintained.  I want to use this receievr service.
    There are more than 300 VM groups and i dont want all the new receivers to add and i want to handle them in UDF
    the value mapping picks the receiver service always from the runtime and i want to handle this in UDF and use a different
    receiver service. Is it something possible? any help or suggestions would be appreciated
    Thanks,
    Srini

    Hi Srini,
    You can go for Value Mapping Replication for Mass Data as described in these links-
    /people/udo.martens/blog/2009/04/03/value-mapping-replication-scenario
    http://help.sap.com/saphelp_nw70/helpdata/en/2a/9d2891cc976549a9ad9f81e9b8db25/frameset.htm
    JDBC lookup is also one option in your case. Have a look at similar discussions for other approach -
    Value mapping with 100's of values then what to do.?
    Dynamic SOAP Adapter TServerLocation with value Mapping
    Regards,
    Sunil Chandra

  • Error Occuring during DynamicConfiguration Mapping in UDF

    Hello ,
                I am  trying to set the TO field of mail using dynamic configuration ,but when i test  the mapping i am getting error as Java.lang.nullpointer exception.
    When i checked the queues of mapping the result of UDF mapping is getting suppressed and as a result its not mapping to target field.(i am passing the value and returned the same value )
    I am not able to pinpoint the error .
    ( i have set the ASMA properties in the mail adapter )
    Replies will be appreciated
    Rajesh

    Hi Rajesh,
    i am getting error as Java.lang.nullpointer exception.
    for this error to solve in UDF  i think this link will help u to solve that problem
    http://docjar.org/docs/api/java/lang/NullPointerException.html
    let me know what exact codeing have u done so that we can help u .......!
    Regards
    Aziz

  • 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

Maybe you are looking for