Wie Sie SAP BW Transformationsroutinen mit SQL Script erstellen

Chris Fidanidis

Geschrieben von: Chris Fidanidis - 01 Oktober 2019
(Aktualisiert am: 02 Dezember 2022)

Nachdem Sie in einem früheren Artikel die Vorteile von SQL Script und die Entscheidungskriterien für eine Umsetzung mittels SQL Script kennengelernt haben, zeige ich Ihnen in diesem Artikel, wie Sie SAP BW Transformationsroutinen mit SQL Script anlegen können.

SQL Transformationen profitieren zwar vom Code-Pushdown, allerdings muss man dabei auf vordefinierte ABAP-Bausteine verzichten und die gewünschte Logik in SQL Script selbst implementieren. Ich zeige Ihnen anhand eines konkreten Anwendungsfalls, wie Sie Fiskalperioden in Kalendermonate umrechnen.

Transformationsroutine erstellen

Die Fiskalperioden liegen in der Version V3 vor. Um die entsprechenden Kalendermonate abzuleiten, müssen wir drei Monate zurückrechnen und zusätzlich die Jahresverschiebung berücksichtigen.

Ausgangsdaten

In der untenstehenden Tabelle finden Sie unser Beispiel mit den Fiskalperioden und die entsprechenden Kalendermonate, die es nun zu ermitteln gilt.

Fiskalperiode Kalendermonat
2019001 201810
2019002 201811
2019003 201812
2019004 201901
2019005 201902
2019006 201903
2019007 201904
2019008 201905
2019009 201906
2019010 201907
2019011 201908
2019012 201909

 

Diese Logik setzen wir in Form einer Transformationsroutine um. Dazu legen wir in den BW Modeling Tools wie gewohnt eine Transformation an. Achten Sie darauf, dass zunächst sowohl ABAP-Laufzeit als auch HANA-Laufzeit unterstützt wird. Diese Information können Sie unter Laufzeitstatus ablesen.

Transformation anlegen

Um die Fiskalperioden in Kalendermonate umzuwandeln, legen wir eine Expertenroutine an, in welcher wir Zugriff auf die Quell- und Zielfelder haben. Folgen Sie dem Menüpfad BearbeitenRoutinenExpertenroutine um eine Expertenroutine anzulegen.

Expertenroutine anlegen

Sie werden gefragt, ob Sie die bestehende Transformation löschen und durch eine Expertenroutine ersetzen möchten. Bestätigen Sie diese Abfrage mit Ja. Anschließend werden Sie gefragt, ob Sie eine ABAP-Routine oder ein AMDP Script anlegen möchten. Um vom HANA Code Pushdown zu profitieren, wählen Sie bitte die Option AMDP Script aus.

AMDP Script anlegen

Anschließend müssen Sie in BW Modeling Tools ein bestehendes ABAP-Projekt auswählen oder ein neues Projekt anlegen. Danach können Sie innerhalb der Methode PROCEDURE Ihre Logik implementieren. Als Übergabeparameter haben Sie die Tabellen outTab und errorTab zur Verfügung. Beachten Sie bitte, dass die Reihenfolge der SQL Statements mit der Tabellendefinition übereinstimmen muss. Die Tabellendefinition sehen Sie am Anfang der Klassendefinition.

2019-09-25_14_05_52-leere-methode

In unserem Fall lautet die Logik wie folgt:

outTab =
SELECT company, fiscper, fiscvarnt,
CASE
WHEN SUBSTRING(fiscper,5,3) = 001 then CONCAT(SUBSTRING(fiscper,1,4) - 1, SUBSTRING(fiscper,5,3) - 3 + 12)
WHEN SUBSTRING(fiscper,5,3) = 002 then CONCAT(SUBSTRING(fiscper,1,4) - 1, SUBSTRING(fiscper,5,3) - 3 + 12)
WHEN SUBSTRING(fiscper,5,3) = 003 then CONCAT(SUBSTRING(fiscper,1,4) - 1, SUBSTRING(fiscper,5,3) - 3 + 12)
ELSE CONCAT(SUBSTRING(fiscper,1,5), SUBSTRING(fiscper,5,3) - 3)
END AS calmonth,
currency, recordmode, amount, record, SQL__PROCEDURE__SOURCE__RECORD
FROM :inTab;

Steigern Sie die Leistung Ihres BW mit SQLScript

SAP SQLScript Whitepaper


Wenn Sie keine Fehlerbehandlung implementieren möchten, können Sie auch eine leere errorTab Tabelle übergeben.

errorTab =
SELECT '' AS ERROR_TEXT,
'' AS SQL__PROCEDURE__SOURCE__RECORD
FROM DUMMY
WHERE DUMMY <> 'X';

Aktivieren Sie anschließend die AMDP-Klasse und die Transformation. Beachten Sie, dass nach der Implementierung der AMDP-Routine nur die HANA-Laufzeit unterstützt wird.

nur hana-laufzeit

Sie können die HANA-Transformation über ZusätzeGenerierte HANA-Transformation anzeigen einsehen.

Generierte HANA-Transformation anzeigen

Wechseln Sie dort über ZusätzeExpertenmodus ein in den Expertenmodus, um das Berechnungsszenario anzuzeigen.

Expertenmodus einschalten

Dort können Sie neben der XML-Darstellung des Berechnungsszenarios auch die Skriptdefinition einsehen.

Skriptdefinition einsehen

Wenn Sie nun ein DTP anlegen, sehen Sie, dass dieser in HANA ausgeführt wird.

DTP wird in HANA ausgeführt

Aktivieren Sie bitte den DTP und führen Sie diesen aus. Die Kalendermonate werden der definierten Logik entsprechend gefüllt. Auf dem folgenden Bild sehen Sie das Ergebnis.

Ergebnis Transformationroutine

 

Erfahren Sie mehr über  SAP HANA SQLScript

Bildquelle: Pexels, CC0 License

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

Beitrag teilen

Sie haben eine Frage zum Blog?
Fragen Sie Chris Fidanidis