Ansicht
Dokumentation

ABENDDIC_DECIMAL_FLOATING_POINT - DDIC DECIMAL FLOATING POINT

ABENDDIC_DECIMAL_FLOATING_POINT - DDIC DECIMAL FLOATING POINT

General Material Data   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Dezimale Gleitpunktzahlen

In dezimalen Gleitpunktzahlen werden je nach Datentyp maximal 16 oder 34 Stellen in der Mantisse exakt wiedergegeben.

Behandlung im ABAP Dictionary

Im ABAP Dictionary stehen folgende Datentypen für dezimale Gleitpunktzahlen zur Verfügung.

Dezimale Gleitpunkttypen

Die folgenden eingebauten Datentypen des ABAP Dictionary repräsentieren echte Gleitpunkttypen einer Datenbank:

Sie können uneingeschränkt als numerische Datentypen in entsprechenden Ausdrücken und Funktionen verwendet werden. Sie werden derzeit nur auf einer SAP-HANA-Datenbank unterstützt.

Ersatztypen

Die folgenden eingebauten Datentypen des ABAP Dictionary dienen als Ersatz für echte dezimale Gleitpunkttypen:

Auf Datenbanksystemen, die keine dezimalen Gleitpunkttypen unterstützen, können diese Typen als Ersatz verwendet werden. Sie dienen im Wesentlichen der Ablage von dezimalen Gleitpunktzahlen aus ABAP-Programmen, können aber nur eingeschränkt als numerische Datentypen in entsprechenden Ausdrücken und Funktionen verwendet werden:

  • DF16_DEC und DF34_DEC
In Datenbankfeldern dieses Typs werden dezimale Gleitpunktzahlen wie eine gepackte Zahl (Format DEC) abgelegt. Die Länge und die Anzahl der Dezimalstellen müssen bei der Definition eines Datentyps im ABAP Dictionary angegeben werden. Für diesen Typ können auf der Datenbank eingeschränkte Operationen ausgeführt werden:

  • In den Aggregatfunktionen außer STRING_AGG können Spalten aber keine SQL-Ausdrücke dieser Typen als Operanden verwendet werden.

  • Datenbankfelder dieser Typen können in Native SQL oder AMDP bearbeitet werden.

  • Beim Schreiben in die Datenbank wird implizit auf die Anzahl der Dezimalstellen gerundet und es kann zu Überläufen kommen.

  • DF16_RAW und DF34_RAW
In Datenbankfeldern dieses Typs werden dezimale Gleitpunktzahlen binär (im Format RAW) abgelegt. Die Länge ist auf 16 bzw. 34 Stellen festgelegt. Werte können sortiert, verglichen und in Indizes verwendet werden. Für diesen Typ können auf der Datenbank keine Berechnungen ausgeführt werden. Da es sich um ein SAP-spezifisches Format handelt, können entsprechende Felder auch nicht in Native SQL oder AMDP bearbeitet werden. Beim Schreiben in die Datenbank geht die Skalierung verloren.

Hinweise

  • Wenn möglich sollten die Typen DECFLOAT16 und DECFLOAT34 verwendet werden.
  • Falls die Arbeit mit Ersatztypen noch notwendig ist, bestimmt der Anwendungsfall den zu verwendenden Typ:
  • Mit den Typen DF16_DEC und DF34_DEC kann zwar auf der Datenbank gerechnet werden, dafür ist ihr Wertebereich aber kleiner als der echter dezimaler Gleitpunktzahlen.

  • Die Typen DF16_RAW und DF34_RAW decken zwar den gesamten Wertebereich ab, werden aber von den Datenbanken nicht als Zahlen erkannt.

  • In den ABAP CDS können in der Regel keine Ausdrücke und Funktionen für die Ersatztypen ausgeführt werden.
  • Zusätzlich zu den oben aufgeführten Typen gibt es noch die obsoleten Ersatztypen DF16_SCL und DF34_SCL für dezimale Gleitpunktzahlen mit Skalierung.
  • In Datenbankfeldern dieses Typs werden dezimale Gleitpunktzahlen wie bei DF16_RAW bzw. DF34_RAW abgelegt (Länge 16 bzw. 34 Stellen, und es gelten die gleichen Einschränkungen). Für die Skalierung muss ein direkt folgendes Datenbankfeld vom Typ INT2 vorhanden sein. Beim Schreiben einer dezimalen Gleitpunktzahl wird dieses Feld automatisch mit der Skalierung gefüllt, bzw. beim Lesen wird die Skalierung aus diesem Feld entnommen.

  • Von einer Verwendung der Typen DF16_SCL und DF34_SCL wird dringend abgeraten. Ihre Funktionalität wird so gut wie nicht benötigt und die Verwendung einer zusätzlichen Spalte für die Skalierung macht ihre korrekte Verwendung zu kompliziert und damit zu fehleranfällig.

