Show TOC

Binäre Suche bei Standard-TabellenLocate this document in the navigation structure

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.

Tipp

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.