Show TOC

VergleichsoperationenLocate this document in the navigation structure

Definition

Mithilfe von Vergleichsoperationen legen Sie fest, wie das System den Vergleich zwischen einem eingehenden Wert, der als Kontextparameter an einen Ausdruck weitergegeben wurde, und einem vordefinierten Wert oder Wertebereich ausführen soll. Dieser eingehende Wert, der Testparameter, kann statt über einen Kontextparameter auch als Ergebnis eines verschachtelten Ausdrucks weitergegeben werden.

Verwendung

Vergleichsoperationen werden hauptsächlich verwendet, um innerhalb einer Geschäftsregel zwischen verschiedenen Verarbeitungszweigen zu unterscheiden. Beispielsweise dienen in einer Entscheidungstabelle die vordefinierten Werte in den Bedingungsspalten als Vergleichsparameter, mit dem ein eingehender Wert verglichen wird.

Struktur

Alle von BRFplus unterstützten Vergleichsoperationen werden verwendet, um ein eingehendes Element-Datenobjekt (den Testparameter) mit einem vordefinierten Wert oder Wertebereich (dem Vergleichsparameter) zu vergleichen. Die formale Beschreibung einer Vergleichsoperation lautet daher:

<Testparameter> <Vergleichsoperator> <Vergleichsparameter>

Beispiel

Sie möchten bestimmen, ob ein eingehender Wert innerhalb eines vordefinierten Wertebereichs liegt.

Testparameter: tp = 24

Vergleichsoperator: liegt zwischen

Vergleichsparameter: vp = [18..25]

Vergleich: tp liegt zwischen vp (also: "24 liegt zwischen [18..25]")

Ergebnis: wahr

Die oben aufgeführte formale Beschreibung ist auch für Operatoren gültig, die aus Sicht des Benutzers keinen Vergleichsparameter besitzen (ist initial und ist nicht initial). Die zu dieser Gruppe gehörenden Operatoren (Gruppe 3 in der folgenden Tabelle) vergleichen den Testparameter mit einem impliziten Vergleichsparameter, den das System intern ableitet. Daher ist es nicht notwendig (und nicht möglich), selbst einen Vergleichsparameter für diese Operationsarten anzugeben.

Operatorengruppen

Ob ein bestimmter Operator verwendet werden kann oder nicht, hängt davon ab, welche Parametertypen beteiligt sind. Um die Komplexität der möglichen Kombinationen von Operatoren und Parametertypen zu verringern, können die von BRFplus bereitgestellten Vergleichsoperatoren nach erlaubten Verwendungsmöglichkeiten gruppiert zusammengefasst werden. Für jede der unten aufgeführten Gruppen kann bestimmt werden, welche Parametertypen mit den jeweiligen Operatoren aus dieser Gruppe kombiniert werden können.

Hinweis

In diesem Abschnitt werden alle von BRFplus unterstützten Vergleichsoperatoren beschrieben. Ob alle diese Vergleichsoperatoren verwendet werden können, hängt allerdings von der Definition des Element-Datenobjekts ab. Dieses Verhalten wird unter der Registerkarte Eigenschaften des Datenobjekts von der Einstellung Erlaubte Vergleiche gesteuert. Weitere Informationen finden Sie unter Ein Element-Datenobjekt anlegen.

Gruppe

Beschreibung

Operatoren

Konstante

ID

1

Ordinalvergleiche

ist gleich

ist nicht gleich

ist kleiner als

ist kleiner oder gleich

ist größer als

ist größer oder gleich

liegt zwischen

liegt nicht zwischen

GC_OPTION_EQUAL

GC_OPTION_NOT_EQUAL

GC_OPTION_LESS

GC_OPTION_LESS_EQUAL

GC_OPTION_GREATER

GC_OPTION_GREATER_EQUAL

GC_OPTION_BETWEEN

GC_OPTION_NOT_BETWEEN

EQ

NE

LT

LE

GT

GE

BT

NB

2

String-Vergleiche

enthält irgendein/e/en

enthält nicht irgendein(e)

enthält nur

enthält nicht nur

enthält Zeichenfolge

enthält nicht Zeichenfolge

stimmt überein mit Muster

stimmt nicht überein mit Muster

beginnt mit Text

beginnt nicht mit

endet mit Text

endet nicht mit

GC_OPTION_CONTAINS_ANY

GC_OPTION_CONTAINS_NOT_ANY

GC_OPTION_CONTAINS_ONLY

GC_OPTION_CONTAINS_NOT_ONLY

GC_OPTION_CONTAINS_STRING

GC_OPTION_CONTAINS_NO_STRING

GC_OPTION_CONTAINS_PATTERN

