ABAPFIND_PATTERN - FIND PATTERN
SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up RFUMSV00 - Advance Return for Tax on Sales/PurchasesDiese Dokumentation steht unter dem Copyright der SAP AG.
FIND - pattern
Syntax
... {[SUBSTRING] substring} | {REGEX regex} ... .
Varianten:
1. ... [SUBSTRING] substring.
2. ... REGEX regex.
Wirkung
Definition eines Suchmusters für die Anweisungen FINDund FIND IN TABLE.Es kann entweder nach einer Unterfolge substring oder nach einem regulären Ausdruck regex gesucht werden.
Hinweis
Die Anweisungen REPLACEund REPLACE IN TABLE verwenden das gleiche Suchmuster.
Variante 1
... [SUBSTRING] substring.
Wirkung
In dieser Variante wird nach dem exakten Vorkommen einer in einem zeichen- bzw. byteartigen Operanden substring angegebenen Unterfolge gesucht. Bei substring handelt es sich um einezeichenartige Ausdrucksposition.Die Angabe des Wortes SUBSTRING ist optional.
Wenn substring entweder ein leerer String ist oder vom Typ c, d, n odert und nur Leerzeichen enthält, wird eine leere Unterfolge gesucht. Dies ist nur beim Suchennach dem ersten Vorkommen möglich und die leere Unterfolge wird immer vor dem ersten Zeichenbzw. Byte und gefunden. Bei der Zeichenkettenverarbeitung werden bei Datenobjekten substring fester Länge die schließenden Leerzeichen nicht berücksichtigt.
Hinweis
Sollen schließende Leerzeichen in der Unterfolge berücksichtigt werden, muss substring vom Datentyp string sein.
Beispiel
Suche sämtlicher Vorkommen der Folge "now" in einem Textstringliteral. Die Offsets 11 und 24 der beiden Fundstellen werden ausgegeben.
DATA: patt TYPE string VALUE `now`,
text TYPE string,
result_tab TYPE match_result_tab.
FIELD-SYMBOLS <match> LIKE LINE OF result_tab.
FIND ALL OCCURRENCES OF patt IN
`Everybody knows this is nowhere`
RESULTS result_tab.
LOOP AT result_tab ASSIGNING <match>.
WRITE: / <match>-offset, <match>-length.
ENDLOOP.
Beispiel
Suche sämtlicher Vorkommen der Folge "now" in einem Textstringliteral mit Hilfe einer WHILE-Schleife.Nach jeder erfolgreichen Suche wird der Suchbereich neu hinter der Fundstelle definiert. Auf diese Art konnten auch vor Release 7.0 alle Vorkommen des Suchmusters gefunden werden.
DATA: patt TYPE string VALUE `now`,
text TYPE string,
off TYPE i,
moff TYPE i,
mlen TYPE i.
off = 0.
WHILE sy-subrc = 0.
FIND patt IN SECTION OFFSET off OF
`Everybody knows this is nowhere`
MATCH OFFSET moff
MATCH LENGTH mlen.
IF sy-subrc = 0.
WRITE / moff.
off = moff + mlen.
ENDIF.
ENDWHILE.
Variante 2
... REGEX regex.
Wirkung
In dieser Variante wird nach einer Übereinstimmung mit einem in regex angegebenen regulärenAusdruck gesucht. Für regex kann entweder ein zeichenartiger Operand, der bei Ausführung der Anweisung einengültigen regulären Ausdruck enthält, oder eine Objektreferenzvariable, die auf eine Instanz der KlasseCL_ABAP_REGEX zeigt, angegeben werden. Bei regex handelt es sich um einezeichenartige Ausdrucksposition
Bei der Suche nach einem regulären Ausdruck können spezielleSuchmuster angegebenwerden, die u.a. Vorausschau-Bedingungen erlauben. Die Fundstellen werden nach der "leftmost-longest"-Regelermittelt. Unter allen möglichen Übereinstimmungen zwischen regulärem Ausdruckund zu durchsuchender Zeichenfolge wird die am weitesten links beginnende Unterfolge gewählt.Gibt es mehrere Übereinstimmungen an dieser Position, so wird die längste dieser Unterfolgen gewählt.
Eine leere Zeichenfolge in regex ist kein gültiger regulärer Ausdruck und führtzu einer Ausnahme. Eine leere Zeichenfolge liegt vor, wenn regex entweder ein leerer String ist oder vom Typ c, d, n oder t und nur Leerzeichen enthält.
Hinweise
- Es gibt nicht-leere reguläre Ausdrücke wie a*, mit denen nach leeren Zeichenfolgengesucht wird. Dies ist bei der Suche nach dem ersten und nach allen Vorkommen möglich. Die entsprechendenleeren Unterfolgen werden vor dem ersten Zeichen, zwischen allen Zeichen und hinter dem letzten Zeichen des Suchbereichs gefunden. Eine solche Suche ist immer erfolgreich.
- Ein regulärer Ausdruck kann zwar syntaktisch korrekt, aber zu komplex für die Ausführung der Anweisung FIND sein, was zu einer behandelbaren Ausnahme der KlasseCX_SY_REGEX_TOO_COMPLEX führt. SieheAusnahmen in regulären Ausdrücken.
Beispiel
Die folgende Suche findet die Unterfolge 'ababb' ab Offset 3. Die ebenfalls übereinstimmende Unterfolge 'babboo' ab Offset 4 wird nach der "leftmost-longest"-Regel nicht gefunden.
DATA: moff TYPE i,
mlen TYPE i.
FIND REGEX 'a.|[ab]+|b.*' IN 'oooababboo'
MATCH OFFSET moff
MATCH LENGTH mlen.
RFUMSV00 - Advance Return for Tax on Sales/Purchases General Data in Customer Master
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 7584 Date: 20120526 Time: 200855 triton ( 255 ms )






