Udf to add context change

Hi
I need a udf to add context change
Can anyone help me?
Regards
Neha

A search on help.sap.com is the answer.
http://help.sap.com/saphelp_nw04/helpdata/en/b1/83a09f668320419dbe00a741e0fe6a/content.htm
addContextChange();
Appends a context change to the list. This can also be achieved if you append the constant ResultList.CC by using addValue().
Regards
Bhavesh

Similar Messages

  • Add a context change after a set of values in a context

    Dear experts,
    My requirement is as follows:
    Scenario: Idoc to Idoc. I need to check if there are line items > 5- I need to do a split. The split is happening properly via my mapping but I have a problem at the header record level on the target- I do not get the values populated correctly. I need to add a context change after 5 values in the queue.
    eg:
    Say there are 2 Idocs at the source with following unique IDs: called Journal ID:
    My source:
    Idoc 1: Journal ID 123
    Line Itme 1
    Line Item 2
    Idoc 2: Journal ID 124
    Line item 1
    Line item 2
    Line item 3
    Line item 4
    Line item 5
    Line item 6
    Line item 7
    So I need to get total of three Idocs in my target:
    Idoc 1: Journal Entry 123
    Line Item 1
    Line Item 2
    Idoc2: Journal Entry 124
    Line item 1
    Line item 2
    Line item 3
    Line item 4
    Line item 5
    Idoc3: Journal entry 124
    Line item 6(new 1)
    Line item 7(new 2)
    The split in the target Idoc is working perfectly. But inside the header record the journal ID field(taken from Item record level) is not populating correctly. I am getting this output:
    Idoc 1: Journal Entry 123
    Header Record-->JournalID Field value= '123'
    Line Item 1
    Line Item 2
    Idoc2: Journal Entry 124
    Header Record-->JournalID Field value= '124'
    Line item 1
    Line item 2
    Line item 3
    Line item 4
    Line item 5
    Idoc3: Journal entry 124
    Header Record-->JournalID Field value= Null
    Line item 6(new 1)
    Line item 7(new 2)
    So please suggest a UDF/standard function to populate the right values inside header record--->Journal ID field.Something like the below...
    public void calculate(String[] var1, ResultList result, Container container) throws StreamTransformationException{
      for ( int i = 0; i < var1.length; i++ )
         if( var1[i].length() > 5) //here var1 I am passing the Journal ID
           result.addContextChange();
    Apparently this doesnt work.

    The first Idoc has two line items and the second idoc has 7 line items. As the split is per 5 line item- the target has 3 Idocs.
    Now the problem is that the header value in the target: REF_DOC_NO has to be created as per the number of line items and doesnt come from header record directly.

  • Capture context change without using UDF

    Hi,
    I need to find context change of a field without using UDF.
    I know we can do it in an UDF by comparing with ResultList.CC.
    But do we have any graphical constant that notifies a context change?
    regards,
    Piyush

    Hi,
        There is no graphical constant by which you can identify a context change without using UDF. However, if you leave the context of the field at the level of the immediate parent and map accordingly, you can handle the contexts directly in your GUI mapping. This however would also depend on your mapping requirements.
    Regards,
    Shiladitya

  • Mapping query for context change without UDF

    Hi,
    My requirement is as below:
    Input queues are
    4319, 4319,4320,4321,4321
    M1,M1,M1,M2,M2,M2
    Required output is
    4319,4320,CC,4321
    COntext change is to be inserted when there is a change in value in second queue.
    regards, Anirudh.

    Hi,
    Have you tried using the formatByExample as specified?
    input1-->removeContext--> concat --> splitByValue:ValueChanged --> collapseContext --> substring (2..6) --> formatByExample (1) --> Target
    input2-->removeContext--> /
    input1-->removeContext--> concat --> splitByValue:ValueChanged --> collapseContext --> substring (0..2) --> splitByValue:ValueChanged -->formatByExample (2)
    input2-->removeContext--> /
    code explanation
    input1 and input 2 when concatted outputs M12319,M12319,M12320,M22321,M22321,M22321
    The upper part of the code does this: M12319,M12320,M22321, when you use the substring it outputs now 2319,2320,2321
    The lower part of the code does this: M12319,M12320,M22321, when you use the substring it outputs
    M1,M1,M2, then you use splitByValue. The output is now M1,M1,CC,M2.
    When you input the code from the upper part and lower part into a formatByExample node, the output becomes
    2319,2320,CC,2321
    Hope this helps,

  • Context change by DOM parsing Java Mapping in XI

    Hi Team,
    I would like to know that how can I handle Context Change by DOM Parser Java Mapping in XI.?
    Suppose  the source XML structure I have like below:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Header xmlns:ns0="urn:bp:xi:hr:edm:test:100">
       <FileName>
          <filesub>
             <subname>a</subname>
             <subname>b</subname>
             <subname>c</subname>
          </filesub>
       </FileName>
       <FileName>
          <filesub>
             <subname>d</subname>
             <subname>e</subname>
             <subname>f</subname>
          </filesub>
       </FileName>
    </ns0:Header>
    Where the field FileName can occur maximum thrice(0...3) but the subname field is (0....unbounded) but in the target source I would like to have as given below:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <MT_Test4 xmlns="urn:bp:xi:hr:edm:test:100">
    - <Header>
      <FileName>a</FileName>
      <FileName1>d</FileName1>
        </Header>
    - <Header>
      <FileName>b</FileName>
      <FileName1>e</FileName1>
       </Header>
    Header>
      <FileName>c</FileName>
      <FileName1>f</FileName1>
       </Header>
    </MT_Test4>
    That means the first value from every context of the source field is forming my first and second value in my target first context.Thensecond value from every context is forming my 1st and 2nd value of my target 2nd context and finally 3rd value of every context is forming my 1st and 2nd value of my target 3rd context.Is this possible to done through DOM parsing or we have to do it by UDF only?

    Hi Atanu,
        In my last post I gave an alogorithm to solve the mapping problem. Here is the complete program for the mapping.
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Map;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationException;
    public class DOMParser1  implements StreamTransformation{
         public void execute(InputStream in, OutputStream out)
                   throws StreamTransformationException {
              try
                   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
                   DocumentBuilder builderel=factory.newDocumentBuilder();
                   /input document in form of XML/
                   Document docIn=builderel.parse(in);
                   /document after parsing/
                   Document docOut=builderel.newDocument();
                   TransformerFactory tf=TransformerFactory.newInstance();
                   Transformer transform=tf.newTransformer();
                   Element root,child,child1=null;
                   Node textChild;
                   NodeList l;
                   int i,n1,j,div,k;
                   String s[];
                   root=docOut.createElement("MT_Test4");
                   root.setAttribute("xmlns","urn:bp:xi:hr:edm:test:100");
                   l=docIn.getElementsByTagName("subname");
                   n1=l.getLength();
                   s=new String[n1];
                   for(i=0;i<n1;++i)
                             s<i>=l.item(i).getFirstChild().getNodeValue();
                   l=docIn.getElementsByTagName("filesub");
                   div=l.getLength();
                   j=n1/div;
                   for(i=0,k=0;i<j;++i)
                        child1=docOut.createElement("Header");
                        root.appendChild(child1);
                        child=docOut.createElement("FileName");
                        textChild=docOut.createTextNode(s[k]);
                        child.appendChild(textChild);
                        child1.appendChild(child);
                        child=docOut.createElement("FileName1");
                        textChild=docOut.createTextNode(s [ k + j ]);
                        child.appendChild(textChild);
                        child1.appendChild(child);
                        ++k;
                   docOut.appendChild(root);
                   transform.transform(new DOMSource(docOut), new StreamResult(out));     
              catch(Exception e)
                   e.printStackTrace();
         public void setParameter(Map arg0) {
         public static void main(String[] args) {
              try{
                   DOMParser1 genFormat=new DOMParser1();
                   FileInputStream in=new FileInputStream("C:/Apps/my dw/sdnq/apps.xml");
                   FileOutputStream out=new FileOutputStream("C:/Apps/my dw/sdnq/tgt1.xml");
                   genFormat.execute(in,out);
              catch(Exception e)
                   e.printStackTrace();
    source ->  apps.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:Header xmlns:ns0="urn:bp:xi:hr:edm:test:100">
    - <FileName>
    - <filesub>
      <subname>a</subname>
      <subname>b</subname>
      <subname>c</subname>
      </filesub>
      </FileName>
    - <FileName>
    - <filesub>
      <subname>d</subname>
      <subname>e</subname>
      <subname>f</subname>
      </filesub>
      </FileName>
      </ns0:Header>
    target structure ->  tgt1.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    - <MT_Test4 xmlns="urn:bp:xi:hr:edm:test:100">
    - <Header>
      <FileName>a</FileName>
      <FileName1>d</FileName1>
      </Header>
    - <Header>
      <FileName>b</FileName>
      <FileName1>e</FileName1>
      </Header>
    - <Header>
      <FileName>c</FileName>
      <FileName1>f</FileName1>
      </Header>
      </MT_Test4>
    Hope this helps
    one more thing  in this line "textChild=docOut.createTextNode(s k + j );"   somehow the the third braces one opening  before k and one closing after j is missing for unknown reasons. Please correct it when you actually run this code.
    regards
    Anupam
    Edited by: anupamsap on Mar 7, 2011 12:47 PM

  • Context change explicitly

    How to apply context change explicitly?

    Hi,
    Refer the section context handling page No 19: Explicit Context selection.
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f59730fa-0901-0010-df97-c12f071f7d3b
    /people/riyaz.sayyad/blog/2006/04/23/introduction-to-context-handling-in-message-mapping
    Also u can achieve it by writing the code in UDF.Already provided by experts
    Thnx
    Chirag

  • Message Mapping - Initialize counter every context change

    Hi all,
    is there any way to develop a counter customer function in a graphical message mapping so every context change of a field the counter initializes?
    Imagine i have the following structure:
    1 DATA
    1.1 DETAIL
    1.2 DETAIL
    2 DATA
    2.1 DETAIL
    2.2 DETAIL
    and i wanna count DETAIL fields but initialize the counter every DATA field. Is there any way to do it?
    Thanks a lot.

    Hi,
    If your Source structure is
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_DATA xmlns:ns0="http://yash.com.YH1309">
       <DATA>
          <DETAIL/>
          <DETAIL/>
       </DATA>
       <DATA>
          <DETAIL/>
          <DETAIL/>
          <DETAIL/>
       </DATA>
    </ns0:MT_DATA>
    and You want the Target as
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_DATA xmlns:ns0="http://yash.com.YH1309">
       <DATA>
          <DETAIL>COUNTER=1</DETAIL>
          <DETAIL>COUNTER=2</DETAIL>
       </DATA>
       <DATA>
          <DETAIL>COUNTER=1</DETAIL>
          <DETAIL>COUNTER=2</DETAIL>
          <DETAIL>COUNTER=3</DETAIL>
       </DATA>
    </ns0:MT_DATA>
    Create the below UDF with one argument (DETAIL)  and select Execution type all values of a Context
    for (int i =1;i<=DETAIL.length;i++)
    result.addValue("COUNTER=" + i);
    but if you want Your Target as
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_DATA xmlns:ns0="http://yash.com.YH1309">
       <DATA>
          <DETAIL>1</DETAIL>
          <DETAIL>2</DETAIL>
       </DATA>
       <DATA>
          <DETAIL>1</DETAIL>
          <DETAIL>2</DETAIL>
          <DETAIL>3</DETAIL>
       </DATA>
    </ns0:MT_DATA>
    So please Follow abhishek salvi's reply

  • Reg: Logic for context change

    Dear friends,
    I have a scnario where i need to  uploade the sumary of financial entries.
    For every one line item i need to create a target side as 2 line item for debit and credit entry.
    I achived this by using  duplicatesubtree.
    Now the issue is  for all the entries there should only one debit entry by summing all the line item amout and all the credit item entries.
    Even this is achived by using the context change at the sum function.
    In fico we can uploade only 900 line item not more that. for this i have make use of counter and udf to resolve this.
    But now for context change i need to genarate one debit entry for every 899 credit entrries(input line items).
    It mean for 899 input item sum to be taken in to one debit line item at target in the duplicatesubtree
    For this i have a udf it gives a counter change after 899 line items.
    Now on this change how should i change the context..for sum and create the debit item after every 899.
    I have refered this thread .
    [context change  in message mapping]
    Regards
    Vijay

    Hi Vijay,
    To get Sum
    Source item (0 .. outbound)
               line1 (0..1)
               line2 (0..1)
               line3 (0..1)
               line4 (0..1)
               line5 (0..1)
               line6 (0..1)
    Now map Line6 --> (RemoveContext) u will get all values ===> Write UDF1 ===> Map to first element under Item1
    ===> Write UDF2 ===> Map to first element under Item1
    UDF1
    public void CreditSum(String[] a,ResultList result,Container container){
    float count = a.length;
    float c = count/2;
    int d = (int)c;
    int sum=0;
    String Sum_str = " ";
    for(int i=0;i<=d-1;i++)
    sum = sum+Integer.parseInt(a<i>);
    Sum_str =Integer.toString(sum);
    result.addValue(Sum_str);
    UDF2
    public void Credit2Sum(String[] a,ResultList result,Container container){
       //write your code here
        //write your code here
    float count = a.length;
    float c = count/2;
    int d = (int)c;
    int sum=0;
    String Sum_str = " ";
    for(int i=d;i<=count-1;i++)
    sum = sum+Integer.parseInt(a<i>);
    Sum_str =Integer.toString(sum);
    result.addValue(Sum_str);
    Thx
    Srini

  • When I try to add a new event to iCal a dialog says "you can't add or change events in the Birthday Calendar". How do I cancel this?

    When I try to add a New Event to iCal a dialog box keeps saying "you can't add or change events in the Birthday Calendar". iCal is, however, receiving up-dates from my other devoces via iCloud. Can anyone help unblock this for me please?

    You can not add events to the birthday's calendar. To add birthday's to the birthday calendar you need to add the birthday to a contact in the Contacts app.
    You can set your default calendar here:
    iCal > Preferences > General  > Default Calendar and chose the calendar you want to default to.

  • Running Lightroom 6 on Windows machine (after having upgraded from LR5... While attempting to add or change music in the Slideshow module, LR unexpectedly quits.  After several attempts at this, LR6 won't even launch properly...shows the splash screen but

    Running Lightroom 6 on Windows machine (after having upgraded from LR5... While attempting to add or change music in the Slideshow module, LR unexpectedly quits.  After several attempts at this, LR6 won't even launch properly...shows the splash screen but that's it.  The program is buggy...need an update/revision quickly!!

    If you're on Windows, check out a free program called Audacity--it's fantastic.  With Audacity the process of converting a 48.000 kHz to 44.100 kHz is as simply as opening, changing the sample rate, and then exporting again, as an MP3.

  • Context changes

    wat is context and how it changes?

    Hi,
      Assume u have message type as follows.
    i.e MTO_Sample-
           -Data1
              - filed1
              - filed2
              - filed3
          -Data2
              - filed1
              - filed2
              -filed3
        -Data N
              - filed1
              - filed2
             - filed3
    where Data1, Data2 and Date3 are context..
    assume u have Data1 with 2 records, then start of second record nothing but context change.
    please chk the following link.
    http://help.sap.com/saphelp_nw04s/helpdata/en/48/444941db42f423e10000000a155106/frameset.htm
    /people/yukai.shi/blog/2006/06/02/b2b-mapping-techniques-using-the-graphical-mapping-tool
    /people/harrison.holland5/blog/2006/12/08/mapping-context-changes-in-xi
    regards
    mahesh.

  • Context Changes got impact on what?

    Context Changes got impact on what?.

    Hi Ash,
    Context changes have impact on:
    &#56256;&#56452; User-Defined Functions
    &#56256;&#56452; Breaking and inserting of hierarchy levels
    For more see below PPT of SAP:
    <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/be05e290-0201-0010-e997-b6e55f9548dd">https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/be05e290-0201-0010-e997-b6e55f9548dd</a>
    Regards,
    Subhasha Ranjan

  • Context change

    Hi,
    what is context change?? where it is implemented?
    thanks in advance.

    Hi!
    Context changes take place in Message Mapping when the source structure is processed. for more details about mapping and context change see sap online help - e.g. here http://help.sap.com/saphelp_nwpi71/helpdata/en/49/1ebc6111ea2f45a9946c702b685299/content.htm
    Regards,
    Volker
    Additionally:
    More detailed information about contexts and context changes see here: http://help.sap.com/saphelp_nwpi71/helpdata/en/3d/24e15bf9d79243b45d49b13b03de8f/content.htm
    Edited by: Volker Kolberg on May 25, 2009 10:10 AM

  • User changes in tab strip ui element are not recorded in context change log

    Hi All,
    We are using a tab strip ui element in webdynpro component. But user changes inside tab strip ui element are not getting recorded to the context change log. I have an input field on the same view besides  tab strip ui element. User changes to this input field are getting recorded to the context change log.
    Is there any restriction on context change log usage with tab strip ui element?
    Could you please suggest If there is any way to record changes inside tab strip ui element.
    Thanks,
    Sudheer.

    I think there are some limitations exists, context change logs are not complete when you do value help , i am not sure about tab strip.
    [http://help.sap.com/saphelp_nw70ehp1/helpdata/en/47/a8e5d273b12fe2e10000000a42189d/content.htm|http://help.sap.com/saphelp_nw70ehp1/helpdata/en/47/a8e5d273b12fe2e10000000a42189d/content.htm]

  • Unable to edit, add or change passwords in iphoto web gallery

    Iphoto and Web Gallery were working great but recently, I am unable to add, change, or delete passwords to my web galleries. When I go Settings and into Edit Names and Passwords, I can add or change a password but when I click OK, it will not allow either clicking on OK or hitting return. I have also posted an album to web gallery and it does not appear in the list in Settings or in the Edit Name and Password lists but I can see my gallery out on the web with all photos.
    Any help on why this is. I have both a IMAC and a Macbook and it is the same with both computers using my imac account. Both have updated software and the Macbook has Parallels installed. I
    ran repair in Keychain Access with no problems. I created another account and this did not help.
    Thanks

    bretj:
    Welcome to the Apple Discussions. Try the following:
    1 - repair disk permissions with Disk Utility.
    2 - delete the iPhoto preference file, com.apple.iPhoto.plist, that resides in your User/Library/Preferences folder..
    TIP: For insurance against the iPhoto database corruption that many users have experienced I recommend making a backup copy of the Library6.iPhoto database file and keep it current. If problems crop up where iPhoto suddenly can't see any photos or thinks there are no photos in the library, replacing the working Library6.iPhoto file with the backup will often get the library back. By keeping it current I mean backup after each import and/or any serious editing or work on books, slideshows, calendars, cards, etc. That insures that if a problem pops up and you do need to replace the database file, you'll retain all those efforts. It doesn't take long to make the backup and it's good insurance.
    I've created an Automator workflow application (requires Tiger), iPhoto dB File Backup, that will copy the selected Library6.iPhoto file from your iPhoto Library folder to the Pictures folder, replacing any previous version of it. It's compatible with iPhoto 08 libraries and Leopard. iPhoto does not have to be closed to run the application, just idle. You can download it at Toad's Cellar. Be sure to read the Read Me pdf file.

Maybe you are looking for

  • Tax Reporter SUI XML Changes

    SAP Note 1434188 under the heading SUI XML Changes introduces the file FL_Schema.xsd published by the Florida Department of Revenue to correctly download XML files for Q1/2010. Now we are working with Q2/2010 and some elements are used but not declar

  • Photoshop CS3 Crashes on open or save

    Has anyone else encountered this problem? I have followed all instructions in this document http://kb.adobe.com/selfservice/viewContent.do?externalId=kb401517 to no avail. Photoshop CS3 has never worked on my MBP. It is useless.

  • How to get rid of border in the RowSetBrowser

    I use the RowSetBrowser object with rounded corners option switched off like this: RowSetBrowser.setUseRoundedCorners(false); This creates the web page where the records are shown within the table with ugly border. How to get rid of this table border

  • Connect iPod to a BMW motorcycle

    Has anyone tried this. I have two choices. 1. Connect to the factory fitted BMW Radio/CD 2. Connect to an aftermarket "Autocom" unit. UK Company. Option 1. is by far the best as it has the potential to power the iPod and allow use of the handlebar co

  • Area of the parts != Area of the whole

    My tables are polygon datasets stored in NAD83 (SRID=8265) and I have noticed that the sum of area calculations of a subdivided polygon do not equal the area of the original polygon. I created a simple test case to confirm the results. I created a sq