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
BINARY SEARCH.
Voraussetzung ist, dass 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.