ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Interne Daten verarbeiten →  Interne Tabellen →  Verarbeitungsanweisungen für interne Tabellen → 

FIND IN TABLE itab

Kurzreferenz

Syntax

FIND [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF] pattern
  IN TABLE itab [table_range]
  [IN {CHARACTER|BYTE} MODE]
  [find_options]
.

Wirkung

Die interne Tabelle itab wird Zeile für Zeile nach den durch pattern bestimmten Zeichen- bzw. Bytefolgen durchsucht. Bei itab handelt es sich um eine funktionale Operandenposition.

itab muss eine Standardtabelle ohne sekundäre Tabellenschlüssel sein. Die Zeilen der Tabelle müssen je nach Zusatz CHARACTER bzw. BYTE MODE entweder zeichen- oder byteartig sein. Zeichen- oder Bytefolgen, die mehrere Tabellenzeilen überspannen, werden nicht gefunden.

Mit dem Zusatz table_range kann der Suchbereich auf der Tabelle eingeschränkt werden. Die sonstigen Zusätze haben für das Ersetzen in den einzelnen Tabellenzeilen im Wesentlichen die gleiche Bedeutung wie bei der Anweisung FIND für elementare Zeichen- bzw. Byteketten, wobei hier ein weiterer Zusatz MATCH LINE auch die Zeilennummer einer Fundstelle zurück gibt.

Die Suche wird beendet, wenn das Suchmuster zum ersten Mal bzw. wenn alle Suchmuster im Suchbereich gefunden wurden oder das Ende des Suchbereichs erreicht wird. Das Suchergebnis wird durch das Setzen von sy-subrc mitgeteilt.

Bei der Zeichenkettenverarbeitung werden bei Zeilentypen fester Länge die schließenden Leerzeichen berücksichtigt.

Hinweise

Systemfelder

sy-subrc Bedeutung
0 Das Suchmuster wurde mindestens einmal im Suchbereich gefunden.
4 Das Suchmuster wurde nicht im Suchbereich gefunden.

Die Werte von sy-tabix und sy-fdpos werden nicht verändert.

Beispiel

Einlesen eines Texts im ITF-Format in eine interne Tabelle und Suche nach der ersten Zeichenkette "ABAP" oder "XML". Die Positionen der Fundstelle werden in Variablen geschrieben. Der Zeilentyp der internen Tabelle ist zwar strukturiert, wird aber wie ein einziges Feld vom Typ c interpretiert.

DATA itf_tab TYPE tline_tab.
IF cl_abap_docu_itf=>get_docu( EXPORTING id = 'SD'
                                         langu = 'E'
                                         object = 'ABENABAP_XML'
                               IMPORTING itf = itf_tab ) = 0.

  FIND FIRST OCCURRENCE OF REGEX 'ABAP|XML'
       IN TABLE itf_tab
       RESPECTING CASE
       MATCH LINE DATA(mline)
       MATCH OFFSET DATA(moff)
       MATCH LENGTH DATA(mlen).

  IF sy-subrc = 0.
    cl_demo_output=>display( |{ mline }, { moff }, { mlen }| ).
  ENDIF.
ENDIF.

Ausnahmen

Behandelbare Ausnahmen

CX_SY_RANGE_OUT_OF_BOUNDS

CX_SY_TAB_RANGE_OUT_OF_BOUNDS

CX_SY_INVALID_REGEX



Weiterlesen
FIND IN TABLE - table_range
FIND IN TABLE - options