Zum Hauptinhalt springen

Nachkommastellen für Währungen

warnung

Diese Funktion ist nur für SAP R3/ECC, nicht für S4/HANA gedacht! In S4/HANA sind die Währungen anderweitig konfiguriert bzw. konfigurierbar - dort erfolgt z.B. die Währungsumrechnung über einen Exit bei der Anzeige.

tipp

Alle Konfigurationsdateien welche die Nachkommastellen für Währungen steuern, haben das Präfix currency-decimals-, z.B. currency-decimals-debug.json oder currency-decimals-prod.json.

Typischerweise gibt es zwei Konfigurationsdateien:

  • currency-decimals-prod.json: Für die Produktiv Umgebung vorgesehen
  • currency-decimals-debug.json: Zum testen und debuggen vorgesehen

Zweck der Konfiguration

Diese Konfiguration dient dazu, Beträge korrekt für SAP aufzubereiten, bevor sie übermittelt werden. Je nach Währung unterscheiden sich die gültigen Nachkommastellen. Ohne diese Anpassung könnten falsche Werte im SAP-System landen.

warnung

Damit die Beträge korrekt verarbeitet werden, sollte die Konfiguration inhaltlich der SAP-Tabelle TCURX entsprechen – nur so ist sichergestellt, dass alle Werte im SAP-System fehlerfrei interpretiert werden.

Wenn die Währung nicht in der TCURX-Tabelle enthalten ist, darf diese Währung auf keinen Fall in der Konfigurationsdatei für den Connector konfiguriert werden, auch wenn die Dezimalstellen abweichen!

Beispiel

Die Währung JPY (japanischer Yen) erlaubt keine Nachkommastellen. Wenn diese Währung in der TCURX-Tabelle mit 0 Nachkommastellen konfiguriert ist, trägt SAP bei einer manuellen Buchung den Wert einfach um 2 Nachkommastellen verschoben ein. Dies liegt höchstwahrscheinlich daran, dass die internen Variablen in SAP R3/ECC auf 2 Nachkommastellen festgelegt sind.

  • Betrag der Rechnung ist 132 JPY
  • Nutzer gibt in SAP ein: 132 JPY
  • SAP speichert im Hintergrund: 1,32 JPY JPY

Dieses Verhalten müssen wir über die Schnittstelle nachbauen, da es keine andere Möglichkeit in SAP R3/ECC gibt.

  • In den Kopfdaten ist die Belegwährung JPY und der Rechnungsbetrag 132 JPY
  • In der currency-decimals-*.json ist JPY wie auch in der SAP TCURX-Tabelle mit 0 Nachkommastellen definiert
  • Der Connector übergibt entsprechend 1,32 JPY JPY an SAP

Die Konfigurationsdatei steuert daher, wie viele Dezimalstellen für jede Währung erlaubt sind. Bei der Verarbeitung wird anhand dieser Datei geprüft, wie ein Betrag verschoben werden soll.

Vor der Buchung wird die Währung geprüft - dann erfolgt das Verschieben der Nachkommastellen anhand der Konfigration oder dem Standardwert (2 Nachkommastellen -> es passiert nichts).

warnung

Es ist noch zu testen, wie sich das Verhalten ändert, wenn Belegwährung und Hauswährung unterschiedlich sind.
Dabei gilt:

  • Beträge, die SAP in der Hauswährung erwartet, werden auf Grundlage der in der Datenbank hinterlegten Hauswährung verarbeitet. Dabei wird in der Konfigurationsdatei nach dem entsprechenden Währungscode gesucht, und die definierte Nachkommastellenanzahl (decimals) für das Runden verwendet.
  • Ebenso werden Beträge, die SAP in der Belegwährung erwartet, anhand der in der Datenbank hinterlegten Belegwährung verarbeitet. Auch hier erfolgt die Rundung gemäß der in der Konfiguration hinterlegten decimals-Angabe für diese Währung.

Aufbau einer Konfigurationsdatei

[
{
"currency": "JPY",
"decimals": 0
},
{
"currency": "KWD",
"decimals": 3
}
]

Eigenschaft

NameTypBeschreibung
currencyStringWährungscode (z. B. „EUR“, „USD“, „JPY“), der mit den in der Datenbank hinterlegten Währungsspalten übereinstimmen muss. Gibt die betroffene Währung an, in der Regel ein ISO-4217-Währungscode.
decimalsIntegerDie Anzahl der Nachkommastellen, die für die jeweilige Währung verwendet werden sollen.