GC_OPTION_NOT_CONTAINS_PATTERN

GC_OPTION_STARTS_WITH

GC_OPTION_NOT_STARTS_WITH

GC_OPTION_ENDS_WITH

GC_OPTION_NOT_ENDS_WITH

CA

NA

CO

CN

CS

NS

CP

NP

SW

US

EW

DE

3

Implizite Vergleiche

ist initial

ist nicht initial

ist gültig

ist ungültig

GC_OPTION_INITIAL

GC_OPTION_NOT_INITIAL

GC_OPTION_VALID

GC_OPTION_IS_NOT_VALID

I1

I2

IV

NV

4

Besondere Vergleiche

Währung ist gleich

Währung ist unterschiedlich

Einheit ist gleich

Einheit ist unterschiedlich

GC_OPTION_CURRENCY_EQUALS

GC_OPTION_CURRENCY_DIFFERS

GC_OPTION_UNIT_EQUALS

GC_OPTION_UNIT_DIFFERS

CE

CD

UE

UD

Hinweis

Die impliziten Vergleichsoperatoren "ist gültig" und "ist ungültig" (Gruppe 3) sind nur für die folgenden Element-Datenobjekte definiert:

  • Betrag

  • Menge

  • Zeitpunkt

Für den Betrag und die Menge prüft das System, ob die angegebene Währung oder Mengeneinheit in den zentralen Customizing-Tabellen des Backend-Systems verfügbar ist. Für Datenobjekte des Typs Zeitpunkt prüft das System, ob die angegebenen Datums- und Zeitwerte in ein gültiges Datum überführt werden können (beispielsweise nicht "31. April").

Die Operatoren "wird übergeben" und "wird nicht übergeben" (technische IDs S1, S2) werden nicht mehr unterstützt. Bereits vorhandene Objekte, die diese Operatoren verwenden, müssen daher angepasst werden.

Alle Operatoren werden intern durch Konstanten repräsentiert, die für die betroffenen Interfaces definiert sind (zum Beispiel IF_FDT_RANGE).

Die IDs der Operatoren aus der letzten Spalte der oberen Tabelle stellen die technischen Namen dar, die intern verwendet werden. Sie beziehen sich größtenteils auf die entsprechenden Vergleichsoperatoren, die in ABAP definiert sind. BRFplus gibt die Ausführung von Vergleichsoperationen technisch an die entsprechenden ABAP-Ausdrücke weiter. Aus diesem Grund ist das detaillierte Verarbeitungsverhalten von BRFplus-Parametern identisch mit den entsprechenden ABAP-Ausdrücken.

Datentypkombinationen für Vergleiche

Wie das System einen Vergleich durchführt, hängt vom Operator und dem Testparametertyp ab. In der folgenden Tabelle ist eine Übersicht über die verschiedenen Vergleichsansätze – zusammengefasst nach beteiligten Datentypen – aufgelistet:

Datentyp

Anmerkungen

Text

Alphanumerischer Vergleich von Werten. Um die Komplexität zu verringern, werden Textparameter intern entsprechend der ABAP-Anweisung CONVERT TEXT in eine sortierbare Byte-Folge konvertiert. Mithilfe dieser Normalisierung wird Problemen vorgebeugt, die beim Vergleich von Zeichen verschiedener Codepages auftreten. Allerdings kann dieses Vorgehen zu unerwarteten Ergebnissen führen.

Zahl

Numerischer Vergleich von Werten.

Betrag, Menge

Wenn die Währung oder Einheit der Parameter unterschiedlich ist, werden die Parameter zunächst intern in eine der beteiligten Währungen oder Einheiten konvertiert. Anschließend wird ein numerischer Vergleich der Werte durchgeführt.

Zeitpunkt

Datums- und Zeitwerte werden numerisch verglichen. Wenn die zu vergleichenden Werte unterschiedliche Untertypen aufweisen, werden nur die übereinstimmenden Teile beider Werte für den Vergleich herangezogen. Wenn Sie beispielsweise einen Zeitstempel mit Datum und Uhrzeit mit einem reinen Datum (ohne Uhrzeit) vergleichen möchten, wird die Uhrzeit des Zeitstempels ignoriert und es werden lediglich die Datumsangaben miteinander verglichen.

Boolesch

Überprüfung auf Gleichheit

