Die Anweisung READ, die auch zum Lesen von einzelnen Zeilen beliebiger Tabellen dient, erlaubt auch das Lesen über den Zeilenindex. Um eine einzelne Zeile einer Index-Tabelle auszulesen, verwendet man die Anweisung
READ TABLE <itab> INDEX <idx> <result>.
Das System liest die Zeile mit dem Index <idx> aus Tabelle <itab>. Dieser Zugriff ist schneller als die
Suche über einen Schlüssel. Die Angabe <result> bestimmt wie dort, wie mit einer gelesenen Zeile verfahren wird.Wird ein Eintrag mit dem angegebenen Index gefunden, enthält das Systemfeld SY-SUBRC den Wert 0 und SY-TABIX den Index dieser Zeile. Ansonsten ist SY-SUBRC ungleich 0.
Ist <idx> kleiner oder gleich 0, tritt ein Laufzeitfehler auf. Ist <idx> größer als die Anzahl vorhandener Zeilen, wird SY-SUBRC auf 4 gesetzt.
REPORT demo_int_tables_read_index.
DATA: BEGIN OF line,
col1 TYPE i,
col2 TYPE i,
END OF line.
DATA itab LIKE SORTED TABLE OF line WITH UNIQUE KEY col1.
FIELD-SYMBOLS <fs> LIKE LINE OF itab.
DO 20 TIMES.
line-col1 = sy-index.
line-col2 = 2 * sy-index.
APPEND line TO itab.
ENDDO.
READ TABLE itab ASSIGNING <fs> INDEX 7.
WRITE: sy-subrc, sy-tabix.
WRITE: / <fs>-col1, <fs>-col2.
Die Listenausgabe ist:
0 7
7 14
Es wird eine sortierte Tabelle ITAB angelegt und mit 20 Zeilen gefüllt. Die Zeile mit dem Index 7 wird gelesen und dem Feldsymbol <FS> zugewiesen.