Ansicht
Dokumentation

ABENCDS_COND_EXPR_TYPES_V2 - CDS COND EXPR TYPES V2

ABENCDS_COND_EXPR_TYPES_V2 - CDS COND EXPR TYPES V2

BAL Application Log Documentation   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- CDS-View-Entität, cds_cond, Vergleichbare Typen

Die folgenden Tabellen zeigen, welche eingebauten Datentypen des ABAP Dictionary in einer Bedingung einer CDS-View-Entität miteinander verglichen werden können.

Vergleiche mit Feldern von Datenquellen

Die folgende Tabelle zeigt die möglichen Kombinationen von Feldern einer Datenquelle data_source auf der linken Seite (lhs) mit Feldern einer Datenquelle auf der rechten Seite (rhs) von Vergleichen.

lhs/rhs INT1 INT2 INT4 INT8 DEC CURR QUAN DECFLOAT16 DECFLOAT34 FLTP CHAR SSTRING NUMC CLNT LANG DATS TIMS DATN TIMN UTCLONG ACCP UNIT CUKY RAW
INT1 x x x x x - a x x x - - - - - - - - - - - - - -
INT2 x x x x x - a x x x - - - - - - - - - - - - - -
INT4 x x x x x - a x x x - - - - - - - - - - - - - -
INT8 x x x x x - a x x x - - - - - - - - - - - - - -
DEC x x x x x - a x x x - - - - - - - - - - - - - -
CURR - - - - - d - - - - - - - - - - - - - - - - - -
QUAN a a a - a - a a a a - - - - - - - - - - - - - -
DECFLOAT16 x x x x x - a x x x - - - - - - - - - - - - - -
DECFLOAT34 x x x x x - a x x x - - - - - - - - - - - - - -
FLTP x x x x x - a x x x - - - - - - - - - - - - - -
CHAR - - - - - - - - - - x x m l x x x - - - x x x -
SSTRING - - - - - - - - - - x x - - x - - - - - x x x -
NUMC - - - - - - - - - - m - l l - l l - - - - - - -
CLNT - - - - - - - - - - l - l x - - - - - - - - - -
LANG - - - - - - - - - - x x - - x - - - - - - - - -
DATS - - - - - - - - - - x - l - - x - - - - - - - -
TIMS - - - - - - - - - - x - l - - - x - - - - - - -
DATN - - - - - - - - - - - - - - - - - x - - - - - -
TIMN - - - - - - - - - - - - - - - - - - x - - - - -
UTCLONG - - - - - - - - - - - - - - - - - - - x - - - -
ACCP - - - - - - - - - - x x - - - - - - - - x - - -
UNIT - - - - - - - - - - x x - - - - - - - - - x - -
CUKY - - - - - - - - - - x x - - - - - - - - - - x -
RAW - - - - - - - - - - - - - - - - - - - - - - - l

  • Bei Kombinationen mit "x" gibt es keine Einschränkungen.
  • Bei Kombinationen mit "l" müssen die Längen der verglichenen Spalten übereinstimmen.
  • Bei Kombinationen mit "m" ist die Länge relevant: das Feld von Typ NUMC kann die gleichen Längen oder weniger Zeichen als das Feld von Typ CHAR. Falls das Feld von Typ NUMC länger als das Feld von Typ CHAR ist, kommt es zu einem Syntaxfehler.
  • Bei Kombinationen mit "d" muss die Anzahl der Nachkommastellen genau übereinstimmen.
  • Um Längenanforderungen zu vermeiden, kann ein Cast von Operanden vom Datentyp CURR auf den Datentyp DECFLOAT34 über die Konvertierungsfunktion CURR_TO_DECFLOAT_AMOUNT durchgeführt werden.

  • Mit der Konvertierungsfunktion GET_NUMERIC_VALUE können Mengenfelder in normale Felder vom Datentyp DECFLOAT34 verwandelt werden.

Vergleiche mit Parametern

Die folgende Tabelle zeigt die möglichen Kombinationen von Feldern einer Datenquelle auf der linken Seite (lhs) mit Parametern auf der rechten Seite (rhs) von Vergleichen.

