Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Obsolete Language Elements →  Obsolete Extracts 

AT - Extract

Short Reference

Other versions: 7.31 | 7.40 | 7.54

Obsolete Syntax

LOOP.
  [AT FIRST.
     ...
   ENDAT.]
  [AT field_groupi [WITH field_groupj]
     ...
   ENDAT.]
    [AT NEW field1.
       ...
     ENDAT.
      [AT NEW field2.
         ...
       ENDAT.
         [...]]]
           [ ... ]
        [[[...]
        AT END OF field2.
         ...
       ENDAT.]
     AT END OF field1.
       ...
     ENDAT.]
  [AT LAST.
     ...
  ENDAT.]
ENDLOOP.

Extras

1. ...  FIRST

2. ... field_groupi [WITH field_groupj]

3. ... {NEW}|{END OF} fieldi

4. ...  LAST

Effect

The statement block of a LOOP for extracts can contain control structures for control level processing. The corresponding control statement is AT. The statements AT and ENDAT define statement blocks that are executed at control breaks. Within some of these statement blocks, it is possible to access the automatically created data objects sum(field) and cnt(field).

A prerequisite for control level processing is that the extraction dataset is sorted. From the line structure and the respective sorting, you get a group structure of the content of the extraction dataset. Its levels can be evaluated using AT statements. The AT-ENDAT control structures must be aligned one after the other, in accordance with the group structure. This is not necessarily the order of the fields in the field group header, but it can be determined by the BY addition in the SORT statement.

The statement blocks within the AT-ENDAT control structures are executed if an appropriate control break is made in the current row. Statements in the LOOP-ENDLOOP control structure that are not executed within an AT-ENDAT control structure are executed in each pass of the loop.


Note

Extracts are now obsolete. We recommend that you use internal tables instead

Addition 1

...  FIRST

Effect

The control level is defined by the first line of the extract dataset.

Addition 2

... field_groupi [WITH field_groupj]

Effect

A line that is attached to the extract dataset using the statement EXTRACT field_groupi. If the WITH addition is specified, the next line must be defined by the field group field_groupj.

Addition 3

... {NEW}|{END OF} fieldi

Effect

The control level is defined by the beginning or end of a group of lines with the same content in the component fieldi and in the component links of fieldi. The component field must be part of the field group header. Components whose content is hexadecimal 0 are not included as a control break criterion.

For fieldi, a field symbol can also be specified. If a component of field group header is assigned to the field symbol when the statement is executed, this has the same effect as specifying the respective component. If no data object is assigned to the field symbol, the specification is ignored. If another data object is assigned to the field symbol, a non-handleable exception is raised.

Addition 4

...  LAST

Effect

The control level is defined by the last line of the extraction dataset.


Example

This example continues the example given under EXTRACT. After the extract dataset is filled,it is sorted by field group header and, afterwards, control level processing is executed in a LOOP. Here a structured list is created.

REPORT ... 

DATA: spfli_wa TYPE spfli, 
      sflight_wa  TYPE sflight, 
      spfli_tab   LIKE TABLE OF spfli_wa, 
      sflight_tab LIKE TABLE OF sflight_wa. 

FIELD-GROUPS: header, flight_info, flight_date. 

START-OF-SELECTION. 
  INSERT: spfli_wa-carrid spfli_wa-connid sflight_wa-fldate 
            INTO header, 
          spfli_wa-cityfrom spfli_wa-cityto 
            INTO flight_info. 

  SELECT * 
         FROM spfli 
         INTO TABLE spfli_tab. 

  SELECT * 
         FROM sflight 
         INTO TABLE sflight_tab. 

  LOOP AT spfli_tab INTO spfli_wa. 
    sflight_wa-fldate ='--------'. 
    EXTRACT flight_info. 
    LOOP AT sflight_tab INTO sflight_wa 
            WHERE carrid = spfli_wa-carrid AND 
                  connid = spfli_wa-connid. 
      EXTRACT flight_date. 
    ENDLOOP. 
  ENDLOOP. 

  SORT STABLE. 
  LOOP. 
    AT FIRST. 
      WRITE / 'Flight list'. 
      ULINE. 
    ENDAT. 
    AT flight_info WITH flight_date. 
      WRITE: / spfli_wa-carrid , spfli_wa-connid, sflight_wa-fldate, 
               spfli_wa-cityfrom, spfli_wa-cityto. 
    ENDAT. 
    AT flight_date. 
      WRITE: / spfli_wa-carrid , spfli_wa-connid, sflight_wa-fldate, 
    ENDAT. 
    AT LAST. 
      ULINE. 
      WRITE: cnt(spfli_wa-carrid), 'Airlines'. 
      ULINE. 
    ENDAT. 
  ENDLOOP. 

Continue

cnt( )

sum( )

Extracts - Control Level Processing

Extracts - Ascertaining Numbers and Totals