Ansicht
Dokumentation

ABENPREDICATE_FUNCTIONS_STRINGS - PREDICATE FUNCTIONS STRINGS

ABENPREDICATE_FUNCTIONS_STRINGS - PREDICATE FUNCTIONS STRINGS

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

contains, contains_... - Prädikatfunktionen

Syntaxformen

1. ... contains( val = text sub|start|end = substring [case = case]
                [off = off] [len = len] [occ = occ] ) ...

2. ... contains( val = text regex = regex [case = case]
                [off = off] [len = len] [occ = occ] ) ...

3. ... contains_any_of( val = text sub|start|end = substring
                       [off = off] [len = len] [occ = occ] ) ...

4. ... contains_any_not_of( val = text sub|start|end = substring
                           [off = off] [len = len] [occ = occ] ) ...

Wirkung

Diese Prädikatfunktionen geben einen Wahrheitswert für eine Bedingung auf das Argument text zurück. Dabei ist text eine zeichenartige Ausdrucksposition, an der bei zeichenartigen Argumenten fester Länge die schließenden Leerzeichen nicht berücksichtigt werden.

  • Die Varianten der Funktion contains mit den Parametern sub, start oder end durchsuchen einen durch off und len definierten Suchbereich in text nach Übereinstimmungen mit der in substring angegebenen Unterfolge. Der Rückgabewert ist wahr, wenn mindestens die in occ angegebene Anzahl von Übereinstimmungen gefunden wurde. occ ist eine numerische Ausdrucksposition und der Standardwert ist 1. Die Groß- und Kleinschreibung wird bei der Suche standardmäßig beachtet, was aber mit dem Parameter case übersteuert werden kann. Für case, sub, off und len gilt das Gleiche wie bei den Suchfunktionen. Eine Übergabe von substring an start oder end bedeutet, dass die Übereinstimmungen direkt hintereinander am Anfang bzw. am Ende des Suchbereichs vorkommen müssen, während sie bei sub irgendwo im Suchbereich vorkommen können.
  • Die Variante der Funktion contains mit dem Parametern regex durchsucht einen durch off und len definierten Suchbereich in text nach Übereinstimmungen mit dem in regex angegebenen regulären Ausdruck. Der Rückgabewert ist wahr, wenn mindestens die in occ angegebene Anzahl von Übereinstimmungen gefunden wurde. regex ist eine zeichenartige Ausdrucksposition. Für die anderen Argumente gilt das gleiche wie die vorhergehende Variante der Funktion contains.
  • Die Funktion contains_any_off wirkt wie contains, es werden aber nicht die Vorkommen der gesamten Zeichenfolge in substring überprüft, sondern der einzelnen Zeichen von substring, wobei die Groß- und Kleinschreibung immer berücksichtigt wird. Der Rückgabewert ist wahr, wenn text mindestens die in occ angegebene Menge von Einzelzeichen enthält. Wenn start oder end angegeben sind, müssen die Zeichen in beliebiger Folge am Anfang oder Ende des Suchbereichs stehen, während sie bei sub beliebig über diesen verteilt sein können.
  • Die Funktion contains_any_not_off wirkt wie contains_any_off, es sind aber nicht die Zeichen aus substring erforderlich, sondern beliebige Zeichen, die nicht in substring vorhanden sind.

Hinweis

Die hier gezeigten Funktionen können wie folgt die Vergleichsoperatoren für zeichenartige Datentypen ersetzen:

Vergleichsoperator Prädikatfunktion
o1 CO o2 NOT contains_any_not_of( val = o1 sub = o2 )
o1 CN o2 contains_any_not_of( val = o1 sub = o2 )
o1 CA o2 contains_any_of( val = o1 sub = o2 )
o1 NA o2 NOT contains_any_of( val = o1 sub = o2 )
o1 CS o2 contains( val = to_upper( o1 ) sub = to_upper( o2 ) )
o1 NS o2 NOT contains( val = to_upper( o1 ) sub = to_upper( o2 ) )

Da bei den Vergleichsoperatoren CS und NS die Groß-/Kleinschreibung keine Rolle spielt, müssen die Argumente durch die Funktionen to_upper (oder auch to_lower) bearbeitet werden. Weiterhin ist zu beachten, dass die schließenden Leerzeichen von zeichenartigen Argumenten fester Länge in den Prädikatfunktionen nie berücksichtigt werden, während es für die Operanden der Vergleichsoperatoren Ausnahmen von dieser Regel gibt.

Die Operatoren CP und NP können durch die Prädikatfunktion contains und einem geeigneten regulären Ausdruck ersetzt werden. Dabei muss ebenfalls der Unterschied in der Behandlung der Groß-/Kleinschreibung beachtet werden wobei eine einfache Abbildung wie bei CS und NS aber nicht möglich, in der Regel aber auch nicht gewünscht ist.

Hinweis

Der reguläre Ausdruck in regex kann zwar syntaktisch korrekt, aber zu komplex für die Ausführung der Funktion sein, was zu einer behandelbaren Ausnahme der Klasse CX_SY_REGEX_TOO_COMPLEX führt. Siehe Ausnahmen in regulären Ausdrücken.

Beispiel

Im folgenden Coding-Abschnitt wird der IF-Block erreicht, da sowohl das erste als auch das letzte Zeichen in html nicht im Systemfeld sy-abcde vorkommen.

DATA html TYPE string.

html = '<body>Text</body>'.

IF contains_any_not_of( val = to_upper( html ) start = sy-abcde ) AND
   contains_any_not_of( val = to_upper( html ) end   = sy-abcde ).
  ...
ENDIF.





General Data in Customer Master   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8121 Date: 20240523 Time: 093308     sap01-206 ( 110 ms )