Die INTO-Klausel definiert den Zielbereich, in den die Selektion der SELECT-Klausel geschrieben wird. Als Zielbereich kommen Variablen in Frage, deren Datentyp kompatibel oder zumindest konvertibel zur Selektion der SELECT-Klausel sein muss.
Die SELECT-Klausel bestimmt den Datentyp des Zielbereichs wie folgt:
· Die Zeilenangabe lines der SELECT-Klausel bestimmt die Tiefe des Zielbereichs, also ob er flach oder tabellenartig ist.
· Die Spaltenangabe cols der SELECT-Klausel bestimmt die Struktur (Zeilentyp) des Zielbereichs.

Bei der Selektion einer einzelnen Zeile muss der Zielbereich flach sein. Bei der Selektion mehrerer Zeilen kann der Zielbereich tabellenartig oder flach sein. Bei flachem Zielbereich muss dann eine SELECT-Schleife ausgeführt werden.
Bei der Selektion aller Spalten muss der Zielbereich eine Struktur oder dazu konvertibel sein. Bei der Selektion einzelner Spalten kann der Zielbereich eine Komponente einer Struktur oder ein Einzelfeld sein.
Die elementaren Datentypen in der Selektion der SELECT-Klausel sind Dictionary Typen. Die Dictionary Typen müssen in die ABAP Datentypen der entsprechenden elementaren Komponenten des Zielbereichs konvertierbar sein. Eine entsprechende Tabelle findet sich unter Datentypen im ABAP Dictionary.
Um einen flachen Arbeitsbereich als Zielbereich anzugeben, schreibt man für die INTO-Klausel:
SELECT ... INTO [CORRESPONDING FIELDS OF] wa ...
Der Arbeitsbereich wa muss mindestens genauso groß wie die einzulesende Zeile sein. Beim Einlesen wird der vorhandene Inhalt von wa überschrieben. Nicht betroffene Teile von wa behalten aber ihren alten Wert.
Bei strukturierten Arbeitsbereichen kann der Zusatz CORRESPONDING FIELDS eingesetzt werden. Mit dem Zusatz werden nur die Inhalte namensgleicher Felder komponentenweise von der Selektion dem Arbeitsbereich zugewiesen. Dabei werden eventuelle alternative Spaltennamen der Selektion berücksichtigt.
Um eine interne Tabelle als Zielbereich anzugeben, schreibt man für die INTO-Klausel:
SELECT ... INTO|APPENDING [CORRESPONDING FIELDS OF] TABLE itab
[PACKAGE SIZE n] ...
Die interne Tabelle wird mit allen Zeilen der Selektion gefüllt. Dabei werden bei Verwendung von INTO alle bereits vorhandenen Zeilen gelöscht und bei Verwendung von APPENDING die neuen Zeilen in die bereits vorhandenen Zeilen eingefügt.
Mit dem Zusatz PACKAGE SIZE werden die Zeilen der Selektion nicht auf einmal, sondern paketweise in die interne Tabelle geschrieben. Es können Pakete von n Zeilen definiert werden, die eines nach dem anderen in die Tabelle geschrieben werden.
Falls in der SELECT-Klausel einzelne Spalten oder Aggregatausdrücke als Spaltenangabe gemacht sind, können Einzelfelder beim Lesen von Einzelzeilen oder beim Lesen mehrerer Zeilen in einer SELECT-Schleife angegeben werden. Um Einzelfelder als Zielbereich anzugeben, schreibt man für die INTO-Klausel:
SELECT ... INTO (f1, f2, ...) ...
Es müssen genau so viele Einzelfelder f1, f2, …angegeben werden, wie die Liste in der SELECT-Klausel an Spalten und Aggregatausdrücken enthält. Die Felder der SELECT-Klausel werden von links nach rechts den Einzelfeldern der INTO-Klausel zugewiesen.