lhs/rhs INT1 INT2 INT4 INT8 DEC CURR QUAN DECFLOAT16 DECFLOAT34 FLTP CHAR SSTRING NUMC CLNT LANG DATS TIMS DATN TIMN UTCLONG ACCP UNIT CUKY RAW
INT1 x x x x x - x x x x - - - - - - - - - - - - - -
INT2 x x x x x - x x x x - - - - - - - - - - - - - -
INT4 x x x x x - x x x x - - - - - - - - - - - - - -
INT8 x x x x x - x x x x - - - - - - - - - - - - - -
DEC x x x x x - x x x x - - - - - - - - - - - - - -
CURR - - - - - d - - - - - - - - - - - - - - - - - -
QUAN - - - - - - x - - - - - - - - - - - - - - - - -
DECFLOAT16 x x x x x - x x x x - - - - - - - - - - - - - -
DECFLOAT34 x x x x x - x x x x - - - - - - - - - - - - - -
FLTP x x x x x - x x x x - - - - - - - - - - - - - -
CHAR - - - - - - - - - - x x m l x x x - - - - x x -
SSTRING - - - - - - - - - - x x - - x - - - - - - x x -
NUMC - - - - - - - - - - m - l l - l l - - - - - - -
CLNT - - - - - - - - - - l - l x - - - - - - - - - -
LANG - - - - - - - - - - x x - - x - - - - - - - - -
DATS - - - - - - - - - - x - l - - x - - - - - - - -
TIMS - - - - - - - - - - x - l - - - x - - - - - - -
DATN - - - - - - - - - - - - - - - - - x - - - - - -
TIMN - - - - - - - - - - - - - - - - - - x - - - - -
UTCLONG - - - - - - - - - - - - - - - - - - - x - - - -
ACCP - - - - - - - - - - x x - - - - - - - - - - - -
UNIT - - - - - - - - - - x x - - - - - - - - - x - -
CUKY - - - - - - - - - - x x - - - -   - - -- - - x -
RAW - - - - - - - - - - - - - - - - - - - - - - - l

  • Bei Kombinationen mit "x" gibt es keine Einschränkungen.
  • Bei Kombinationen mit "l" müssen die Längen der verglichenen Operanden übereinstimmen.
  • Bei Kombinationen mit "m“ ist die Länge relevant: das Feld von Typ NUMC kann die gleichen Längen oder weniger Zeichen als das Feld von Typ CHAR. Falls das Feld von Typ NUMC länger als das Feld von Typ CHAR ist, kommt es zu einem Syntaxfehler.
  • Bei Kombinationen mit "d" muss die Anzahl der Nachkommastellen genau übereinstimmen.
  • Um diese Längenanforderung zu vermeiden, kann ein Cast von Operanden vom Datentyp CURR auf den Datentyp DECFLOAT34 über die Konvertierungsfunktion CURR_TO_DECFLOAT_AMOUNT durchgeführt werden.

Vergleiche mit Literalen

Die folgende Tabelle zeigt die möglichen Kombinationen von Feldern einer Datenquelle auf der linken Seite (lhs) mit Literalen auf der rechten Seite (rhs) von Vergleichen. Die Literale können typisiert oder untypisiert sein. Es wird empfohlen, nur typisierte Literale zu verwenden, da sie mehr Datentypen anbieten. Mit typisierten Literalen sind die in der Tabelle aufgeführten Datentypen möglich.

lhs/rhs INT1 INT2 INT4 INT8 DEC CURR QUAN FLTP CHAR NUMC RAW DATS TIMS DATN TIMN UTCL DECFLOAT16 DECFLOAT34
INT1 y y y y y - y y - - - - - - - - y y
INT2 x y y y y - y y - - - - - - - - y y
INT4 x x y y y - y y - - - - - - - - y y
INT8 x x x y y - y y - - - - - - - - y y
DEC x x x x d - d d - - - - - - - - m m
CURR m m m m d d d d - - - - - - - - m m
QUAN m m m m d - d d - - - - - - - - m m
DECFLOAT16 x x x x x - x x - - - - - - - - x x
DECFLOAT34 x x x x x - x x - - - - - - - - x x
FLTP x x x x x - x x - - - - - - - - x x
CHAR - - - - - - - - m m - - - - - - - -
SSTRING - - - - - - - - m - - - - - - - - -
NUMC - - - - - - - - l l - - - - - - - -
CLNT - - - - - - - - l l - - - - - - - -
LANG - - - - - - - - l l - - - - - - - -
DATS - - - - - - - - - l - x - - - - - -
TIMS - - - - - - - - - l - - x - - - - -
DATN - - - - - - - - - - - - - x - - - -
TIMN - - - - - - - - - - - - - - x - - -
UTCL - - - - - - - - - - - - - - - x - -
ACCP - - - - - - - - - l - - - - - - - -
UNIT - - - - - - - - m - - - - - - - - -
CUKY - - - - - - - - m - - - - - - - - -
RAW - - - - - - - - - - l - - - - - - -

  • Bei Kombinationen mit "x" gibt es keine Einschränkungen.
  • Für Kombinationen mit "y" muss der Literalwert innerhalb des Wertebereichs des jeweiligen Typs sein. Das bedeutet:
  • Für einen Vergleich mit INT1 muss der Literalwert zwischen 0 und 255 sein.

  • Für einen Vergleich mit INT2 muss der Literalwert zwischen -32.768 und +32.767 sein.

  • Für einen Vergleich mit INT4 muss der Literalwert zwischen -2.147.483.648 und +2.147.483.647 sein.

  • Für einen Vergleich mit INT8 muss der Literalwert zwischen -9.223.372.036.854.775.808 und +9.223.372.036.854.775.807 sein.

  • Bei Kombinationen mit "m" darf die Länge des Literals nicht größer als die der Spalte sein
  • Bei Kombinationen mit "d" dürfen Länge des Literals und Anzahl der Nachkommastellen nicht größer als die der Spalte sein
  • Bei Kombinationen mit "l" muss die Länge des Literals gleich der Länge der Spalte sein.
  • Wenn das Literal auf der rechten Seite (rhs) vom Datentyp CURR ist, muss es genau zwei Nachkommastellen haben. Da die Anzahl Nachkommastellen bei rhs und lhs genau übereinstimmen müssen, muss lhs auch genau zwei Nachkommastellen haben. Mit den Konvertierungsfunktionen CURR_TO_DECFLOAT_AMOUNT und GET_NUMERIC_VALUE kann diese Längenanforderung umgangen werden.

