AT - Control break with extracts
Variants
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 .
Index
© SAP AG 1996