SAP NetWeaver AS ABAP Release 752, ©Copyright 2017 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation → ABAP - Referenz → Interne Daten verarbeiten → Interne Tabellen → Verarbeitungsanweisungen für interne Tabellen →
FIND IN TABLE itab
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.
Behandelbare Ausnahmen
CX_SY_RANGE_OUT_OF_BOUNDS
CX_SY_TAB_RANGE_OUT_OF_BOUNDS
CX_SY_INVALID_REGEX