Im Allgemeinen kann ein Vergleich vom System nur dann durchgeführt werden, wenn beide beteiligten Parameter denselben Typ aufweisen. Als Ausnahme hierzu unterstützt das System jedoch zusätzliche Vergleichsoperationen unter folgenden Bedingungen:

  • Ordinalvergleiche (Gruppe 1) können durchgeführt werden, wenn beide beteiligten Parameter in eine zulässige Zahl konvertierbar sind. In diesem Fall führt das System einen numerischen Vergleich durch. Andernfalls werden beide Parameter als Texte behandelt und es wird ein String-Vergleich durchgeführt.

  • String-Vergleiche (Gruppe 2) können mit Parametern verschiedener Typen durchgeführt werden. Hierzu wird vom System eine implizite Typkonvertierung vorgenommen, sodass beide Parameter als Texte behandelt werden können.

In den folgenden Tabellen sind die verschiedenen Kombinationsmöglichkeiten aufgelistet. Es wird hierbei entsprechend der Frage zusammengefasst, ob ein Vergleich überhaupt möglich ist (mit oder ohne eine vorherige Typkonvertierung) oder nicht. Die Tabellen beschränken sich dabei auf die Operatorgruppen 1 und 2, da bei Gruppe 3 ein Typenkonflikt per Definition unmöglich ist.

In der folgenden Tabelle sind alle Vergleichsoperationen dargestellt, die das System ohne implizite Konvertierungen durchführen kann:

Testparametertyp

Vergleichsparametertyp

Vergleichsoperator

Vergleichstyp

Zahl

Zahl

Gruppe 1

Numerisch

Text

Text

Gruppe 1

Text

Text

Text

Gruppe 2

Text

Betrag

Betrag

Gruppe 1

Betrag

Menge

Menge

Gruppe 1

Menge

Zeitpunkt

Zeitpunkt

Gruppe 1

Zeitpunkt

Boolesch

Boolesch

ist gleich, ist nicht gleich

Boolesch

In der folgenden Tabelle sind die Vergleichsoperationen aufgelistet, die das System nach der impliziten Typkonvertierung von mindestens einem der beteiligten Parameter durchführen kann:

Testparametertyp

Vergleichsparametertyp

Vergleichsoperator

Vergleichstyp

Kommentare

Zahl

Zahl

Gruppe 2

Text

Zahlen werden intern in Text konvertiert

Zahl

Text

Gruppe 1

Numerisch oder Text

1. Der Vergleichsparameter des Typs Text wird in eine Zahl konvertiert und ein numerischer Vergleich wird durchgeführt.

2. Ist dies nicht möglich, wird der Testparameter in einen Text konvertiert und es wird ein String-Vergleich durchgeführt.

Zahl

Text

Gruppe 2

Text

Testparameter wird in einen Text konvertiert

Text

Zahl

Gruppe 1

Numerisch oder Text

1. Der Testparameter des Typs Text wird in eine Zahl konvertiert und ein numerischer Vergleich wird durchgeführt.

2. Ist dies nicht möglich, wird der Vergleichsparameter in einen Text konvertiert und es wird ein String-Vergleich durchgeführt.

Text

Zahl

Gruppe 2

Text

Vergleichsparameter wird in einen Text konvertiert

Betrag

Zahl

Gruppe 2

Text

Beide Parameter werden in Texte konvertiert

Betrag

Text

Gruppe 2, Gruppe 4

Text

Testparameter wird in einen Text konvertiert

Menge

Zahl

Gruppe 2

Text

Beide Parameter werden in Texte konvertiert

Menge

Text

Gruppe 2, Gruppe 4

Text

Testparameter wird in einen Text konvertiert

Zeitpunkt

Zahl

Gruppe 2

Text

Beide Parameter werden in Texte konvertiert

Zeitpunkt

Text

Gruppe 2

Text

Testparameter wird in einen Text konvertiert

In der folgenden Tabelle sind alle Vergleichsoperationen dargestellt, die das System nicht durchführen kann:

Testparametertyp

Vergleichsparametertyp

Vergleichsoperator

Zahl

Betrag

Gruppe 1, Gruppe 2

Zahl

Menge

Gruppe 1, Gruppe 2

Zahl

Zeitpunkt

Gruppe 1, Gruppe 2

Zahl

Boolesch

Gruppe 1, Gruppe 2

Text

Betrag

Gruppe 1, Gruppe 2

Text

Menge

Gruppe 1, Gruppe 2

Text

Zeitpunkt

Gruppe 1, Gruppe 2

Text

Boolesch

Gruppe 1, Gruppe 2

Betrag

Betrag

Gruppe 2

Betrag

Zahl

Gruppe 1

Betrag

Text

Gruppe 1

Betrag

Menge

Gruppe 1, Gruppe 2

Betrag

Zeitpunkt

Gruppe 1, Gruppe 2

Betrag

Boolesch

Gruppe 1, Gruppe 2

Menge

Menge

Gruppe 2

Menge

Zahl

Gruppe 1

Menge

Text

Gruppe 1

Menge

Betrag

