Währungsumrechnung mit SAP HANA SQLScript in Transformationsroutinen

Chris Fidanidis

Geschrieben von: Chris Fidanidis - 14 Januar 2021
(Aktualisiert am: 14 Februar 2023)

Häufig muss während der Ladeprozesse in SAP BW HANA die Währung umgerechnet werden. So wird zum Beispiel bei einem Konzern mit Gesellschaften in verschiedenen Ländern die Landeswährung in die Konzernwährung umgerechnet.

Mittlerweile ist es ohne Weiteres möglich, viele typische Anforderungen im ETL Prozess mit SQLScript umzusetzen. Die Anwender werden dabei durch vordefinierte Funktionen unterstützt. In diesem Artikel beleuchten wir die Währungsumrechnung. Weitere Informationen zu Einsatzgebieten für SQLScript finden Sie in unserem Whitepaper.

Vorteile von SQLScript

Mit der Nutzung von SQLScript anstatt von ABAP profitieren Sie von Code Pushdown. Dabei werden Berechnungen auf der Ebene der Datenbank durchgeführt. So wird verhindert, dass die Daten zuerst von der Datenbank zum ABAP-Server geladen werden, um anschließend dort die Kalkulationen durchzuführen.

Als Ergebnis können Sie eine bessere Performance erzielen. Denn mit SQLScript greifen Sie direkt auf die Daten der HANA-Datenbank zu und vermeiden unnötige Übertragungen zwischen der Datenbank und dem Anwendungsserver. Gerade bei Berechnungen mit großen Datenmengen können Sie auf diese Weise viel Zeit einsparen.

Voraussetzungen

Um die Währungsumrechnung in SQLScript durchführen zu können, müssen die folgenden Währungstabellen in HANA verfügbar sein:

  • TCURR - Umrechnungskurse
  • TCURV - Kurstypen für die Währungsumrechnung
  • TCURF - Umrechnungsfaktoren
  • TCURN - Festlegung der Notierungsrichtung für ein Währungspaar
  • TCURX - Definition der Nachkommastellen der einzelnen Währungen

Defintion der TCURR Tabelle an

Parameter der CONVERT_CURRENCY Funktion

Für die Durchführung der Währungsumrechnung wird die SQLScript Funktion CONVERT_CURRENCY verwendet. Nachfolgend werden die Parameter dieser Funktion dargestellt. In der Spalte Referenz ist angegeben, ob Sie bei dem Parameter auf eine Spalte in der Datentabelle verweisen können oder eine fixe Konstante angeben müssen.

Parameter

Referenz

Beschreibung

AMOUNT

Ja

Zu konvertierende Summe

SOURCE_UNIT

Ja

Zu konvertierende Währung

TARGET_UNIT

Ja

Zielwährung 

REFERENCE_DATE

Ja

Stichtag für die Kursermittlung

SCHEMA

Nein

Datenbankschema der Konvertierungstabellen

CLIENT

Ja

Mandant, in dem die Konvertierung durchgeführt wird

ERROR_HANDLING

Nein

Legt die Fehlerbehandlung fest. Zum Beispiel, wenn eine Währung unbekannt ist. Folgende Optionen sind möglich:

fail on error - die Konvertierung bricht mit einem Fehler ab (Standardwert)

set to null - NULL wird als Ergebnis ausgegeben

keep unconverted - die Originalsumme wird ausgegeben

CONVERSION_TYPE

Nein

Definiert den verwendeten Kurstyp

 

Neben den Standard TCUR* Tabellen können Sie auch eigene Tabellen verwenden. Diese müssen Sie mithilfe der folgenden Parameter definieren.

Parameter

Referenz

Beschreibung

PRECISIONS_TABLE

Nein

Dezimalstellen der Währungen (Standard TCURX)

CONFIGURATION_TABLE

Nein

Kurstypen für Währungsumrechnung (Standard TCURV)

NOTATION_TABLE

Nein

Notierungsrichtung für Währungsumrechnung (Standard TCURN)

RATES_TABLE

Nein

Umrechnungskurse (Standard TCURR)

PREFACTORS_TABLE

Nein

Umrechnungsfaktoren (Standard TCURF)

 


Steigern Sie die Leistung Ihres BW mit SQLScript

SAP SQLScript Whitepaper


Coding Beispiele

