Anfang des Inhaltsbereichs

Binäre Suche bei Standard-Tabellen Dokument im Navigationsbaum lokalisieren

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, 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.

Beispiel

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.

Ende des Inhaltsbereichs