How To BI – Löschtransformation anlegen
Es kommt vor, dass Daten in der Quelle „hart“ gelöscht werden und kein Delta geliefert wird. Ein möglicher Nachteil ist es, dass Daten im BW erhalten bleiben. In diesem How-To zeige ich Ihnen wie Sie mithilfe eines Standard-DSO-Objekts eine Lösung für dieses Problem finden.
Dabei wird vor dem eigentlichen Ladeprozess eine zusätzliche Löschtransformation ausgeführt. Dabei werden alle Sätze des DSO übernommen und ,mit einem Delete-Flag versehen (
0RECORDMODE = D
), als neues Request in das DSO eingebucht. Danach werden die Daten aus der Quelle im Full-Modus geladen. Als nächstes werden der Lösch-Request und der durch das Laden der neuen Daten erzeugte Request gleichzeitig aktiviert. Damit werden die durch das Löschen sowie Neuladen von Daten verursachten Veränderungen gleichzeitig aktiv. Dabei verfügt das DataStore-Objekt zu jedem Zeitpunkt über gültige Sätze und kann als Referenz dienen.Diese Implementierung lässt sich sowohl für Stamm- als auch Bewegungsdaten umsetzen und besteht aus drei Schritten:
- Lösch-DTP starten
- Lade-DTP (Full) starten
- Daten aktivieren
Betrachten wir diese Schritte anhand eines Beispiels. Wir haben einen ganz einfachen Datenfluss – die Daten kommen per Full aus der Quelle und werden in einem DSO abgelegt. Danach geht es weiter in einen Cube.
Im ersten Ladevorgang wurden folgende Daten mit dem Recordmode N
(für neue Daten) in das DSO eingebucht. Die aktive Tabelle und das Change-Log sehen gleich aus:
0BILL_NUM | 0BILL_ITEM | 0CREATEDON | 0CALYEAR | 0AMOUNT | 0CURRENCY | 0RECORDMODE |
60000100 | 10 | 28.07.2014 | 2014 | 100 | EUR | N |
60000100 | 20 | 29.07.2014 | 2014 | 120 | EUR | N |
60000101 | 10 | 30.07.2014 | 2014 | 200 | EUR | N |
60000102 | 10 | 31.07.2014 | 2014 | 300 | EUR | N |
Anschließend wurden die Daten in den Cube geschrieben. Der Inhalt des Cubes sieht so aus:
0BILL_NUM | 0BILL_ITEM | 0CREATEDON | 0CALYEAR | 0AMOUNT | 0CURRENCY |
60000100 | 10 | 28.07.2014 | 2014 | 100 | EUR |
60000100 | 20 | 29.07.2014 | 2014 | 120 | EUR |
60000101 | 10 | 30.07.2014 | 2014 | 200 | EUR |
60000102 | 10 | 31.07.2014 | 2014 | 300 | EUR |
Nun wird ein Teil der Daten (Beleg 60000101) in der Quelle gelöscht. Der neue Datensatz sieht wie folgt aus:
0BILL_NUM | 0BILL_ITEM | 0CREATEDON | 0CALYEAR | 0AMOUNT | 0CURRENCY |
60000100 | 10 | 28.07.2014 | 2014 | 100 | EUR |
60000100 | 20 | 29.07.2014 | 2014 | 120 | EUR |
60000102 | 10 | 31.07.2014 | 2014 | 300 | EUR |
Um diese Änderung abbilden zu können, erstellen wir eine Lösch-Transformation. Das DSO wird in sich selbst mit 0RECORDMODE D
geladen. Dazu erstellen wir eine technische Regelgruppe.
Dem Zielfeld 0RECORDMODE
weisen wir über den Regeltyp „Konstante“ den Wert D
zu.
Aktivieren Sie die Transformation und erstellen Sie einen DTP mit Full-Update.
Planung und Reporting mit SAP Analysis leicht gemacht!
Lernen Sie, wie Sie mit SAP Analysis for Microsoft Office professionelle Berichte erstellen. Dieses Praxishandbuch erklärt Ihnen, wie Sie Ihre Daten auf vielfältige Weise auswerten und darstellen. Schritt-für-Schritt-Anleitungen mit zahlreichen Screenshots unterstützen Sie – von der Implementierung bis zur Anwendung.
Zuerst wird der Lösch-DTP ausgeführt und anschließend die Daten aus der Quelle geladen. Die Tabelle für neue Daten sieht nach den Ladeprozessen wie folgt aus:
0BILL_NUM | 0BILL_ITEM | 0CREATEDON | 0CALYEAR | 0AMOUNT | 0CURRENCY | 0RECORDMODE |
60000100 | 10 | 28.07.2014 | 2014 | 100 | EUR | D |
60000100 | 20 | 29.07.2014 | 2014 | 120 | EUR | D |
60000101 | 10 | 30.07.2014 | 2014 | 200 | EUR | D |
60000102 | 10 | 31.07.2014 | 2014 | 300 | EUR | D |
60000100 | 10 | 28.07.2014 | 2014 | 100 | EUR | |
60000100 | 20 | 29.07.2014 | 2014 | 120 | EUR | |
60000102 | 10 | 31.07.2014 | 2014 | 300 | EUR |
Die vier alten Datensätze wurden gelöscht (Recordmode „D“) und drei neue Datensätze hinzugefügt (Recordmode “ “ für After-Image). Das After-Image beinhaltet den Neuzustand nach der Änderung des Datensatzes.
Anschließend aktivieren wir die beiden Requests. Die Tabelle für aktiven Daten beinhaltet die folgenden drei Sätze, der Beleg 60000101 wurde gelöscht.
0BILL_NUM | 0BILL_ITEM | 0CREATEDON | 0CALYEAR | 0AMOUNT | 0CURRENCY | 0RECORDMODE |
60000100 | 10 | 28.07.2014 | 2014 | 100 | EUR | N |
60000100 | 20 | 29.07.2014 | 2014 | 120 | EUR | N |
60000102 | 10 | 31.07.2014 | 2014 | 300 | EUR | N |
Schauen wir uns das Change Log an:
0BILL_NUM | 0BILL_ITEM | 0CREATEDON | 0CALYEAR | 0AMOUNT | 0CURRENCY | 0RECORDMODE |
60000100 | 10 | 28.07.2014 | 2014 | 100 | EUR | N |
60000100 | 20 | 29.07.2014 | 2014 | 120 | EUR | N |
60000101 | 10 | 30.07.2014 | 2014 | 200 | EUR | N |
60000102 | 10 | 31.07.2014 | 2014 | 300 | EUR | N |
60000100 | 10 | 28.07.2014 | 2014 | -100 | EUR | R |
60000100 | 10 | 28.07.2014 | 2014 | 100 | EUR | N |
60000100 | 20 | 29.07.2014 | 2014 | -120 | EUR | R |
60000100 | 20 | 29.07.2014 | 2014 | 120 | EUR | N |
60000101 | 10 | 30.07.2014 | 2014 | -200 | EUR | R |
60000102 | 10 | 31.07.2014 | 2014 | -300 | EUR | R |
60000102 | 10 | 31.07.2014 | 2014 | 300 | EUR | N |
Die ersten vier Datensätze kommen aus dem ersten Request. Die anderen wurden im zweiten Request angelegt. Diese werden auch so in den Cube fortgeschrieben. Wie Sie sehen können, ergeben alle Datensätze bis auf den Beleg 60000101 in der Summe 0. So werden sie auch den Cube übergeben. Da der Cube immer summiert sieht das RESULT_PACKAGE
so aus:
0BILL_NUM | 0BILL_ITEM | 0CREATEDON | 0CALYEAR | 0AMOUNT | 0CURRENCY |
60000100 | 10 | 28.07.2014 | 2014 | 0.00 | EUR |
60000100 | 20 | 29.07.2014 | 2014 | 0.00 | EUR |
60000101 | 10 | 30.07.2014 | 2014 | -200.00 | EUR |
60000102 | 10 | 31.07.2014 | 2014 | 0.00 | EUR |
Folgende Werte stehen nun in dem Cube:
0BILL_NUM | 0BILL_ITEM | 0CREATEDON | 0CALYEAR | 0AMOUNT | 0CURRENCY |
60000100 | 10 | 28.07.2014 | 2014 | 100 | EUR |
60000100 | 20 | 29.07.2014 | 2014 | 120 | EUR |
60000101 | 10 | 30.07.2014 | 2014 | 200 | EUR |
60000102 | 10 | 31.07.2014 | 2014 | 300 | EUR |
60000100 | 10 | 28.07.2014 | 2014 | 0 | EUR |
60000100 | 20 | 29.07.2014 | 2014 | 0 | EUR |
60000101 | 10 | 30.07.2014 | 2014 | -200,00 | EUR |
60000102 | 10 | 31.07.2014 | 2014 | 0 | EUR |
Beleg 60000101 wurde gelöscht.
Ihre User beklagen sich über langsame Berichte?
- In meinem Newsletter lernen Sie, wie Sie Abhilfe schaffen.
- Entdecken Sie die Möglichkeiten der Performanceoptimierung.
- Praktische Anleitungen ermöglichen Ihnen schnelle Erfolge bei der Optimierung von SAP Systemen.
- Viele Tipps und Tricks zu SAP BI Themen.
- Holen Sie die maximale Performance aus Ihrem SAP BI!
- Bei der Anmeldung zu meinem Newsletter erhalten Sie das Buch „High Performance SAP BI“ als Willkommensgeschenk.
Quellen:
Frank Wolf, Stefan Yamada (2010): Datenmodellierung in SAP NetWeaver BW, 1. Auflage, Bonn
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.
Bildquelle: Pexels, CC0 License
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!