Ansicht
Dokumentation
ABENCDS_CONV_FUNC_UNIT_CURR_V1 - CDS CONV FUNC UNIT CURR V1
Vendor Master (General Section) PERFORM Short ReferenceDiese Dokumentation steht unter dem Copyright der SAP AG.
- DDIC-basierte View, Einheits- und Währungskonvertierungsfunktionen
... UNIT_CONVERSION( p1 => a1, p2 => a2, ... )
$| CURRENCY_CONVERSION( p1 => a1, p2 => a2, ... )
$| DECIMAL_SHIFT( p1 => a1, p2 => a2, ... ) ...
Varianten:
1. ... UNIT_CONVERSION( p1 => a1, p2 => a2, ... )
2. ... CURRENCY_CONVERSION( p1 => a1, p2 => a2, ... )
3. ... DECIMAL_SHIFT( p1 => a1, p2 => a2, ... )
Wirkung
Funktionen zur Konvertierung zwischen Einheiten und zwischen Währungen
. Die Funktionen haben
Schlüsselwortparameter
p1,
p2, ..., die teilweise optional sind, denen beim Aufruf über
=> Aktualparameter a1,
a2, ... zugeordnet werden müssen bzw. können.
Variante 1
... UNIT_CONVERSION( p1 => a1, p2 => a2, ... )
Wirkung
Die Funktion UNIT_CONVERSION führt eine Einheitenkonvertierung für den an den Formalparameter quantity übergebenen Wert durch.
Die Einheitenkonvertierung findet auf Grundlage der in der Transaktion CUNI und in den Datenbanktabellen T006... des Pakets SZME abgelegten mandantenabhängigen Regeln statt.
Die folgende Tabelle zeigt die Formalparameter p1, p2, ... und ihre Bedeutung.
Formalparameter | Optional | Bedeutung | Datentyp | Aktualparameter |
quantity | - | Eingangswert | QUAN, DEC, INT1, INT2, INT4, FLTP | Feld einer Datenquelle, Parameter |
source_unit | - | Ausgangseinheit aus Spalte MSEHI der DDIC-Datenbanktabelle T006 | UNIT | Feld einer Datenquelle, Ausdruck, der einen passenden Datentyp zurückgibt, Parameter |
target_unit | - | Zieleinheit aus Spalte MSEHI der DDIC-Datenbanktabelle T006 | UNIT | Feld einer Datenquelle, Ausdruck, der einen passenden Datentyp zurückgibt, Parameter |
client | X, - | Mandant, mit dessen Regeln die Einheitenkonvertierung vorgenommen wird. Optional, falls die aktuelle Datenquelle mandantenabhängig ist. Standard: Inhalt der Mandantenspalte der aktuellen Zeile | CLNT | Feld einer Datenquelle, Literal, Parameter |
error_handling | X | Fehlerbehandlung. Falls "FAIL_ON_ERROR" (Standardwert) kommt es im Fehlerfall zu einer Ausnahme, falls "SET_TO_NULL" wird das Ergebnis auf den Null-Wert gesetzt, falls "KEEP_UNCONVERTED" wird der Ausgangswert nicht geändert. | CHAR der Länge 20 | Literal |
Der Datentyp des Ergebnisses hängt vom Datentyp des Formalparameters quantity.
- Falls quantity keinen dezimalen Gleitpunkttyp hat, hat das Ergebnis den Datentyp QUAN mit Länge 21 und 14 Dezimalstellen.
- Falls quantity den Datentyp DECFLOAT16 hat, hat das Ergebnis den Datentyp DECFLOAT16.
- Falls quantity den Datentyp DECFLOAT34 hat, hat das Ergebnis den Datentyp DECFLOAT34.
Hinweis
Die Präzision des Ergebnisses der Einheitenkonvertierung hängt von der Datenbankplattform ab. Die höchste Präzision wird auf Datenbanken erreicht, welche dezimale Gleitpunktzahlen unterstützen. Das Ergebnis kann rundungsbedingt unterschiedlich zu einer Einheitenkonvertierung sein, die mit ABAP-Mitteln durchgeführt wird, wie z.B. mit einem Standardfunktionsbaustein.
Beispiel
Die folgende CDS-View ruft in der SELECT-Liste eine Einheitenkonvertierung für die Spalte DEC3 der DDIC-Datenbanktabelle DEMO_EXPRESSIONS auf. Die Ausgangseinheit ist ein Literal, das auf den erforderlichen Typ gecasted wird. Die Zieleinheit muss als Parameter übergeben werden. Im Fehlerfall, z.B. wenn keine Umrechnung zwischen den eingegeben Einheiten möglich ist, wird das Ergebnis auf Null gesetzt.
Das Programm DEMO_CDS_UNIT_CONVERSION greift
in einer SELECT-Anweisung auf die View zu. Die Zieleinheit wird dort an den relevanten Parameter übergeben. Zum Vergleich wird dort die gleiche Konvertierung auch mit dem Funktionsbaustein
UNIT_CONVERSION_SIMPLE ausgeführt. Voraussetzung
für das Beispiel ist, dass die Einheiten und ihre Konvertierungsregeln in den entsprechenden DDIC-Datenbanktabellen vorliegen.
Variante 2
... CURRENCY_CONVERSION( p1 => a1, p2 => a2, ... )
Wirkung
Die Funktion CURRENCY_CONVERSION führt eine Währungskonvertierung für den an den Formalparameter amount übergebenen Wert durch. Das Ergebnis ist vom Datentyp CURR oder DECFLOAT34 mit den gleichen technischen Eigenschaften wie der an amount übergebene Aktualparameter. Die Währungskonvertierung wird auf Basis der mandantenabhängigen Regeln, die in den DDIC-Datenbanktabellen TCUR... des Paketes SFIB gespeichert sind, ausgeführt. Diese Regeln können in der Transaktion OB08 bearbeitet werden.
Die folgende Tabelle zeigt die Formalparameter p1, p2, ... und ihre Bedeutung.
Formalparameter | Optional | Bedeutung | Datentyp | Aktualparameter |
amount | - | Eingangswert | CURR, DECFLOAT34 | Feld einer Datenquelle, Parameter |
source_currency | - | Ausgangswährung aus Spalte WAERS der DDIC-Datenbanktabelle TCURC | CUKY | Feld einer Datenquelle, Literal, Parameter |
target_currency | - | Zielwährung aus Spalte WAERS der DDIC-Datenbanktabelle TCURC | CUKY | Feld einer Datenquelle, Literal, Parameter |
exchange_rate_date | - | Kursdatum für Spalte GDATU der DDIC-Datenbanktabelle TCURR | DATS | Feld einer Datenquelle, Literal, Parameter |
exchange_rate_type | X | Kurstyp aus Spalte KURST der DDIC-Datenbanktabelle TCURR, Standardwert: "M" | CHAR der Länge 4 | Literal, Parameter |
client | X, - | Mandant, mit dessen Regeln die Währungskonvertierung vorgenommen wird. Optional, falls die aktuelle Datenquelle mandantenabhängig ist. Standard: Inhalt der Mandantenspalte der aktuellen Zeile | CLNT | Feld einer Datenquelle, Literal, Parameter |
round | X | Falls "X" (Standardwert) wird das Zwischenergebnis der Konvertierung kaufmännisch in das Endergebnis gerundet, andernfalls wird abgeschnitten | CHAR | Literal |
decimal_shift | X | Dieser Formalparameter kann nur mit dem Datentyp CURR für amount verwendet werden.\lbr \lbr Falls "X" (Standardwert) werden die Nachkommastellen des Ausgangswerts abhängig von den Nachkommastellen der Ausgangswährung verschoben, siehe unten | CHAR | Literal |
decimal_shift_back | X | Dieser Formalparameter kann nur mit dem Datentyp CURR für amount verwendet werden.\lbr \lbr Falls "X“ (Standardwert) werden die Nachkommastellen des Ergebnisses abhängig von den Nachkommastellen der Zielwährung verschoben, siehe unten | CHAR | Literal |
error_handling | X | Fehlerbehandlung. Falls "FAIL_ON_ERROR" (Standardwert) kommt es im Fehlerfall zu einer Ausnahme, falls "SET_TO_NULL" wird das Ergebnis auf den Null-Wert gesetzt, falls "KEEP_UNCONVERTED" wird der Ausgangswert nicht geändert. | CHAR der Länge 20 | Literal |
An die Eingabeparameter round, decimal_shift und decimal_shift_back können auch die Literale #cdsboolean.TRUE, #cdsboolean.true, #cdsboolean.FALSE und #cdsboolean.false mit vorangestellter Domäne CDSBOOLEAN unter Berücksichtigung der Groß-/Kleinschreibung oder die Literale 'true' oder 'false' ohne Berücksichtigung der Groß-/Kleinschreibung angegeben werden. Diese Literale werden intern wie die Werte "X" bzw. " " behandelt.
Behandlung der Dezimalstellen
- Der übergebene Wert wird vor der Konvertierung auf zwei Nachkommastellen gerundet.
- Der übergebene Wert wird vor der Konvertierung mit 10 hoch Anzahl der Nachkommastellen der Ausgangswährung multipliziert.
- Wenn an den Parameter decimal_shift der Wert "X" oder "TRUE" übergeben wird, wird der übergebene Wert vor der Konvertierung mit 10 hoch zwei weniger der Anzahl der Nachkommastellen der Ausgangswährung multipliziert.
- Wenn an den Parameter decimal_shift_back der Wert "X" "TRUE" übergeben wird, wird das Ergebnis nach der Konvertierung durch 10 hoch zwei weniger der Anzahl der Nachkommastellen der Zielwährung dividiert.
- Das Ergebnis wird nach der Konvertierung durch 10 hoch Anzahl der Nachkommastellen der Zielwährung dividiert.
Hinweis
- Da die Konvertierung auf der Datenbank ausgeführt wird, erfolgt die Berechnung teilweise nach anderen Rundungsregeln als in ABAP. Es können nicht in jedem Fall die gleichen Ergebnisse wie bei der Verwendung von Standardfunktionsbausteinen zur Währungskonvertierung erwartet werden, da diese in der Regel mit geringerer Genauigkeit und entsprechend gerundeten Zwischenergebnissen rechnen.
- Der Parameter decimal_shift soll dazu dienen, den Ausgangswert vor der Konvertierung auf die Anzahl der Nachkommastellen der Ausgangswährung zu setzen, wobei davon ausgegangen wird, dass dessen technischer Typ CURR wie üblich zwei Nachkommastellen hat. Der Parameter decimal_shift_back soll die umgekehrte Operation ausführen.
- Wenn der technische Typ CURR des Ausgangswerts nicht zwei Nachkommastellen hat, kann das Verhalten der Funktion CURRENCY_CONVERSION unerwartet sein.
Beispiel
Die folgende CDS-View ruft in der SELECT-Liste eine Währungskonvertierung für die Spalte AMOUNT der DDIC-Datenbanktabelle DEMO_PRICES auf. Die Zielwährung muss als Parameter übergeben werden. Im Fehlerfall, z.B. bei einer nicht vorhandenen Währung, wird das Ergebnis auf Null gesetzt.
Das Programm DEMO_CDS_CURRENCY_CONVERSION greift in einer SELECT-Anweisung auf die View zu. Die Zielwährung wird dort übergeben. Zum Vergleich wird dort die gleiche Konvertierung auch mit dem Funktionsbaustein CONVERT_TO_LOCAL_CURRENCY ausgeführt. Voraussetzung für das Beispiel ist, dass die Währungen und die Konvertierungsregeln in den entsprechenden DDIC-Datenbanktabellen vorliegen.
Beispiel
Im Programm DEMO_CDS_FUNC_CURR_CONV wird die CDS-View oben in einer Subquery einer MODIFY-Anweisung in ABAP SQL verwendet.
Variante 3
... DECIMAL_SHIFT( p1 => a1, p2 => a2, ... )
Wirkung
Die Funktion DECIMAL_SHIFT setzt das Dezimaltrennzeichen des an den Formalparameter amount übergebenen Werts gemäß einer Währung. Das Ergebnis ist vom Datentyp CURR der Länge 31 mit 14 Nachkommastellen. Sein Wert ergibt sich aus der Multiplikation des auf zwei Nachkommastellen gerundeten Eingabeparameters mit 10 hoch zwei weniger der durch die übergebene Währung festgelegten Nachkommastellen.
Mögliche Währungen und deren Nachkommastellen beruhen auf den Datenbanktabellen TCUR... des Pakets SFIB.
Formalparameter | Optional | Bedeutung | Datentyp | Aktualparameter |
amount | - | Eingangswert | CURR | Feld einer Datenquelle, Parameter |
currency | - | Währung aus Spalte WAERS der DDIC-Datenbanktabelle TCURC, die dazugehörigen Nachkommastellen werden aus der Spalte CURRDEC der TCURX bestimmt | CUKY | Feld einer Datenquelle, Literal, Parameter |
error_handling | X | Fehlerbehandlung. Falls "FAIL_ON_ERROR" (Standardwert) kommt es im Fehlerfall zu einer Ausnahme, falls "SET_TO_NULL" wird das Ergebnis auf den Null-Wert gesetzt, falls "KEEP_UNCONVERTED" wird der Ausgangswert nicht geändert. | CHAR der Länge 20 | Literal |
Hinweis
Wenn der Typ des an amount übergebenen Aktualparameters zwei Nachkommastellen hat, wird sein Wert sozusagen auf die Anzahl der Nachkommastellen der übergebenen Währung gesetzt.
Beispiel
Die folgende CDS-View setzt in der SELECT-Liste das Dezimaltrennzeichen für die Spalte AMOUNT der DDIC-Datenbanktabelle DEMO_PRICES gemäß Währungen mit Nachkommastellen zwischen 0 und 5. Die Spalte AMOUNT hat zwei Nachkommastellen, so dass die Nachkommastellen direkt durch die übergebenen Währungen bestimmt werden. Im Fehlerfall, z.B. bei einer nicht vorhandenen Währung, wird das Ergebnis auf Null gesetzt.
Das Programm DEMO_CDS_DECIMAL_SHIFT greift in einer SELECT-Anweisung auf die View zu. Voraussetzung für das Beispiel ist, dass die Währungen und ihre Nachkommastellen in den entsprechenden DDIC-Datenbanktabellen vorliegen.
Fill RESBD Structure from EBP Component Structure Vendor Master (General Section)
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 29311 Date: 20240523 Time: 170618 sap01-206 ( 308 ms )