9 Replies Latest reply: Jan 8, 2009 4:56 PM by Shiv G Sethu RSS

at new and on change of

vijay p
Currently Being Moderated

Hi Friends,

can any one explain ,

1) what is main difference between at new and on change of

control break statements...

2) in which situation we are supposed use on change of control beark.

 

cheers,

  • Re: at new and on change of
    Raghavendra L
    Currently Being Moderated

    on change of works same like at-new but the diff is it can

    be used out side of a loop,like select and endselect,case

    endcase

  • Re: at new and on change of
    maddipatla Seshadri naidu
    Currently Being Moderated

    hi vijay,

     

    if u use 'at-new' statement , basically it dont pick first record of the itab where as 'on chage of' can pick from first record.

     

    all these control brake statements can work with header line except 'on change of' event.

     

     

    regards..

    seshu.

  • Re: at new and on change of
    Machindra Jogdand
    Currently Being Moderated

    Hi,

     

    At New.

     

    Effect

    Beginning or end of a group of lines with the same content in the component comp1 comp2 ... and in the components to the left of comp1 comp2 .... The components comp1 comp2 ... can be specified, as described in the section Specification of Components, with the limitation that access to object attributes is not possible here.

     

    Example:

     

    LOOP AT itab result ... 
        [AT NEW comp1. 
           ... 
         ENDAT. 
    endloop.

     

     

     

    On Change of:

     

    Effect:

    The statements ON CHANGE OF and ENDON, which are forbidden in classes, define a control structure that can contain a statement block statement_block. After ON CHANGE OF, any number of data objects dobj1, dobj2... of any data type can be added..

     

    Example:

    In a SELECT loop, a statement block should only be executed if the content of the column CARRID has changed.

     

    DATA spfli_wa TYPE spfli. 
    SELECT * 
           FROM spfli 
           INTO spfli_wa 
           ORDER BY carrid. 
      ... 
      ON CHANGE OF spfli_wa-carrid. 
        ... 
      ENDON. 
      ... 
    ENDSELECT.

     

  • Re: at new and on change of
    Nilesh Gaikwad
    Currently Being Moderated

    Hi,

    plz refer this thread

     

    difference btwn at new and on change of

     

     

     

    Regards

    Nilesh

  • Re: at new and on change of
    adesh Kumar
    Currently Being Moderated

    hi vijay...

     

    AT NEW             used to display the fields.

     

    ON CHANGE OF    it creates one more variable internally and check with the variable of the internal table. if different event is triggered,initial value should mis-match. Used in DO, WHILE, LOOP AT..

    generally we dont go for on change of.

  • Re: at new and on change of
    sri Ramya Goparaju
    Currently Being Moderated

    Following are the basic differences between at new and on change of.

    1.at new can be written inside loop and endloop where as on change of can be used in any loops like select --endselect,do enddo,case endcase.

    2.whenever the left side records of variable on which we placed at new are changed at new triggers

    where as it won't be triggered unless that particular variable value changed.

    ex: data:begin of itab occurs 0,

          v1 type string,

          v2 type i,

         v3 type string,

        end of itab.

     

    itab-v1 = '123'.

    itab-v2 = '1000'.

    itab-v3 = 'xyz'.

    append itab.

     

    itab-v1 = 'abc'.

    itab-v2 = '2000'.

    itab-v3 = 'xyz'.

    append itab.

     

    itab-v1 = 'def'.

    itab-v2 = '2000'.

    itab-v3 = 'ghi'.

    append itab.

     

    loop at itab.

    write: itab-v1,

           itab-v2,

           itab-v3.

     

    at new v2.

    write: 'Value changed'.

    endat.

     

    on change of itab-v2.

    write:'onchange of result'.

    endon.

    endloop.

     

    *output is:123      1,000  xyz at new result

    onchange of result

    abc      2,000  xyz

    at new result

     

    def    2,000  ghi

     

    3.at new is control break statement where as onchnge of not

    4.In on change of for every variable one auxiliary variable will be created in memory.

     

    If any thing not understood or u want any further info let me know

    Regards,

    Sri Ramya G.

  • Re: at new and on change of
    Vinod Varyani
    Currently Being Moderated

    Hi Vijay,

    Let us understand these events by an example.

    suppose you are displaying some records from mara.. Material no, material type , palnt etc.

     

    Now  when we use AT-NEW event for matnr, this event will be triggered, whenever there is any change in any of  the fields we have selected for output like material no, material type, plant

     

    while in case of  ' change of matnr' this event will be invoked only when there is a change in material no or new material has been inserted

     

    regards

    Vinod

  • Re: at new and on change of
    Nishikant Kumbhar
    Currently Being Moderated

    Hello Vijay,

    At new only used inside loop and endloop.

     

    On change of works same like at-new but the difference is it can

    be used out side of a loop,like select and endselect,case

    endcase.

    http://sap.ittoolbox.com/groups/technical-functional/sap-dev/at-new-vs-on-change-of-586600

     

    Ref below link to see the sequence & more details-

    http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb381a358411d1829f0000e829fbfe/content.htm

     

    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/5ac31178-0701-0010-469a-b4d7fa2721ca

    search for word 'on change of'

     

    Thank You,

    Nishikant.

  • Re: at new and on change of
    Shiv G Sethu
    Currently Being Moderated

    Vijay ,

     

    Control Break Event AT- NEW :

     

    Event AT-NEW will be triggered whenever the control level changes or any field prior to the control level changes.

     

    For Example:

    DATA : BEGIN OF IT_TAB OCCURS 0,

    A(5),

    B(5),

    C(5),

    END OF ITAB.

     

    Insert some Values to the internal table.

     

    SORT   IT_TAB.

     

    LOOP AT   IT_TAB,

    AT NEW A.

    <Only when value of A Changes.>

    ENDAT

    AT NEW B.

    <When Combined vales of A & B Changes i.e either A or B Or both>.

    ENDAT.

     

     

    1) Sorting of the INTERNAL TABLE is necessary.

    2) You cannot use multiple fields in AT-NEW statement.

    3) Between AT-NEW and ENDAT the content of work area will not contain any value

    4) If you change the value of a work area within AT-NEW and ENDAT your changes will be lost after the ENDAT statement.

    5) When AT NEW occurs, the alpha-numeric fields have ******* in their value

    6) Can be used in ABAP objects

     

     

    ON-CHANGE-OF :

     

    On Change of will be triggered whenever the control level changes.

    It won't be triggered when the field prior to the control level change.

     

     

    For Example:

    DATA : BEGIN OF IT_TAB OCCURS 0,

    A(5),

    B(5),

    C(5),

    END OF ITAB.

     

    Insert some Values to the Internal table.

    LOOP AT  IT_TAB,

    On CHANGE OF B.

    < Every time a value of B changes >

    ENDON.

     

    ENDLOOP.

     

     

    1)     Sorting of the INTERNAL TABLE is NOT necessary.

    2)     Mutilpe Fields are used in ON-CHANGE-OF

    3)     It can be used in any loop construct, not just loop at. For example, it can be used within select and endselect, do and enddo, or while and endwhile, as well as inside get events.

    4)      In ON CHANGE,the alpha-numeric fields have their corresponding value, of that particular record, where the Event gets fired.

    5)     When used within a loop, a change in a field to the left of the control level does not trigger a control break.

    6)     You can use else between on change of and endon.

    7)     You can use it with loop at it where . . ..

    8)      cannot be used in ABAP objects

     

     

    Regards,

    Shiv.G.Sethu

Actions