Zeitstempel mittels SQL Stored Procedure und dynamischer Tabellenschnittstelle in SAP DataService ermitteln

Sie möchten den letzten Datensatz ermitteln, den Sie bereits erfolgreich geladen haben? Sie haben eine große Quelldatenbank-Tabelle und wollen nur die geänderten/neuen Datensätze laden? Dann bieten wir Ihnen eine Lösung!

Zuerst müssen wir auf unserem SQL Server in der Zieldatenbank eine Stored Procedure anlegen. Dazu wählen wir im Baum auf der linken Seite Databases -> [Database] -> Programmability -> Stored Procedures. Mittels der rechten Maustaste selektieren wir den Punkt New -> Stored Procedure.

In dem sich öffnenden Fenster können wir die Prozedur erstellen. Zuerst vergeben wir einen Namen get_timestamp.  Für den Zeitstempel benötigen wir einen Output Parameter. In unserem Beispiel @max_timestamp. Außerdem wird ein Parameter für den Tabellennamen erstellt (@table_name). Für die weitere Verarbeitung verwenden wir noch vier weitere interne Parameter. In unserem Beispiel hat die Tabelle einen Änderungszeitstempel und einen Anlagezeitstempel. Daher benötigen wir zwei Variablen für die Zeitstempel (@param1, @param2), eine Variable für Anweisung (@cmd) und einen für den dazugehörigen Parameter (@parameters). Im Folgenden wird zuerst die auszuführende Anweisung der Variable zugewiesen. Im nächsten Schritt wird der Ausgabeparameter definiert. Zu guter Letzt werden die Variablen mittels der Prozedur sp_executesql ausgeführt. Im If-Zweig wird noch ermittelt welcher Timestamp aktueller ist. Dieser wird dann als Output aus der Prozedur übergeben. Wenn wir diese Prozedur gespeichert haben, können wie sie im SAP DataService verwenden.

 

Um die erstellte Prozedur im DataService nutzen zu können, müssen wir sie zuerst importieren. Dazu wählen wir im DataService die Registerkarte Datastore. Wir navigieren zu dem Datastore, der unserer Datenbank entspricht und wählen den Punkt Functions aus. Über das Kontextmenü wählen wir den Punkt Import by Name. Im sich öffnenden Fenster geben wir den Namen der Prozedur ein.

Nun können wir die Prozedur z.B. in einem Skript verwenden. Wir navigieren jetzt zu einem BatchJob oder Workflow und erstellen dort ein Skript. Zuerst benötigen wir vier Variablen. Die erste für den Tabellennamen (varchar(255)), die zweite für den Zeitstempel (datetime), die dritte und vierte für evtl. Fehlermeldungen (jeweils varchar(255)).

Im nächsten Schritt kann nun die Prozedur über den Button Functions eingefügt werden. Es öffnet sich ein neues Fenster. Dort navigieren wir auf der linken Seite zu unserem Datastore und wählen diesen aus. Im rechten Teil des Fensters können wir jetzt die Prozedur auswählen.  Anschließend öffnet sich ein neues Fenster, in dem wir unsere Variablen den Parametern zuordnen.

Zu guter Letzt müssen wir der Variable für den Tabellennamen noch den richtigen Wert zuweisen.  

Wenn wir die Variable als global angelegt haben, können wir diese in den weiteren Dataflows benutzen. z.B. im Where-Statement mit einem größer als Operator.