So können Ihre Benutzer ganz einfach Daten in SAP hochladen
Oft ist es gewünscht, dass Benutzer während des Planungsprozesses Daten hochladen können. Der Weg über Flatfile DataSource, Transformation und DTP ist jedoch wenig benutzerfreundlich. In diesem Beitrag zeige ich Ihnen, wie Sie einen einfache und benutzerfreundliche Lösung implementieren können.
SAP stellt mit der Note 2053696 eine vollständig entwickelte Lösung für Upload und Download von Dateien in verschiedensten Formaten. Dabei werden verschiedene Codierungen und Delta Methoden unterstützt. So können Sie die Lösung schnell und ohne viel Entwicklungsaufwand einsetzen.
Anschließend können die Endanwender über eine web-basierte Oberfläche die Daten direkt in Ihre Planungsanwendung laden. Dabei kann der Benutzer die Datei mit den Werten bequem auswählen und einfach auf den Button Upload klicken. Alles Weitere übernimmt das System für ihn. Die Daten werden geladen und geprüft. Fall nötig, werden die Daten in das richtige Format konvertiert. Wenn die Daten in Ordnung sind, kann der Planer die Änderungen speichern. Anschließend stehen die Daten sofort in allen Planungsanwendungen und Planqueries zur Verfügung.
Für Excel-begeisterte kann der Upload auch über Excel erfolgen. Dabei können die hochzuladenden Daten von dem Anwender direkt in ein Excel Blatt eingegeben werden.
Folgende Features sind enthalten:
- Verschiedene Dateiformate werden unterstützt: CSV, XLS, XML, Tabulator-getrennte Textdateien oder Dateien mit fester Länge
- Verschiedene Kodierungen: Unicode, UTF-8, UTF-16 und über 100 andere
- Verschiedene Delta Modi: Daten können hinzugefügt oder überschrieben werden
- Unterstützt Dateien mit und ohne Header Zeile
- Zahlen und Daten werden automatisch konvertiert
- Merkmalswerte können gemäß den Einstellungen des InfoObjekts automatisch konvertiert werden, z.B. durch ALPHA Konvertierung
- Kennzahlen können entsprechend der Währungseinstellungen automatisch konvertiert werden
- Flexible Definition der Felder und deren Reihenfolge in der Upload Datei
- Antivirus Scan (falls mit SAP NetWeaver installiert)
- Direkter Upload und Download der Dateien ohne Eingabeaufforderungen möglich
Nachfolgend führe ich Sie Schritt für Schritt durch den Prozess. Zunächst muss der durch SAP ausgelieferte Planungsfunktionstyp installiert werden. Dieser ist in ABAP implementiert und enthält die gesamte Logik, um die geladene Datei zu prozessieren. Dabei werden z.B. die externen Formate in das interne SAP NetWeaver Format konvertiert und verschiedene Konsistenzprüfungen durchgeführt. Wie auch bei anderen Planungsfunktionen, werden dabei existierende Merkmalsbeziehungen und Datenscheiben berücksichtigt.
Im zweiten Teil geht es um die Modellierung der Planungsanwendung. Dabei legen wir gemeinsam, basierend auf dem neuen Planungsfunktionstyp, eine Planungsfunktion und eine Planungssequenz an. In der Planungsfunktion können Sie alle gewünschten Einstellungen wie Kodierung, Deltamechanismus und Trennzeichen anpassen.
Anschließend erläutere ich die web-basierte Benutzeroberfläche. Diese ist eigentlich selbsterklärend und intuitiv bedienbar. Der Benutzer kann den Namen der Datei eingeben oder auf seinem Computer auswählen. Anschließend wird der Upload ausgeführt. Die Anwendung zeigt alle Nachrichten, die durch die darunterliegende Planungsfunktion generiert werden. Falls Fehler auftreten, kann der Benutzer diese korrigieren und die Datei erneut hochladen. Wenn der Upload erfolgreich war, erhält der Benutzer eine Vorschau. Er kann die Daten speichern oder die Änderungen verwerfen.
Schließlich zeige ich Ihnen, wie Sie die Lösung in Excel, z.B. Analysis for Office, nutzen können.
Neuen Planungsfunktionstyp installieren
Bevor wir mit der eigentlichen Installation starten, müssen einige Vorkehrungen getroffen werden. Prüfen Sie bitte zuerst, ob die InfoArea 0BWTCT_PLAN
existiert und aktiv ist. Fall es nicht der Fall ist, aktivieren Sie diese aus dem BI Content (Transaktion RSA1
, Reiter BI Content).
Prüfen Sie außerdem über die Transaktion RSD1
, ob das Merkmal 0TCTIOBJNM
vorhanden und aktiv ist. Dieses Merkmal wird zur Definition der Dateifelder in der Planungsfunktion genutzt.
Nun kann der neue Planungsfunktionstyp installiert werden. In der Note 2053696 stellt SAP zwei Transportdateien zur Verfügung. Laden Sie diese herunter und kopieren Sie die Dateien in das Transportverzeichnis Ihres BW Systems. Dazu können Sie den Funktionsbaustein ARCHIVFILE_CLIENT_TO_SERVER
(Transaktion SE37
) nutzen. Die K* Datei enthält die Metadaten und die R* Datei die tatsächlichen Objekte. Laden Sie die K* Datei in den COFILES
Ordner und die R* Datei in den Ordner DATA
Ihres Transportverzeichnisses. Sie können die Verzeichnisse über die Transaktion AL11
einsehen.
Rufen Sie nun die Transaktion STMS
(Transport Management) auf und selektieren Sie Ihr System. Fügen Sie bitte anschließend über Zusätze
→ Weitere Aufträge
→ Anhängen
den neuen Transport hinzu.
Nun können Sie den Transport wie gewohnt importieren. Wenn Ihre Version des BW Systems höher als 7.31 ist oder Sie SAP BPC 11 für BW/4HANA nutzen, wählen Sie bitte im Reiter Optionen den Eintrag Nicht passende Komponentenversion ignorieren aus.
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.
Prüfen Sie bitte nach dem Import, ob alle benötigten Objekte aktiviert wurden. Rufen Sie bitte die Transaktion SE24
(ABAP Class Builder) auf und prüfen Sie, ob die ABAP Klasse ZCL_RSPLF_FILE_UPLOAD
aktiv ist.
Rufen Sie anschließend die Transaktion RSPLF1
(Funktionstyp Bearbeitung) auf und prüfen Sie, ob der Funktionstyp ZRSPL_FILE_UPLOAD
vorhanden und aktiv ist.
In der Definition des Funktionstyps können Sie auch die Parameter, die im Original nur auf Englisch vorhanden sind, übersetzen.
Schließlich müssen wir die benötigten Services aktivieren. Bitte rufen Sie die Transaktion SICF
(Pflege des HTTP-Service-Baums) auf. Bitte suchen Sie nach dem Servicenamen ZRSPLF_FILE*
und aktivieren Sie über das Kontextmenü den Service ZRSPLF_FILE_UPLOAD_V3
.
Anschließend müssen Stammdaten generiert werden. Diese dienen als Parameter in den Einstellungen der Planungsfunktion. Sie können die Stammdaten über den Funktionsbaustein ZRSPLF_FILE_UPLOAD_MASTER_DATA (Transaktion SE37) automatisch generieren. Bitte beachten Sie, dass die Texte nur auf Englisch generiert werden. Sie können jedoch manuell die Texte der jeweiligen Parameter auf Deutsch pflegen. Sie finden die dazugehörigen InfoObjekte im Katalog ZIP_FILE_UPLOAD_CHA
.
Planungsfunktion und -sequenz modellieren
Nachdem der Planungsfunktionstyp erfolgreich installiert wurde, kann die eigentliche Planungsfunktion angelegt werden. In unserem Beispiel verwenden wir ein Advanced DSO als Basis.
Auf dem Advanced DSO wird eine Aggregationsebene angelegt, die über die Felder verfügt, die wir auch bei dem File Upload füllen möchten.
Basierend auf der Aggregationsebene legen wir einen Filter an. Der Filter wird genutzt, um die Daten während der Ausführung der Planungsfunktion zu sperren. Wenn Sie keinen Filter definieren, werden alle Daten gesperrt! Wir möchten jedoch nur die Auswahl sperren, die wir zum Upload nutzen. Ferner soll diese Auswahl flexibel sein. Daher definieren wir zwei Variablen, für Version und Kalenderjahr, die der Benutzer bei der Ausführung mit seinen Werten befüllen kann.
Nun wir die eigentliche Planungsfunktion angelegt. Da ich zu faul war, den Typ der Planungsfunktion und die Stammdaten zu lokalisieren, melde ich mich auf Englisch an. Anschließend lege ich eine neue Planungsfunktion vom Typ File Upload an.
Im nächsten Schritt werden die Parameter der Planungsfunktion festgelegt. Diese können Sie auch mithilfe von Variablen zu einem gewissen Grad flexibel gestalten. Lediglich die Reihenfolge der InfoObjekte muss gewahrt bleiben.
Im Feld Character Format
können Sie von über 100 verschiedenen Kodierungen auswählen. Unsere Datei ist im UTF-8 kodiert, daher wählen wir DEFAULT
als Parameter. Wie der Name schon sagt, ist es auch die vorgeschlagene Standardeinstellung.
Im Feld Overwrite Data
, können Sie zwischen verschiedenen Upload Modi wählen:
- # – hochgeladene Daten werden zu den existierenden Daten hinzugefügt
- X – vorhandene Werte werden überschrieben. Falls im Ziel bereits Werte existieren, die nicht in der Datei enthalten sind, werden diese gelöscht
- D – Delta Modus. Vorhandene Werte werden überschrieben. Wenn aber Werte im Ziel existieren, die nicht in der Datei enthalten sind, werden diese beibehalten
Im Feld Skip Header
können Sie auswählen, ob Ihre Datei keine Header Zeile enthält oder ob eine Zeile mit der Beschreibung oder technischen Namen vorhanden ist.
In den Einstellungen Convert Fields
und Convert Amounts
können Sie festlegen, ob eine Konvertierung erfolgen soll oder ob die Felder bereits im internen SAP Format vorliegen.
Die wichtigste Einstellung ist jedoch File Format
. Hier legen Sie die Struktur der hochzuladenden Datei und die Reihenfolge der Merkmale fest.
Wenn die Stammdaten des InfoObjekts 0TCTIOBJNM
gepflegt sind, können Sie das Merkmal aus der Liste auswählen. Alternativ können Sie es einfach in das Feld Direct Input eingeben. Wen Sie Kommentare (Merkmale als Kennzahlen) hochladen möchten, geben Sie 1KYF_[NAME]
in das Feld ein.
Der Parameter File Name
wird nur in SAP GUI oder Server-basiertem Upload genutzt, z.B. in der Transaktion RSPLAN
oder BEx Analyzer. Nicht jedoch in der Web Dynpro Applikation. Hier können Sie den exakten Pfad der Datei definieren. Wenn Sie PROMPT
auswählen, erscheint bei dem Ausführend der Planungssequenz ein Pop-Up zum Auswählen der Datei. Dieser Parameter ist zum Testen der Planungsfunktion sehr nützlich. Wenn Sie nichts eingeben, versucht die Funktion die Datei SAP_BEX_FILE_UPLOAD.txt
aus Ihrem SAP Verzeichnis (normalerweise C:\Users[Benutzer]\Documents\SAP\SAP GUI) hochzuladen.
In den Feldern CSV Data Separator
und CSV Escape Character
können Sie das in Ihrer Datei verwendete Trennzeichen und das Escape-Zeichen definieren.
Schließlich können Sie im Feld Check Duplicates
die Behandlung von doppelten Werten bestimmen.
Nachdem die Konfiguration der Planungsfunktion abgeschlossen ist, legen wir eine Planungssequenz an. Diese vereint den zuvor angelegten Filter und die Planungsfunktion. Der Name der Planungssequenz dient auch als Überschrift der Webanwendung.
Wenn Sie zuvor den Parameter PROMPT
beim Feld File Name
eingegeben haben, können Sie die Planungsfunktion in diesem Schritt testen. Geben sie dazu die definierten Variablen an. Wenn gewünscht, können Sie auch andere Planungsfunktionen an die Sequenz anhängen. So können Sie zum Beispiel eine FOX Formel einfügen, die die hochgeladenen Daten anhand bestimmter Regeln prüft.
Webanwendung nutzen
Fast geschafft. Die Planungsfunktion ist angelegt und funktioniert wie gewünscht. Allerdings muss ein benutzerfreundlicheres Interface her. Hier kommt die webbasierte WebDynpro Anwendung ins Spiel. Diese können Sie über den folgenden Link aufrufen:
https://[Server]:[Port]/sap/bc/webdynpro/sap/zrsplf_file_upload_v3?
planning_sequence=[Name der Planungssequenz]
Wenn Sie den Server sowie den Port nicht kennen, können Sie die Anwendung über die Transaktion SE80
(Object Navigator) starten. Wählen Sie dazu ZRSPLF_FILE_UPLOAD_V3
als Web-Dynpro-Komponente aus. Übrigens, in dem View FILE_UPLOAD_VIEW
können Sie das Interface lokalisieren.
Wählen Sie bitte in der Webanwendung die gewünschten Variablen und selektieren Sie die Datei, die Sie hochladen möchten. Klicken Sie anschließend auf Upload.
Es erscheint eine Vorschau der Daten. Wenn Sie mit dem Ergebnis zufrieden sind, können Sie die Daten über Save speichern. Über Undo werden die Änderungen verworfen.
Die Daten werden gespeichert und stehen in allen Anwendungen zur Verfügung. Für den Anwender sieht es also wirklich ganz einfach aus.
Einbindung in Excel
Sie können den Link zur WebDynpro in Ihren Webanwendungen nutzen. Wenn Sie die Lösung auch in Ihrer Excel Anwendung einbinden möchten, können Sie zwischen zwei Ansätzen wählen.
So können Sie die WebDynpro Anwendung über einen Mausklick starten.
Private Declare Function ShellExecute Lib _
"shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Private Const SW_SHOW = 1
Private Sub CommandButton1_Click()
Dim hBrowse As Long
Dim url As String
url = "https://[server]:[port]/sap/bc/webdynpro/sap/zrsplf_file_upload_v3?sap-language=EN&planning_sequence=[sequence]&show_messages=WEXA"
hBrowse = ShellExecute(0&, "open", url, "", "", SW_SHOW)
End Sub
Alternativ kann der Anwender die Daten auch in ein separates Arbeitsblatt in Excel eingeben und einen Dateinamen auf einer Festplatte im Netzwerk bestimmen. Dieser kann aber auch vorgegeben werden. Der Dateipfad wird an die Planungsfunktion übergeben. Anschließend liest das folgende Makro die Daten aus, speichert diese in der Datei und lädt die Datei hoch.
Sub File_Upload()
Dim shtMain As Worksheet
Dim shtSource As Worksheet
Dim shtTarget As Worksheet
Dim strFileName As String
Dim fileSystem As Object
Dim fileObject As Object
Dim lResult As Long
' Path to network share (must be mapped to BW application server as well)
Const strFilePath_Upload As String = "\\server\File_upload\"
Application.ScreenUpdating = False
On Error GoTo ErrorHandler
' Location of file name in current workbook
Set shtMain = ActiveWorkbook.Worksheets("Main")
strFileName = strFilePath_Upload & shtMain.Cells(1, 1)
' Location of upload data in current workbook
Set shtSource = ActiveWorkbook.Worksheets("File_upload")
' Add temporary workbook
Workbooks.Add
Set shtTarget = ActiveWorkbook.Worksheets(1)
shtTarget.Select
' Copy upload data to temporary workbook
shtSource.Activate
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
shtTarget.Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
' If file already exists, delete it
On Error Resume Next
Set fileSystem = CreateObject("Scripting.FileSystemObject")
Set fileObject = fileSystem.GetFile(strFileName)
fileObject.Delete
On Error GoTo ErrorHandler
' Save temporary workbook to file
shtTarget.SaveAs filename:=strFileName, FileFormat:=xlTextWindows
' Close temporary workbook
ActiveWorkbook.Close SaveChanges:=False
shtMain.Activate
Application.ScreenUpdating = True
' Execute planning function for file upload
lResult = Application.Run("SAPExecutePlanningSequence", "PS_1")
Exit Sub
' Error handling
ErrorHandler:
Application.ScreenUpdating = True
MsgBox "Error during file upload:" & Err.Description, vbCritical
End Sub
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.
Bildquelle: Photo by Eugene Chystiakov from Pexels
Hallo Denis,
die SAP hat den Hinweis 2053696 aktualisiert und ihn als obsolet gekennzeichnet. Im dem Zuge gibt es einen Verweis auf den Funktionstyp 0RSPL_FILE_UPLOAD_AO.
Viele Grüße
Tobias
Ja, das ist eine Planungsfunktion, die man in Analysis for Office nutzen kann.
Gibt es auch einen Funktionstyp, den ich weiterhin über Webdynpro oder besser noch in Lumira nutzen kann?