Ansicht
Dokumentation
ABENCDS_F1_ARITHMETIC_EXPRESSION - CDS F1 ARITHMETIC EXPRESSION
ABAP Short Reference ABAP Short ReferenceDiese Dokumentation steht unter dem Copyright der SAP AG.
- arith_expr
... $[-$]operand1 $[+$|-$|*$|/ $[-$]operand2 $[+$|-$|*$|/ $[-$]operand3 ... $]$] ...
Wirkung
Arithmetischer Ausdruck in einer SELECT-Anweisung einer CDS-View. Ein arithmetischer Ausdruck berechnet über arithmetische Operatoren einen numerischen Wert aus numerischen Operanden. Die mögliche Operatoren sind:
Operator | Bedeutung |
+ | Addition der Operanden |
- | Subtraktion des rechten vom linken Operanden |
* | Multiplikation der Operanden |
/ | Division des linken durch den rechten Operanden |
Ein - vor einem Operanden multipliziert diesen mit -1. Der Datentyp der Operanden muss numerisch und auf einem der eingebauten Datentypen INT1, INT2, INT4, INT8, DEC, CURR, QUAN, DECFLOAT16, DECFLOAT34 oder FLTP beruhen. Angegeben werden können z.B.:
- Zahlenliterale ohne vorangestellte Domäne
- Numerische Felder einer Datenquelle data_source der aktuellen CDS-View
- Parameter mit numerischem Datentyp
- Pfadausdrücke, die ein numerisches Feld einer Datenquelle data_source bezeichnen
- eingebaute Funktionen, die einen numerischen Typ zurück geben.
- Casting-Ausdrücke, die einen numerischen Typ zurück geben.
Die Teilausdrücke eines arithmetischen Ausdrucks können mit runden Klammern (...) geklammert werden.
Die folgende Tabelle zeigt, welche Datentypen mit den Operatoren +, -, * verknüpft werden können und den Datentyp des Ergebnisses:
+, -, * | INT1 | INT2 | INT4 | INT8 | DEC | CURR | QUAN | DECFLOAT16 | DECFLOAT34 | FLTP |
INT1 | INT4 | INT4 | INT4 | INT8 | DEC | CURR | QUAN | DECFLOAT16 | DECFLOAT34 | - |
INT2 | INT4 | INT4 | INT4 | INT8 | DEC | CURR | QUAN | DECFLOAT16 | DECFLOAT34 | - |
INT4 | INT4 | INT4 | INT4 | INT8 | DEC | CURR | QUAN | DECFLOAT16 | DECFLOAT34 | - |
INT8 | INT8 | INT8 | INT8 | INT8 | DEC | CURR | QUAN | DECFLOAT16 | DECFLOAT34 | - |
DEC | DEC | DEC | DEC | DEC | DEC | CURR | QUAN | DECFLOAT16 | DECFLOAT34 | - |
CURR | CURR | CURR | CURR | CURR | CURR | CURR | DEC | DECFLOAT16 | DECFLOAT34 | - |
QUAN | QUAN | QUAN | QUAN | QUAN | QUAN | DEC | QUAN | DECFLOAT16 | DECFLOAT34 | - |
DECFLOAT16 | DECFLOAT16 | DECFLOAT16 | DECFLOAT16 | DECFLOAT16 | DECFLOAT16 | DECFLOAT16 | DECFLOAT16 | DECFLOAT16 | DECFLOAT34 | - |
DECFLOAT34 | DECFLOAT34 | DECFLOAT34 | DECFLOAT34 | DECFLOAT34 | DECFLOAT34 | DECFLOAT34 | DECFLOAT34 | DECFLOAT34 | DECFLOAT34 | - |
FLTP | - | - | - | - | - | - | - | - | - | FLTP |
Die folgende Tabelle zeigt, welche Datentypen mit dem Operator / verknüpft werden können und den Datentyp des Ergebnisses:
/ | DECFLOAT16 | DECFLOAT34 | FLTP |
DECFLOAT16 | DECFLOAT16 | DECFLOAT34 | - |
DECFLOAT34 | DECFLOAT34 | DECFLOAT34 | - |
FLTP | - | - | FLTP |
Es gelten folgende Besonderheiten
- Wenn ein Ausdruck einen Operanden vom Typ DEC, CURR oder QUAN enthält, handelt es sich um einen Dezimalausdruck. In diesem Fall, stellt die Syntaxprüfung sicher, dass das Ergebnis jeder Operation im Wertebereich des Typs DEC der Länge 31 mit maximal 14 Nachkommastellen ist. Wenn Operanden angegeben sind, die zu anderen Werten führen könnten, kommt es zu einem Syntaxfehler.
- Wenn ein Ausdruck einen Operanden vom Typ DECFLOAT16 oder DECFLOAT34 hat, handelt es sich um einen dezimalen Gleitpunktausdruck.
- Wenn ein Ausdruck einen Operanden vom Typ FLTP hat, handelt es sich um einen binären Gleitpunktausdruck, in dem alle Operanden vom FLTP sein müssen.
- Bei einer Division mit dem Operator / muss es sich um einen Gleitpunktausdruck handeln, d.h. die Operanden müssen vom Typ DECFLOAT16, DECFLOAT34 FLTP oder numerische Literale mit Nachkommastellen sein und der rechte Operand darf nicht den Wert 0 haben.
Arithmetische Ausdrücke können als Elemente einer SELECT-Liste verwendet werden, wo sie einen mit AS definierten alternativen Elementnamen benötigen.
Hinweise
- Um Operanden in passende Typen zu konvertieren können CAST-Ausdrücke verwendet werden. Um insbesondere Operanden vom Typ FLTP in gepackte Zahlen zu konvertieren, kann die eingebaute Konvertierungsfunktion FLTP_TO_DEC verwendet werden.
Beispiel
SELECT-Liste einer CDS-View mit arithmetischen Ausdrücken.
-
@AbapCatalog.sqlViewName: 'SALES_ORDER_VW'
define view sales_order as
select from snwd_so
association [1..*] to snwd_so_i as _item
on snwd_so.node_key = _item.parent_key
{ key snwd_so.node_key,
gross_amount,
gross_amount - tax_amount as pre_tax_amount,
cast(gross_amount as abap.fltp)
+ (cast( -gross_amount as abap.fltp) * 0.03)
as reduced_amount,
cast(gross_amount as abap.fltp) * 0.03 as overall_savings,
_item.so_item_pos as item_position,
_item.gross_amount as item_gross_amount,
cast(_item.gross_amount as abap.fltp) * 0.97 as item_savings
}
ROGBILLS - Synchronize billing plans General Material Data
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 14783 Date: 20240523 Time: 173122 sap01-206 ( 114 ms )