Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

what is the use of control command......AT NEW....

Former Member
0 Kudos

HI All,

What is the use of the control command AT NEW and END AT. how to use it in a loop. i got a requirement like this:

LOOP AT xvbplp WHERE venum = shenr.

IF xvbplp-posnr IS INITIAL.

  • Versandelement

PERFORM packing_tree USING xvbplp-unvel.

ELSE.

  • Lieferposition (Anteil)

vbplp = xvbplp.

PERFORM customer_material.

IF vbplp-brgew <> 0.

PERFORM set_textsymbol USING '&ITEM_WEIGHT&'

vbplp-brgew.

ELSE.

PERFORM set_textsymbol USING '&ITEM_WEIGHT&'

' '.

ENDIF.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'DELPOS'.

ENDIF.

ENDLOOP.

can any body tell me can i use the control command

LOOP AT xvbplp WHERE venum = shenr.

IF xvbplp-posnr IS INITIAL.

  • Versandelement

PERFORM packing_tree USING xvbplp-unvel.

ELSE.

  • Lieferposition (Anteil)

vbplp = xvbplp.

<b>AT NEW POSNR</b>

SUM brgew

PERFORM customer_material.

IF vbplp-brgew <> 0.

PERFORM set_textsymbol USING '&ITEM_WEIGHT&'

vbplp-brgew.

ELSE.

PERFORM set_textsymbol USING '&ITEM_WEIGHT&'

' '.

ENDIF.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'DELPOS'.

ENDIF.

<b>END AT.</b>

ENDLOOP.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

at new command allows u to trigger the execution if the value of the field changes

regards

3 REPLIES 3

Former Member
0 Kudos

at new command allows u to trigger the execution if the value of the field changes

regards

Former Member
0 Kudos

Hi,

At new posnr

is triggered when it encouters new pornr values...................

regards,

Vinod Samuel.

Former Member
0 Kudos

Hi Ram ,

Check this:

Variants:

1. AT NEW f.

2. AT END OF f.

3. AT FIRST.

4. AT LAST.

Variant 1

AT NEW f.

Variant 2

AT END OF f.

Effect

f is a sub-field of an internal table or extract dataset (EXTRACT) which is being processed with LOOP, i.e. the variants 1 and 2 only make sense within a LOOP.

Both "AT NEW f." and "AT END OF f. " introduce processing blocks which are concluded by " ENDAT.".

These processing blocks are processed whenever the contents of a field f or a sub-field defined before f change as a result of processing with LOOP. "AT NEW f." begins a new group of (table) lines with the same contents as the field f while "AT END OF f." concludes such a group.

Within the AT ... ENDAT processing of internal tables, all argument fields following f are filled with "*".

Examples

1. AT for sub-fields of an internal table

DATA: BEGIN OF COMPANIES OCCURS 20,

NAME(30),

PRODUCT(20),

SALES TYPE I,

END OF COMPANIES.

...

LOOP AT COMPANIES.

AT NEW NAME.

NEW-PAGE.

WRITE / COMPANIES-NAME.

ENDAT.

WRITE: / COMPANIES-PRODUCT, COMPANIES-SALES.

AT END OF NAME.

SUM.

WRITE: / COMPANIES-NAME, COMPANIES-SALES.

ENDAT.

ENDLOOP.

The AT statements refer to the field COMPANIES-NAME.

Examples

2. AT for the field of an extract dataset

DATA: NAME(30),

SALES TYPE I.

FIELD-GROUPS: HEADER, INFOS.

INSERT: NAME INTO HEADER,

SALES INTO INFOS.

...

LOOP.

AT NEW NAME.

NEW-PAGE.

ENDAT.

...

AT END OF NAME.

WRITE: / NAME, SUM(SALES).

ENDAT.

ENDLOOP.

Notes

If the processing you want to perform on an internal table is fairly restricted (i.e. a WHERE addition with the LOOP statement), do not use the AT statements specified in variants 1 to 5, since the interaction of the WHERE addition and the AT statement is currently not defined.

When you use LOOP with an extract dataset, fields on hex zero are ignored during control level checking with AT NEW or AT END OF . This procedure is the same as the SORT statement. When sorting extracted datasets, this statement always sorts blank fields (i.e. fields on hex zero) regardless of the sequence (ascending or descending) before all fields that contain values.

Since fields addressed with AT are not set to an initial value when you enter a LOOP, the first new group of (table) lines in AT NEW f may not be processed, if f happens to be set to this value.

Variant 3

AT FIRST.

Variant 4

AT LAST.

Effect

The variants 3 and 4 only make sense within a LOOP.

The processing block between AT FIRST and ENDAT is executed before the individual lines are processed; the processing block between AT LAST and ENDAT is executed after all the individual lines have been processed.

In AT FIRST or AT LAST ... ENDAT processing, all argument fields are filled with "*" (internal tables).

When you are processing extract datasets, a control total SUM(n) can only be processed with AT END OF or AT LAST.

Example

DATA: BEGIN OF COMPANIES OCCURS 20,

NAME(30),

PRODUCT(20),

SALES TYPE I,

END OF COMPANIES.

...

LOOP AT COMPANIES.

AT FIRST.

SUM.

WRITE: 'Sum of all SALES:',

55 COMPANIES-SALES.

ENDAT.

WRITE: / COMPANIES-NAME, COMPANIES-PRODUCT,

55 COMPANIES-SALES.

ENDLOOP.

Reward If Useful.

Regards,

Chitra