Application Development and Automation 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: 
Read only

loop events

Former Member
0 Likes
5,145

HI all,

can one one explain me loop events concept with example...

hw it works...

i stadied few documents but i didnt understand hw to use these events in the loop.

it will be help full if some one explain me with example.

thanks

1 REPLY 1
Read only

Former Member
0 Likes
1,812

There are following events arvailable :

1. AT NEW f.

2. AT END OF f.

3. AT FIRST.

4. AT LAST.

5. AT fg.

Effect

In a LOOP which processes a dataset created with EXTRACT , you can use special control structures for control break processing. All these structures begin with AT and end with ENDAT . The sequence of statements which lies between them is then executed if a control break occurs.

You can use these key words for control break processing with extract datasets only if the active LOOP statement is proceesing an extract dataset.

The control level structure with extract datasets is dynamic. It corresponds exactly to the sort key of the extract dataset, i.e. to the order of fields in the field group HEADER by which the extract dataset was sorted .

At the end of a control group ( AT END OF , AT LAST ), there are two types of control level information between AT and ENDAT :

If the sort key of the extract dataset contains a non-numeric field h (particularly in the field group HEADER ), the field CNT(h) contains the number of control breaks in the (subordinate) control level h .

For extracted number fields g (see also ABAP/4 number types ), the fields SUM(g) contain the relevant control totals.

Notes

The fields CNT(h) and SUM(g) can only be addressed after they have been sorted. Otherwise, a runtime error may occur.

The fields CNT(h) and SUM(g) are filled with the relevant values for a control level at the end of each control group ( AT END OF , AT LAST ), not at the beginning ( AT FIRST , AT NEW ).

When calculating totals with SUM(g) , the system automatically chooses the maximum field sizes so that an overflow occurs only if the absolute value area limits are exceeded.

You can also use special control break control structures with LOOP s on internal tables.

Variant 1

AT NEW f.

Variant 2

AT END OF f.

Effect

f is a field from the field group HEADER . The enclosed sequence of statements is executed if

the field f occurs in the sort key of the extract dataset (and thus also in the field group HEADER ) and

the field f or a superior sort criterion has a different value in the current LOOP line than in the prceding ( AT NEW ) or subsequent ( AT END OF ) record of the extract dataset.

Example

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 extract dataset is not sorted before processing with LOOP , no control level structure is defined and the statements following AT NEW or AT END OF are not executed.

Fields which stand at hex zero are ignored by the control break check with AT NEW or AT END OF . This corresponds to the behavior of the SORT statement, which always places unoccupied fields (i.e. fields which stand at hex zero) before all occupied fields when sorting extract datasets, regardless of whether the sort sequence is in ascending or descending order.

Variant 3

AT FIRST.

Variant 4

AT LAST.

Effect

Executes the relevant series of statements just once - either on the first loop pass (with AT FIRST ) or on the last loop pass (with AT LAST ).

Variant 5

AT fg.

Addition

... WITH fg1

Effect

This statement makes single record processing dependent on the type of extracted record.

The sequence of statements following AT fg are executed whenever the current LOOP record is created with EXTRACT fg (in other words: when the current record is a fg record).

Addition

... WITH fg1

Effect

Executes the sequence of statements belonging to AT fg WITH fg1 only if the record of the field group fg in the dataset is immediately followed by a record of the field group fg1 .

Basic form

ON CHANGE OF f.

Addition

... OR f1

Effect

Executes the processing block enclosed by the " ON CHANGE OF f " and " ENDON " statements whenever the contents of the field f change (control break processing).

Normally, you use the statement to manipulate database fields during GET events or SELECT / ENDSELECT processing.

Note

There are special control structures for processing control breaks in LOOP s on internal tables or extract datasets AT ).

ON CHANGE OF is unsuitable for recognizing control levels in loops of this type because it always creates a global auxiliary field which is used to check for changes. This global auxiliary field can only be changed in the relevant ON CHANGE OF statement. It is not reset when the processing goes into loops or subroutines, so unwanted effects can occur if the loop or subroutine is executed again. Also, since it is set to its initial value when created (like any other field), any ON CHANGE OF processing will be executed after the first test, unless the contents of the field concerned happen to be identical to the initial value.

Example

TABLES T100.

*SELECT * FROM T100 WHERE SPRSL = SY-LANGU AND*

MSGNR < '

ORDER BY PRIMARY KEY.

ON CHANGE OF T100-ARBGB.

ULINE.

WRITE: / '*', T100-ARBGB, '*'.

ENDON.

WRITE: / T100-MSGNR, T100-TEXT.

ENDSELECT.

Displays all messages with their numbers in the logon language, provided the number is less than '010'.

Each time the message class changes, it is output.

Addition

... OR f1

Effect

Also executes the code whenever the contents of the field f1 changes.

You can use this addition several times.

Example

    • Logical database F1S*

TABLES: SPFLI, SFLIGHT, SBOOK.

GET SBOOK.

ON CHANGE OF SPFLI-CARRID OR

SPFLI-CONNID OR

SFLIGHT-FLDATE.

ULINE.

WRITE: /5 SPFLI-CARRID, SPFLI-CONNID,

5 SFLIGHT-FLDATE, SPFLI-FLTIME,

5 SFLIGHT-SEATSMAX, SFLIGHT-SEATSOCC.

ENDON.

WRITE: / SBOOK-CUSTOMID.

The code between ON CHANGE OF and ENDON is executed only if at least one of the fields SPFLI-CARRID , SPFLI-CONNID or SFLIGHT-FLDATE has changed, i.e. there is a different flight connection (which also has bookings).

Reward If found useful.