Vergleiche mit CDS-Betragsfeldern und CDS-Mengenfeldern

Wenn einer der Operanden lhs oder rhs eines Vergleiches ein CDS-Betragsfeld, ein CDS-Mengenfeld oder eine berechnete CDS-Menge ist, gelten spezielle Regeln:

  • Die beiden Operanden lhs und rhs müssen denselben Referenztyp besitzen. Sie müssen beide entweder Beträge, Mengen oder berechnete Mengen sein. Ein Vergleich von Operanden mit Referenzen unterschiedlicher Typen (Währungsschlüssel, Einheitsschlüssel, oder berechnete Einheit) führt zu einer Warnung der Syntaxprüfung.
  • Ein Operand vom Typ CURR darf nur mit einem anderen Operand vom Typ CURR verglichen werden. Die Anzahl Nachkommastellen beider Operanden muss genau übereinstimmen.
  • Wenn lhs vom Datentyp CURR ist und rhs als Literal angegeben wird, sind folgende Datentypen für rhs möglich: INT1, INT2, INT4, INT8, DEC, CURR, QUAN, FLTP, DECFLOAT16, DECFLOAT34.

  • Mit zwei Konvertierungsfunktionen können Einschränkungen umgangen werden:

In der ON-Bedingung einer CDS-Assoziation stehen diese beiden Konvertierungsfunktionen nicht zur Verfügung, da Funktionen in der ON-Bedingung einer CDS-Assoziation nicht unterstützt werden.

In der folgenden Tabelle werden die möglichen Kombinationen von Operanden in Vergleichen gezeigt. Zahl bezieht sich auf einen Operand eines numerischen Datentyps. Der Operand besitzt keine Referenzannotation und wird daher nicht als Betrags- der Mengenfeld interpretiert.

Operandentyp Kommentar
Betrag, Zahl Warnung der Syntaxprüfung \lbr : Falls Zahl als Literal angegeben wird, kommt es zu keiner Warnung der Syntaxprüfung.
Betrag, Betrag OK Elemente vom Datentyp CURR müssen genau dieselbe Anzahl Nachkommastellen haben.
Menge, Zahl Warnung der Syntaxprüfung \lbr Falls Zahl als Literal angegeben wird, kommt es zu keiner Warnung der Syntaxprüfung.
Menge, Menge OK
Betrag, Menge Warnung der Syntaxprüfung
Betrag, berechnete Menge Warnung der Syntaxprüfung
Menge, berechnete Menge Warnung der Syntaxprüfung
berechnete Menge, Zahl Warnung der Syntaxprüfung \lbr Falls Zahl als Literal angegeben wird, kommt es zu keiner Warnung der Syntaxprüfung.
berechnete Menge, berechnete Menge OK

Ungewollte Vergleiche von Operanden mit Referenzen unterschiedlicher Typen führen zu einer Warnung der Syntaxprüfung. Ein Fehler der Syntaxprüfung für das Garantieren der Abwärtskompatibilität gibt es nicht.

Die Ausnahme, dass Beträge, Mengen und berechnete Mengen mit einer als Literal angegebenen Zahl verglichen werden dürfen sorgt für die Abwärtskompatibilität.






Fill RESBD Structure from EBP Component Structure   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 76083 Date: 20240523 Time: 152748     sap01-206 ( 477 ms )