Ansicht
Dokumentation

ABENCDS_F1_ARITHMETIC_EXPRESSION - CDS F1 ARITHMETIC EXPRESSION

ABENCDS_F1_ARITHMETIC_EXPRESSION - CDS F1 ARITHMETIC EXPRESSION

ABAP Short Reference   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- 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.:

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

  • Für eine Division zweier Zahlen vom Typ DEC kann die SQL-Funktion DIVISION verwendet werden.
  • 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 )