An dieser Stelle präsentieren wir Ihnen einige Beispiele zur Verdeutlichung des Konzepts. Im ersten Beispiel wird die Belegwährung in die Hauswährung Euro umgerechnet. Dabei wird der Stichtag manuell festgelegt.

outTab =
SELECT calmonth, comp_code, doc_currcy,
'EUR' AS loc_currcy,
recordmode,
deb_cre_dc,
CONVERT_CURRENCY( AMOUNT => deb_cre_dc,
SOURCE_UNIT => doc_currcy,
SCHEMA => 'SAPABAP1',
TARGET_UNIT => 'EUR',
REFERENCE_DATE => '2020-08-10',
CLIENT => '100',
CONVERSION_TYPE => 'EURX')
AS deb_cre_lc,
record, SQL__PROCEDURE__SOURCE__RECORD
FROM :inTab;

ERRORTAB= SELECT * FROM :ERRORTAB;

Alternativ können Sie das aktuelle Datum als Stichtag nutzen:

outTab =
SELECT calmonth, comp_code, doc_currcy,
'EUR' AS loc_currcy,
recordmode,
deb_cre_dc,
CONVERT_CURRENCY( AMOUNT => deb_cre_dc,
SOURCE_UNIT => doc_currcy,
SCHEMA => 'SAPABAP1',
TARGET_UNIT => 'EUR',
REFERENCE_DATE => current_date,
CLIENT => '100',
CONVERSION_TYPE => 'EURX')
AS deb_cre_lc,
record, SQL__PROCEDURE__SOURCE__RECORD
FROM :inTab;

ERRORTAB= SELECT * FROM :ERRORTAB;

Sie können auch Variablen in der Währungsumrechnung verwenden. So wird im folgenden Beispiel das aktuelle Datum als Stichtag für die Währungsumrechnung genutzt:

DECLARE lv_date nvarchar(8);
SELECT to_nvarchar (current_date,'YYYYMMDD')INTO lv_date FROM DUMMY;

outTab =
SELECT calmonth, comp_code, doc_currcy,
'EUR' AS loc_currcy,
recordmode,
deb_cre_dc,
CONVERT_CURRENCY( AMOUNT => deb_cre_dc,
SOURCE_UNIT => doc_currcy,
SCHEMA => 'SAPABAP1',
TARGET_UNIT => 'EUR',
REFERENCE_DATE => :lv_date,
CLIENT => '100',
CONVERSION_TYPE => 'EURX')
AS deb_cre_lc,
record, SQL__PROCEDURE__SOURCE__RECORD
FROM :inTab;

ERRORTAB= SELECT * FROM :ERRORTAB;

Alternativ können Sie auch den Monat des jeweiligen Datensatzes als Stichtag nutzen:

outTab =
SELECT calmonth, comp_code, doc_currcy,
'EUR' AS loc_currcy,
recordmode,
deb_cre_dc,
CONVERT_CURRENCY( AMOUNT => deb_cre_dc,
SOURCE_UNIT => doc_currcy,
SCHEMA => 'SAPABAP1',
TARGET_UNIT => 'EUR',
REFERENCE_DATE => CONCAT(calmonth, '01'),
CLIENT => '100',
CONVERSION_TYPE => 'EURX')
AS deb_cre_lc,
record, SQL__PROCEDURE__SOURCE__RECORD
FROM :inTab;

ERRORTAB= SELECT * FROM :ERRORTAB;

Fazit

Wie Sie sehen, kann die Währungsumrechnung sehr einfach in SQLScript durchgeführt werden. So können Sie die Geschwindigkeitsvorteile der HANA Datenbank voll ausreizen. Dabei erlaubt die vordefinierte Funktion auch viele Konfigurationsmöglichkeiten.

Haben Sie Fragen zu SQLScript? Oder möchten Sie Ihre Transformationsroutinen auf SQLScript umstellen und suchen erfahrene Entwickler mit SQLScript Know-How? Zögern Sie bitte nicht, uns zu kontaktieren.

Erfahren Sie mehr über  SAP HANA SQLScript

 

Weitere Information hierzu finden Sie im Buch "SQLScript für SAP HANA" (SAP PRESS, ISBN 978-3-8362-7408-1) von Jörg Brandeis 

Themen: SAP HANA, SAP BW/4HANA, SAP HANA SQL

Beitrag teilen

Sie haben eine Frage zum Blog?
Fragen Sie Chris Fidanidis