Behandlung in Dynpros - Ausgabelänge und Ausgabestil

Die maximale Ausgabelänge, die in einer Domäne für eine 16-stellige dezimale Gleitpunktzahl angegeben werden kann, ist 24, die für eine 34-stellige ist 46. Dies sind gleichzeitig die Standardwerte.

In einer Domäne oder direkt bei einer Strukturkomponente (nicht aber bei Datenelementen mit direkt angegeben technischen Eigenschaften), die mit einem der Typen für dezimale Gleitpunktzahlen angelegt wird, ist immer einer der folgenden Ausgabestile festgelegt. Der Ausgabestil legt fest, wie ein Dynpro-Feld, das mit Bezug zu dieser Domäne definiert ist, oder bei Listenausgaben ein entsprechendes ABAP-Feld formatiert wird.

  • Normal
Standardeinstellung, mathematische oder wissenschaftliche Notation (je nach Platz)
  • Vorzeichen rechts
Kaufmännische Notation, keine implizite Umstellung auf wissenschaftliche Notation, wenn nicht genügend Platz vorhanden ist, sondern Abbruch.
  • Skalierungserhaltend
Format mit Erhaltung der Skalierung inklusive schließender Nullen in den Nachkommastellen
  • Wissenschaftlich
Wissenschaftliche Notation
  • Wissenschaftlich mit führender Null
Wissenschaftliche Notation mit einer 0 als Vorkommastelle.
  • Skalierungserhaltend wissenschaftlich
Wissenschaftliche Notation inklusive schließender Nullen in der Mantisse
  • Technisch
Wissenschaftliche Notation wobei der Exponent immer ein ganzzahliges Vielfaches von 3 ist. Der Wertebereich der Vorkommastellen liegt zwischen 1 und 999 außer das Quellfeld hat den Wert 0.

Für Dynpro-Felder, deren Datentyp nicht im ABAP Dictionary definiert ist, kann der Ausgabestil auch im Screen Painter festgelegt werden. Für Formatierungen mit Zeichenketten-Templates oder mit den Anweisungen WRITE oder WRITE TO gibt es den Zusatz STYLE.

Hinweise

  • Bei Verwendung der wissenschaftlichen Notation kann eine begrenzte Anzahl angezeigten Stellen der Mantisse empfehlenswert sein. Dies kann über die eingebaute Funktion rescale erreicht werden.
  • Der Stil "Skalierungserhaltend" stellt sicher, dass bei einer Konvertierung vom Dynpro-Feld nach ABAP nicht nur der Originalwert, sondern auch die Skalierung wiederhergestellt wird.
  • Wenn vertikal ausgerichtete Dezimaltrennzeichen und Exponenten auf Oberflächen erforderlich sind, kann die skalierungserhaltende wissenschaftliche Notation verwendet werden.

Behandlung in ABAP-Programmen

Die zu den 16- bzw. 34-stelligen dezimalen Gleitpunktzahlen des ABAP Dictionary korrespondierenden ABAP-Typen sind decfloat16 und decfloat34, die intern nach der Norm IEEE-754-2008 behandelt und von allen ABAP-Operationen unterstützt werden. Gleitpunktzahlen mit Ersatztypen werden in SQL-Ausdrücken nur eingeschränkt unterstützt. In arithmetischen SQL-Ausdrücken werden nur dezimale Gleitpunktzahlen unterstützt, die auf den dezimalen Gleitpunkttypen beruhen.

Für die Formatierung von dezimalen Gleitpunktzahlen in Programmen stehen der Zusatz STYLE hinter WRITE $[TO$] und die Formatierungsoption STYLE in eingebetteten Ausdrücken zur Verfügung. Diese überschreiben den im ABAP Dictionary definierten Ausgabestil. Falls der Zusatz CURRENCY hinter WRITE $[TO$] für eine dezimale Gleitpunktzahl im ABAP Dictionary verwendet wird, muss er mit dem Ausgabestil Sign right definiert werden, sonst kommt es zu einer Ausnahme.






ROGBILLS - Synchronize billing plans   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 12806 Date: 20240523 Time: 174414     sap01-206 ( 179 ms )