Flache Strukturen als Zielbereich
DATA wa TYPE spfli.
SELECT *
INTO wa
FROM spfli.
WRITE: / wa-carrid...
ENDSELECT.
Es wird eine flache Struktur des gleichen Datentyps wie die Datenbanktabelle SPFLI als Zielbereich einer SELECT-Schleife verwendet. Innerhalb der Schleife kann typgerecht auf den Inhalt der einzelnen Spalten zu gegriffen werden.
DATA spfli TYPE spfli.
SELECT *
FROM spfli.
WRITE: / spfli-carrid...
ENDSELECT.
Es wird eine Struktur spfli deklariert, die den gleichen Namen wie die zu lesende Datenbanktabelle hat. In der SELECT-Schleife wird implizit diese Struktur als Zielbereich verwendet. Hier besteht die Gefahr, zu übersehen, dass in der Schleife ein ABAP-Datenobjekt verarbeitet wird und nicht die Datenbank selbst.

Interne Tabelle als Zielbereich
REPORT demo_select_into_table.
DATA: BEGIN OF wa,
carrid TYPE
spfli-carrid,
connid TYPE
spfli-connid,
cityfrom TYPE
spfli-cityfrom,
cityto TYPE
spfli-cityto,
END OF wa,
itab LIKE SORTED TABLE OF wa
WITH
NON-UNIQUE KEY cityfrom cityto.
SELECT carrid connid cityfrom cityto
INTO CORRESPONDING FIELDS OF TABLE itab
FROM spfli.
IF sy-subrc EQ 0.
WRITE: / sy-dbcnt, 'Connections'.
SKIP.
LOOP AT itab INTO wa.
WRITE: / wa-carrid, wa-connid, wa-cityfrom,
wa-cityto.
ENDLOOP.
ENDIF.
Die Listenausgabe ist:

Es wird eine sortierte Tabelle itab, die vier Felder mit gleichem Namen und gleichem Datentyp wie die Datenbanktabelle SPFLI hat als Zielbereich verwendet. Durch den Zusatz CORRESPONDING FIELDS werden die Spalten der SELECT-Klausel in die richtigen Felder der Tabelle übertragen und gleichzeitig nach dem Tabellenschlüssel von itab sortiert.

Einlesen von Paketen in interne Tabellen
REPORT demo_select_into_package.
DATA: wa TYPE spfli,
itab TYPE SORTED TABLE OF spfli
WITH
UNIQUE KEY carrid connid.
SELECT carrid connid
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE itab
PACKAGE SIZE 3.
LOOP AT itab INTO wa.
WRITE: / wa-carrid, wa-connid.
ENDLOOP.
SKIP 1.
ENDSELECT.
Die Listenausgabe ist:

Es werden Pakete von je 3 Zeilen in die sortierte Tabelle itab gelesen. Innerhalb jedes Durchgangs der SELECT-Schleife hat die interne Tabelle einen anderen sortierten Inhalt.
Bei Verwendung von APPENDING statt INTO sähe die Listenausgabe übrigens so aus:

Bei jedem Schleifendurchgang wird ein weiteres Paket in die interne Tabelle einsortiert.

Einzelfelder als Zielbereich.
REPORT demo_select_single_fields.
DATA: average TYPE p DECIMALS 2,
sum
TYPE p DECIMALS 2.
SELECT AVG( luggweight ) SUM( luggweight )
INTO (average, sum)
FROM sbook.
WRITE: / 'Average:', average,
/ 'Sum :',
sum.
Die Listenausgabe ist:

In der SELECT-Klausel sind zwei Aggregatausdrücke zur Berechnung von Durchschnittswert und Summe der Felder LUGGWEIGHT in der Datenbanktabelle SBOOK angegeben. Die beiden Felder average und sum werden als Zielbereich verwendet.

Alternativnamen verwenden.
REPORT demo_select_as.
DATA: BEGIN OF luggage,
average TYPE p DECIMALS 2,
sum
TYPE p DECIMALS 2,
END OF luggage.
SELECT AVG( luggweight ) AS average SUM( luggweight ) AS sum
INTO CORRESPONDING FIELDS OF luggage
FROM sbook.
WRITE: / 'Average:', luggage-average,
/ 'Sum :',
luggage-sum.
Die Listenausgabe ist:

Das Beispiel hat die gleiche Funktionalität wie vorhergehendes, nur dass hier statt einer Liste von Einzelfeldern eine Struktur als Zielbereich angegeben wird und dass die Namen der Strukturkomponenten als Alternativnamen in der SELECT-Klausel verwendet werden.