Wenn beim
Lesen von Tabellenzeilen aus Standard-Tabellen ein anderer Schlüssel als der Standardschlüssel verwendet wird, kann die Suche statt linear auch binär durchgeführt werden. Hierzu muß der Zusatz BINARY SEARCH in der entsprechenden READ-Anweisung verwendet werden:READ TABLE <itab> WITH KEY <k1> = <f1>... <kn> = <fn> <result>
Voraussetzung ist, daß die Standardtabelle aufsteigend nach dem angegebenen Suchschlüssel sortiert ist. Der Zusatz eröffnet die Möglichkeit, einen Schlüsselzugriff in Standard-Tabellen genauso schnell wie in sortierten Tabellen durchzuführen.
REPORT demo_int_tables_read_index_bin.
DATA: BEGIN OF line,
col1 TYPE i,
col2 TYPE i,
END OF line.
DATA itab LIKE STANDARD TABLE OF line.
DO 4 TIMES.
line-col1 = sy-index.
line-col2 = sy-index ** 2.
APPEND line TO itab.
ENDDO.
SORT itab BY col2.
READ TABLE itab WITH KEY col2 = 16 INTO line BINARY SEARCH.
WRITE: 'SY-SUBRC =', sy-subrc.
Die Listenausgabe ist:
SY-SUBRC = 0
Eine Standard-Tabelle wird mit einer Liste von Quadratzahlen gefüllt und aufsteigend nach dem Feld COL2 sortiert. In der READ-Anweisung wird binär die Zeile der Tabelle gesucht und gefunden, in der das Feld COL2 den Wert 16 hat.