INTO
or APPENDING , then either all rows are extracted, or as many
as specified in the addition PACKAGE SIZE .
The statement FETCH moves the position of the database cursor
(which is associated with dbcur ) by the amount of extracted rows
to the next row to be extracted. If the last row of the results set was
extracted in a FETCH statement, each subsequent FETCH
statement in which
dbcur is associated with the same database cursor sets
sy-subrc to 4, without affecting the data objects specified after
INTO or APPENDING .
System Fields
The statement FETCH sets the values of the system fields
sy-subrc and sy-dbcnt .
sy-subrc Meaning
0At least one row was extracted from the results set.
4No row was extracted.
After every row extraction, the statement FETCH sets
sy-dbcnt to the amount of rows extracted so far from the relevant
results set. If an overflow occurs because the number or rows is greater
than 2,147,483,647, sy-dbcnt is set to -1. If no row can be
extracted, then sy-dbcnt is set to 0.
Latest notes: Consecutive FETCH statements that access the same
results set can have the different additions INTO or
APPENDING : Work areas can be specified together with internal tables.
In doing so, the addition CORRESPONDING FIELDS is either not
listed at all in any of the FETCH statements involved, or has to
be listed in every statement. Moreover, the data types of all work areas
wa involved or the row types of the internal tables itab
must be identical. A bracketed list of data objects after INTO
cannot be specified together with work areas or internal tables, but
every involved FETCH statement must contain a list of this type.
It depends on the database system whether the database cursor in the
database is closed implicitly after the extraction of the final row of
the results set or not. For this reason, it is always better to use the
CLOSE CURSOR statement explicitly.
Wenn in der INTO -Klausel die Erzeugung von
Lesestr�men angegeben ist, schlie�t
FETCH alle mit der Ergebnismenge verkn�pften Lesestr�me bevor
sie neue erzeugt.
Example ABAP Coding Reading of data from the database table
SPFLI in packets of varying size
using two parallel cursors. The packet size is determined by the first
cursor using the aggregation
function count( * ) and using the second cursor for access.
Variable control of the addition PACKAGE SIZE is not possible
within a single SELECT statement.
DATA: BEGIN OF count_line,
carrid TYPE spfli-carrid,
count TYPE i,
END OF count_line,
spfli_tab TYPE TABLE OF spfli.
DATA: dbcur1 TYPE cursor,
dbcur2 TYPE cursor.
OPEN CURSOR dbcur1 FOR
SELECT carrid count(*) AS count
FROM spfli
GROUP BY carrid
ORDER BY carrid.
OPEN CURSOR dbcur2 FOR
SELECT *
FROM spfli
ORDER BY carrid.
DO.
FETCH NEXT CURSOR dbcur1 INTO count_line.
IF sy-subrc <(><<)>> 0.
EXIT.
ENDIF.
FETCH NEXT CURSOR dbcur2
INTO TABLE spfli_tab PACKAGE SIZE count_line-count.
ENDDO.
CLOSE CURSOR: dbcur1,
dbcur2.
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved