Ansicht
Dokumentation

ABAPFIND_ITAB - FIND ITAB

ABAPFIND_ITAB - FIND ITAB

Fill RESBD Structure from EBP Component Structure   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

FIND IN TABLE itab

Kurzreferenz



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

Wirkung

Die interne Tabelle itab wird zeilenweise 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.

Ist die interne Tabelle leer, ist eine Suche nie erfolgreich und sy-subrc wird mit einer Ausnahme auf 4 gesetzt: Eine Suche nach einem obsoleten regulären POSIX-Ausdruck der mit einer leeren Zeichenkette übereinstimmt setzt sy-subrc auf 0 und verhält sich, indem 1 für MATCH LINE und 0 für MATCH OFFSET und MATCH LENGTH zurückgegeben wird, als würde die interne Tabelle eine leere erste Zeile enthalten.

Hinweise

  • Tabellen mit strukturierte Zeilentypen können mit FIND IN TABLE nach Zeichenketten durchsucht werden, wenn die Struktur nur flache zeichenartige Komponenten enthält. Jede Zeile wird dann wie ein Feld vom Typ c behandelt.
  • Eine Suche mit FIND IN TABLE ist performanter, als mit LOOP eine Schleife auszuführen und mit FIND in den einzelnen Zeilen zu suchen.
  • Für eine zeilenübergreifende Suche können die Zeilen mit der Verkettungsfunktion concat_lines_of oder der Anweisung CONCATENATE LINES OF in einen String überführt werden. Eine korrekte Behandlung von schließenden Leerzeichen muss gewährleistet sein.

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.

Ausnahmen

Behandelbare Ausnahmen

CX_SY_RANGE_OUT_OF_BOUNDS

  • Ursache: Unzulässige Offset- oder Zeilenangabe im Zusatz SECTION OF.
    Laufzeitfehler: REFI_WRONG_SECTION

CX_SY_TAB_RANGE_OUT_OF_BOUNDS

  • Ursache: Unzulässige Offset- oder Längenangabe im Zusatz FROM ... OFFSET ... TO OFFSET.
    Laufzeitfehler: INVALID_TABLE_RANGE

CX_SY_INVALID_REGEX

  • Ursache: Unzulässiger Ausdruck hinter dem Zusatz PCRE$|REGEX.
    Laufzeitfehler: INVALID_REGEX






SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7070 Date: 20240328 Time: 154519     sap01-206 ( 85 ms )