ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Programmablaufsteuerung →  Ausdrücke und Funktionen für Bedingungen →  log_exp - Logische Ausdrücke →  rel_exp - Vergleichsausdrücke →  rel_exp - Vergleichsoperatoren → 

rel_exp - Vergleichsoperatoren für zeichenartige Datentypen

Die folgende Tabelle zeigt die Vergleichsoperatoren für Vergleiche zwischen zeichenartigen Operanden (einzelne Datenobjekte bzw. Rückgabewerte oder Zeichenkettenausdrücke) in Vergleichsausdrücken. Bei Operanden vom Typ string werden die schließenden Leerzeichen berücksichtigt. Wenn in der folgenden Tabelle nicht anders dokumentiert, werden bei Operanden vom Typ c, d, n und t die schließenden Leerzeichen nicht berücksichtigt.

operator Bedeutung
CO Contains Only: Wahr, wenn operand1 nur Zeichen aus operand2 enthält. Groß-/Kleinschreibung und schließende Leerzeichen beider Operanden werden berücksichtigt. Ist operand2 vom Typ string und initial, ist der relationale Ausdruck falsch, es sei denn, operand1 ist auch vom Typ string und initial. Wenn operand1 vom Typ string und initial ist, ist der relationale Ausdruck unabhängig von operand2 immer wahr. Ist der Vergleich falsch, enthält sy-fdpos den Offset des ersten Zeichens in operand1, das nicht in operand2 enthalten ist. Ist der Vergleich wahr, enthält sy-fdpos die Länge von operand1.
CN Contains Not Only; Wahr, wenn ein relationaler Ausdruck mit CO falsch ist, wenn operand1 also nicht nur Zeichen aus operand2 enthält. sy-fdpos wird wie bei CO gesetzt. Ist der Vergleich wahr, enthält sy-fdpos den Offset des ersten Zeichens in operand1, das nicht in operand2 enthalten ist. Ist der Vergleich falsch, enthält sy-fdpos die Länge von operand1.
CA Contains Any: Wahr, wenn operand1 mindestens ein Zeichen aus operand2 enthält. Groß-/Kleinschreibung und schließende Leerzeichen beider Operanden werden berücksichtigt. Ist operand1 oder operand2 vom Typ string und initial, ist der relationale Ausdruck immer falsch. Ist der Vergleich wahr, enthält sy-fdpos den Offset des ersten Zeichens in operand1, das auch in operand2 enthalten. Ist der Vergleich falsch, enthält sy-fdpos die Länge von operand1.
NA Contains Not Any: Wahr, wenn ein relationaler Ausdruck mit CA falsch ist, wenn operand1 also kein Zeichen aus operand2 enthält. Ist der Vergleich falsch, enthält sy-fdpos den Offset des ersten Zeichens in operand1, das auch in operand2 enthalten ist. Ist der Vergleich wahr, enthält sy-fdpos die Länge von operand1.
CS Contains String: Wahr, wenn der Inhalt von operand2 in operand1 enthalten ist. Groß-/Kleinschreibung wird nicht, schließende Leerzeichen des linken Operanden werden berücksichtigt. Ist operand1 vom Typ string und initial oder vom Typ c und enthält nur Leerzeichen, ist der relationale Ausdruck falsch, es sei denn, operand2 ist auch vom Typ string und initial oder vom Typ c und enthält nur Leerzeichen. Dann ist der relationale Ausdruck immer wahr. Ist der Vergleich wahr, enthält sy-fdpos den Offset von operand2 in operand1. Ist der Vergleich falsch, enthält sy-fdpos die Länge von operand1.
NS Contains No String: Wahr, wenn ein relationaler Ausdruck mit CS falsch ist, wenn operand1 also den Inhalt operand2 nicht enthält. Ist der Vergleich falsch, enthält sy-fdpos den Offset von operand2 in operand1. Ist der Vergleich wahr, enthält sy-fdpos Länge von operand1.
CP Covers Pattern: Wahr, wenn der Inhalt von operand1 zu dem Muster in operand2 passt. Für die Bildung des Musters operand2 können Maskenzeichen verwendet werden, wobei "*" eine beliebige Zeichenkette inklusive der leeren Zeichenkette und "+" ein beliebiges Zeichen darstellt. Groß-/Kleinschreibung wird nicht berücksichtigt. Schließende Leerzeichen des linken Operanden werden berücksichtigt. Ist der Vergleich wahr, enthält sy-fdpos den Offset von operand2 in operand1, wobei führende Maskenzeichen "*" in operand2 ignoriert werden, falls operand2 auch noch andere Zeichen enthält. Ist der Vergleich falsch enthält sy-fdpos die Länge von operand1. Durch Voranstellen des Fluchtsymbols "#" können in operand2 Zeichen für den genauen Vergleich markiert werden. Bei solcherart im Muster von operand2 markierten Zeichen wird die Groß-/Kleinschreibung berücksichtigt, werden Maskenzeichen und das Fluchtsymbol selbst nicht gesondert behandelt und schließende Leerzeichen werden relevant.
NP No Pattern: Wahr, wenn ein relationaler Ausdruck mit CP falsch ist, wenn operand1 also nicht zum Muster in operand2 passt. Ist der Vergleich falsch, enthält sy-fdpos den Offset von operand2 in operand1, wobei führende Maskenzeichen "*" in operand2 ignoriert werden, falls operand2 auch noch andere Zeichen enthält. Ist der Vergleich wahr, enthält sy-fdpos die Länge von operand1.

Hinweise

Beispiel

Suche nach HTML-Tags in einem Text mit Hilfe des Operators CP. Es wird der erste HTML-Tag "<i>" bei Offset 8 gefunden. Beachten Sie, dass die Angabe eines Suchmusters "<*>" nicht ausreichend wäre, da CP für Covers Pattern, nicht für Contains Pattern steht. Das Beispiel zeigt auch, dass die führenden Maskenzeichen "*" des Musters deshalb nicht in sy-fdpos berücksichtigt werden, damit die Fundstelle einer solchen Suche festgestellt werden kann.

DATA html TYPE string.

html = `This is <i>italic</i>!`.

IF html CP '*<*>*'.
  cl_demo_output=>display_text( |Found HTML tag at { sy-fdpos }| ).
ENDIF.

Beispiel

Ausgabe der ersten Position eines Buchstabens in einem Feld. Der Operator CS wird im Konditionaloperator COND verwendet, der den Inhalt des Systemfelds sy-fdpos zurückgibt.

cl_demo_output=>display( COND #( WHEN sy-abcde CS 'H' THEN sy-fdpos ) ).

Beispiel

Der folgende Vergleich ist unabhängig von der Eingabe immer wahr.

DATA(text) = `abcd1234`.
cl_demo_input=>request( CHANGING field = text ).

IF `` CO text.
  cl_demo_output=>display( 'true' ).
ENDIF.

Ausführbares Beispiel

Vergleichsoperatoren für zeichenartige Datentypen



Weiterlesen
Example Vergleichsoperatoren für zeichenartige Datentypen