Ansicht
Dokumentation

ABENCDS_CONV_FUNC_UNIT_CURR_V1 - CDS CONV FUNC UNIT CURR V1

ABENCDS_CONV_FUNC_UNIT_CURR_V1 - CDS CONV FUNC UNIT CURR V1

Vendor Master (General Section)   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- 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 )