Ansicht
Dokumentation
ABENABAP_SQL_EXPR_LOGEXP - ABAP SQL EXPR LOGEXP
General Data in Customer Master BAL Application Log DocumentationDiese Dokumentation steht unter dem Copyright der SAP AG.
- rel_exp für Ausdrücke
... ${ ${operand1 ${=$|EQ$|<>$|NE$|>$|GT$|<$|LT$|>=$|GE$|=$|LE$} operand2 $}
$| ${operand $[NOT$] BETWEEN operand1 AND operand2$}
$| ${operand1 $[NOT$] LIKE operand2 $[ESCAPE esc$]$}
$| ${operand IS $[NOT$] NULL$}
$| ${operand IS $[NOT$] INITIAL$} $} ...
Wirkung
Relationaler Ausdruck in einer Bedingung eines Ausdrucks in einer -Anweisung. Aus den hier gezeigten relationalen Ausdrücken können logische Ausdrücke sql_cond für folgende Bedingungen gebildet werden:
- ON-Bedingung bei der Definition einer CTE-Assoziation.
- Filterbedingung eines Pfadausdrucks
- WHEN-Bedingung einer komplexen Fallunterscheidung
- Startbedingung der Tabellenfunktion HIERARCHY.
- WHERE-, ON- und START WHERE-Bedingung in einem Hierarchieaggregatnavigator.
Die in Ausdrücken möglichen relationalen Ausdrücke sind eine Teilmenge der relationalen Ausdrücke für Anweisungen, ermöglichen aber auch SQL-Ausdrücke als Operanden der rechten Seite.
- operand1 =$|<>$|>$|$|>=$|= operand2
- Vergleich des Operanden operand1 auf der linken Seite mit einem operand2 auf der rechten Seite. Für die Vergleichsoperatoren gilt das Gleiche wie in einer Bedingung für Anweisungen. Die Operanden von Größenvergleichen können hier die folgenden Datentypen haben:
- Numerische Datentypen: Alle außer den Ersatztypen für dezimale Gleitpunktzahlen
- Zeichenartige Datentypen: CHAR, CLNT, LANG, CUKY, UNIT, NUMC
- Datums-, Zeit- und Zeitstempeltypen: DATN, DATS, TIMN, TIMS, UTCLONG
- Der Operand operand2 der rechten Seite kann ein beliebiger SQL-Ausdruck außer Aggregatausdrücken und Fensterausdrücken sein. Wenn ein Operand des Vergleichs den Null-Wert hat, ist das Ergebnis dieses Vergleichs unbekannt.
- operand $[NOT$] BETWEEN operand1 AND operand2
- Überprüfung einer Intervallzugehörigkeit. Der relationale Ausdruck wirkt wie die entsprechende Bedingung für Anweisungen. Der Zusatz NOT ist nicht möglich. Die Operanden können die gleichen Datentypen wie für Größenvergleiche haben. Für operand1 und operand2 können beliebige SQL-Ausdrücke außer Aggregatausdrücken und Fensterausdrücken angegeben werden. Wenn einer der Operanden den Null-Wert hat, ist das Ergebnis der Überprüfung unbekannt.
- operand1 $[NOT$] LIKE operand2 $[ESCAPE esc$]
- Musterabgleich. Der relationale Ausdruck wirkt wie die entsprechende Bedingung für Anweisungen. Der Zusatz NOT ist nicht möglich. Für die Operanden gilt ebenfalls das Gleiche wie bei der Bedingung für Anweisungen. Die Operanden müssen zeichenartig sein und auf der rechten Seite können nur Literale und Hostvariablen angegeben werden.
- operand IS $[NOT$] NULL
- Überprüfung auf den Null-Wert. Der relationale Ausdruck wirkt wie die entsprechende Bedingung für Anweisungen.
- operand IS $[NOT$] INITIAL
- Überprüfung auf den Initialwert des zugeordneten elementaren ABAP-Typs. Der relationale Ausdruck wirkt wie die entsprechende Bedingung für Anweisungen.
Die Operanden der linken Seite können beliebige SQL-Ausdrücke außer Aggregatausdrücken und Fensterausdrücken sein. Alle Spalten und Ausdrücke können mit Ausnahme von LIKE beliebige Dictionary-Typen außer ACCP, DF16_SCL (obsolet), DF34_SCL (obsolet), LCHR, LRAW, PREC, RAWSTRING, STRING und GEOM_EWKB haben. Einzeln angegebene Literale, Hostvariablen und Hostausdrücke werden als elementare SQL-Ausdrücke behandelt und können beliebige ABAP-Typen haben.
Die Datentypen der Operanden eines relationalen Ausdrucks müssen miteinander vergleichbar sein. Andernfalls kommt es bei der statischen Angabe zu einem Syntaxfehler und bei der dynamischen Angabe zu einer Ausnahme der Klasse CX_SY_DYNAMIC_OSQL_SEMANTICS. Anders als in Bedingungen für Anweisungen werden Operanden der Typen DATS und TIMS wie normale flache zeichenartige Operanden behandelt.
Wenn ein Ausdruck für eine Selektion verwendet wird, darf in einer SQL-Bedingung des Ausdrucks die Mandantenspalte einer mandantenabhängigen Datenquelle einer Query oder des Ziels einer schreibenden Anweisung wegen der impliziten Mandantenbehandlung nicht als Operand verwendet werden.
Hinweise
- Dass die möglichen relationalen Ausdrücke und deren Operanden nur eine Teilmenge der relationalen Ausdrücke für Anweisungen darstellen, liegt daran, dass ein Ausdruck im Wesentlichen unverändert an die Datenbank übergeben wird. Eine WHERE-Bedingung, HAVING- oder ON-Bedingung einer Anweisung wird dagegen bei bestimmten Konstrukten vor der Übergabe vom ABAP-Laufzeit-Framework bearbeitet, um plattformunabhängiges Verhalten zu erreichen.
- Bei der Angabe von Literalen, Hostvariablen und Hostausdrücken ist zu beachten, dass diese in Ausdrücken als elementare SQL-Ausdrücke verwendet werden und dass ihr ABAP-Typ gemäß der entsprechenden Tabellen auf einen Dictionary-Typ gemappt wird. Dieser Typ muss die Regeln der Vergleichbarkeit erfüllen. Dies ist ein Unterschied zu relationalen Ausdrücke für Anweisungen, bei denen der ABAP-Typ in der Regel in den passenden Dictionary-Typ konvertiert wird.
- Vor BETWEEN und LIKE kann derzeit kein Zusatz NOT angegeben werden. Statt dessen kann der Operator NOT vor dem gesamten Ausdruck verwendet werden.
- Eine Mandantenspalte kann nur dann noch als Operand verwendet werden, wenn die implizite Mandantenbehandlung mit dem Zusatz CLIENT SPECIFIED für die Query bzw. den Schreibzugriff abgeschaltet ist. Bei einer Filterbedingung ist das nicht möglich.
CPI1466 during Backup General Data in Customer Master
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 11429 Date: 20240523 Time: 183132 sap01-206 ( 120 ms )