Bei größeren Unternehmen mit einer breiten Systemlandschaft ist es manchmal nötig, Daten über eine flat file Schnittstelle in das BW zu importieren. Dabei sind die Dateinamen mit einem Timestamp versehen und ändern sich täglich. In diesem Beitrag zeige ich Ihnen, wie Sie diese Dateien automatisch laden können.
Bei der Koordination von Datenflüssen steht man oft vor der Herausforderung, bestimmte Systeme an das SAP BW anzubinden. So stellen zum Beispiel fehlende Schnittstellen ein Problem dar. In diesem Fall werden Informationen in eine CSV Datei exportiert, die anschließend in das BW importiert wird. Dieser Prozess wird täglich wiederholt. Um die Dateien untereinander unterscheiden zu können, wird das Erstellungsdatum an den Dateinamen angehängt. Somit ändert sich der Dateiname täglich, was bei der Automatisierung des Ladeprozesses eine weitere Herausforderung darstellt. Dieses kann mithilfe von ein paar Zeilen ABAP gelöst werden.
Zum besseren Verständnis nutze ich ein konkretes Beispiel. Im Verzeichnis /tmp/ des SAP Servers wird täglich ein flat file mit den Daten eines Legacy-Systems abgelegt. Sie können das Verzeichnis über die Transaktion AL11 einsehen. Die abgelegten Dateien tragen zur Differenzierung das aktuelle Datum im Dateinamen. Zum Beispiel actuals_20190918.csv.
Der vollständige Dateipfad lautet also /tmp/actuals_20190918.csv. Dieser besteht aus einem fixen (Ordner und Dateiname) und einem variablen Anteil (das aktuelle Datum). Um den Dateipfad automatisch zu bestimmen, müssen wir also eine Routine programmieren.
Wechseln Sie dazu zu Ihrem InfoPackage oder DTP (bei Extraktion ohne PSA) und selektieren Sie unter Adapter die Option Textartige Datei von Applikationsserver laden 1. Klicken Sie anschließend bei Dateiname auf Routine für Dateiname anlegen 2.
Geben Sie nun den Namen für die Routine ein und klicken Sie auf Editor.
Über den Parameter p_filename wird der Dateiname bestimmt. Möchten Sie die Datei mit dem aktuellen Datum laden, geht es mit nur einer Zeile Code. Dabei verwenden wir die Systemvariable sy-datum, die das aktuelle Datum ausgibt.
p_filename = |/tmp/actuals_{ sy-datum }.csv|.
Möchten Sie dagegen die Datei des Vortags laden, nutzen Sie den folgenden Code.
DATA: lv_vortag TYPE sy-datum.
lv_vortag = sy-datum - 1.
p_filename = |/tmp/actuals_{ lv_vortag }.csv|.
Speichern Sie die Änderungen und aktivieren Sie den DTP bzw. das InfoPackage.
Nun kann der Ladeprozess automatisch ausgeführt werden. Der Name der zu ladenden Datei wird jedes Mal aktualisiert. So wird sichergestellt, dass immer die neuste Datei geladen wird.