READ TABLE itab
[ [FROM record] |
[WITH TABLE KEY {field = value}] |
[WITH KEY {field = value} [BINARY SEARCH] ] |
[INDEX index] ]
[INTO record]
[ASSIGNING <field_symbol>]
[COMPARING fieldlist | ALL FIELDS]
[TRANSPORTING fieldlist | NO FIELDS].
Diese Anweisung liest einen Datensatz aus einer internen Tabelle. Es
arbeitet generisch und kann daher alle Arten interner Tabellen verarbeiten.
Das
Ergebnis wird entweder in der Kopfzeile der Tabelle oder in einem mit
INTO benannten Arbeitsbereich zur Verfügung
gestellt. Übertragen werden dabei alle Felder, sofern nicht mit TRANSPORTING
eine Auswahl angegeben wird. Falls es nur darauf ankommt, einen Datensatz
zu finden (Existenzprüfung bzw. Indexermittlung) spart das Unterdrücken
der Wertübertragung mit TRANSPORTING NO FIELDS
Abarbeitungszeit.
Der zu lesende Datensatz kann durch verschiedene Methoden ausgewählt
werden. Mit INDEX wird die Datensatznummer
angegeben. Durch die unterschiedlichen WITH KEY-Zusätze
wird ein Suchschlüssel definiert, entweder feldweise oder durch
Angabe eines Arbeitsbereiches mit mehreren Schlüsselwerten. Im
Zusammenhang mit WITH KEY kann mit dem Zusatz
BINARY SEARCH die Suche beschleunigt werden,
wenn die Tabelle entsprechend dem verwendeten Schlüssel vorsortiert
ist. Die Anweisung führt dann anstelle der sequentiellen eine binäre
Suche durch. Die Standardform des READ-Kommandos
(ohne WITH KEY-Zusatz) erwartet den Schlüssel
in der Kopfzeile der internen Tabelle, der entweder im Kopfsatz der Tabelle oder einem mit
FROM benannten Arbeitsbereich stehen muß. Der Schlüssel besteht dann aus
allen Feldern der Kopfzeile, die nicht den Typ I, F oder P haben und deren
Inhalt ungleich dem Leerzeichen ist.
Der Zusatz COMPARING führt einen zusätzlichen
Vergleich zwischen den Feldern des gelesenen Satzes und der Kopfzeile aus.
Er verhindert nicht die Übertragung des Satzes, sondern setzt nur das
Systemfeld SY-SUBRC.
Er ist zur Überprüfung von Nicht-Schlüsselfeldern
hilfreich.
Durch den Einsatz von ASSIGNING kann eine
Referenz direkt in den Tabellenrumpf erzeugt werden. Damit ist es möglich,
Daten in der internen Tabelle ohne Umweg über den Arbeitsbereich zu ändern.
Beachten Sie bitte, daß mit WITH TABLE KEY der in der Tabellendefinition festgelegte
komplette Schlüssel benutzt werden muß, während bei WITH
KEY beliebige Felder zur Suche benutzt werden können.