Gruppe 1, Gruppe 2

Menge

Zeitpunkt

Gruppe 1, Gruppe 2

Menge

Boolesch

Gruppe 1, Gruppe 2

Zeitpunkt

Zeitpunkt

Gruppe 2

Zeitpunkt

Zahl

Gruppe 1

Zeitpunkt

Text

Gruppe 1

Zeitpunkt

Betrag

Gruppe 1, Gruppe 2

Zeitpunkt

Menge

Gruppe 1, Gruppe 2

Zeitpunkt

Boolesch

Gruppe 1, Gruppe 2

Boolesch

Zahl

Gruppe 1, Gruppe 2

Boolesch

Text

Gruppe 1, Gruppe 2

Boolesch

Betrag

Gruppe 1, Gruppe 2

Boolesch

Menge

Gruppe 1, Gruppe 2

Boolesch

Zeitpunkt

Gruppe 1, Gruppe 2

Boolesch

Boolesch

Gruppe 1 (ist gleich und ist nicht gleich sind jedoch erlaubt), Gruppe 2

Weitere Informationen zu ausgewählten Vergleichsoperatoren

In der folgenden Tabelle sind einige zusätzliche Informationen zur genauen Funktionsweise von Vergleichsoperatoren aufgelistet. Es werden jedoch lediglich die Operatoren erwähnt, deren Verhalten nicht selbsterklärend ist.

Zusätzlich zu den detaillierten Informationen in der Tabelle gelten folgende Regeln:

  • Bei String-Vergleichen wird die Groß- und Kleinschreibung von der jeweiligen Einstellung des Wertebereich-Ausdrucks gesteuert, der als Vergleichsparameter verwendet wird.

  • Im Gegensatz dazu werden Mustervergleiche unabhängig von Groß- und Kleinschreibung durchgeführt.

  • Bei String-Vergleichen werden vorangehende und angehängte Leerstellen vor der Durchführung des Vergleichs vom Testparameter entfernt. Leerstellen innerhalb der Zeichenkette werden jedoch beibehalten.

  • Bei Ordinalvergleichen von Zeichenketten (beispielsweise ist kleiner als) wird die Groß- und Kleinschreibung nicht berücksichtigt. So wird der Vergleich 'a' ist kleiner als 'B' als wahr bewertet, obwohl 'a' im ASCII-Code einen höheren Wert als 'B' hat.

  • Im Gegensatz dazu werden Gleichheitsprüfungen (ist gleich) von Textparametern wie String-Vergleiche durchgeführt. Dies bedeutet, dass das System während der Auswertung die Einstellung der Groß- und Kleinschreibung berücksichtigt.

Vergleichsoperator

Kommentar

liegt zwischen

Gibt wahr zurück, wenn der Testparameterwert zwischen dem Mindest- und Maximalwert eines Wertebereichs liegt, einschließlich des Mindest- und Maximalwerts (also value >= low AND value <= high).

enthält irgendein/e/en

Gibt wahr zurück, wenn der Testparameter mindestens ein Zeichen enthält, das auch im Vergleichsparameter enthalten ist. Die Folge sowie die Häufigkeit des Vorkommens der entsprechenden Zeichen kann jedoch unterschiedlich sein.

enthält nur

Gibt wahr zurück, wenn der Testparameter ausschließlich Zeichen enthält, die auch im Vergleichsparameter enthalten sind. Die Folge sowie die Häufigkeit des Vorkommens der entsprechenden Zeichen kann jedoch unterschiedlich sein.

enthält Zeichenfolge

Gibt wahr zurück, wenn die Zeichenfolge aus dem Vergleichsparameter auch im Testparameter enthalten ist. Dabei muss die Reihenfolge der Zeichen in beiden Parametern identisch sein.

ist gleich

Gibt wahr zurück, wenn der Wert des Testparameters identisch mit dem Wert des Vergleichsparameters ist.

stimmt überein mit Muster

beginnt mit Text

endet mit Text

Gibt wahr zurück, wenn der eingegebene Testparameter mit dem Muster aus dem Vergleichsparameter übereinstimmt. Folgende Platzhalterzeichen werden unterstützt:

  • + – ersetzt genau ein Zeichen

  • * – ersetzt beliebig viele Zeichen

Beispiel

Platzhalter = '*':

Testparameter: tp = 'Hallo'

Vergleichsparameter: vp = 'Ha*o'

Vergleich: tp stimmt überein mit Muster vp

Ergebnis: wahr

Platzhalter = '+':

Testparameter: tp = 'Held'

Vergleichsparameter: vp = 'He+d'

Vergleich: tp stimmt überein mit Muster vp

Ergebnis: wahr

Weitere Informationen