Ansicht
Dokumentation
ABAPFIND_ITAB - FIND ITAB
Fill RESBD Structure from EBP Component Structure General Data in Customer MasterDiese Dokumentation steht unter dem Copyright der SAP AG.
FIND IN TABLE itab
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
- Ursache: Unzulässige Offset- oder Zeilenangabe im Zusatz SECTION OF.
Laufzeitfehler: REFI_WRONG_SECTION
- Ursache: Unzulässige Offset- oder Längenangabe im Zusatz FROM ... OFFSET ... TO OFFSET.
Laufzeitfehler: INVALID_TABLE_RANGE
- 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 )