So können Ihre Benutzer ganz einfach Daten in SAP hochladen

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.

So erleichtern Sie die Entscheidungsfindung und gewinnen einen umfassenden Überblick über Ihr Geschäft! Mit meinem neuen Buch lernen Sie, SAP für die Unternehmensplanung einzurichten, zu nutzen und zu erweitern.

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.
Der Anwender kann Dateien über eine Weboberfläche hochladen
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.
Lokalisierung der Planungsfunktion
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.
Parameter der Planungsfunktion
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.
Vorschau der Daten
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).
InfoArea 0BWTCT_PLAN muss vorhanden sein
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.
Datei in den COFILES Ordner hochladen
Datei in den DATA Ordner hochladen
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ägeAnhängen den neuen Transport hinzu.
Transport anhängen
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.
Nicht passende Komponentenversion ignorieren


Unternehmensplanung mit SAP BPC

Planung mit SAP Business Planning and Consolidation leicht gemacht!

Mit diesem Buch lernen Sie, SAP BPC für die Unternehmensplanung einzurichten, zu nutzen und zu erweitern. Ich beantworte die zentralen Fragen von Projektteams, Beratern, IT und Anwendern – immer mit dem Blick auf die Anforderungen der Praxis.

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.
ABAP Klasse prüfen
Rufen Sie anschließend die Transaktion RSPLF1 (Funktionstyp Bearbeitung) auf und prüfen Sie, ob der Funktionstyp ZRSPL_FILE_UPLOAD vorhanden und aktiv ist.
Funktionstyp prüfen
In der Definition des Funktionstyps können Sie auch die Parameter, die im Original nur auf Englisch vorhanden sind, übersetzen.
Lokalisierung der Planungsfunktion
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.
Service aktivieren
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.
Parameter werden generiert

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.
Felder des Advanced DSOs
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.
Aggregationsebene
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.
Filter File Upload
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.
Planungsfunktion anlegen
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.
Parameter der Planungsfunktion
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.
Character Format
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

Overwrite Modus
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.
Skip Header
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.
Konvertierungseinstellungen
Die wichtigste Einstellung ist jedoch File Format. Hier legen Sie die Struktur der hochzuladenden Datei und die Reihenfolge der Merkmale fest.
Format der Datei festelegen
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.
InfoObjekte bestimmen
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.
Dateipfad definieren
In den Feldern CSV Data Separator und CSV Escape Character können Sie das in Ihrer Datei verwendete Trennzeichen und das Escape-Zeichen definieren.
CSV Einstellungen
Schließlich können Sie im Feld Check Duplicates die Behandlung von doppelten Werten bestimmen.
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.
Planungssequenz für File Upload

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.
WebDynpro Anwendung aufrufen
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.
Der Anwender kann Dateien über eine Weboberfläche hochladen
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.
Vorschau der Daten
Die Daten werden gespeichert und stehen in allen Anwendungen zur Verfügung. Für den Anwender sieht es also wirklich ganz einfach aus.
Datenanzeige

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.
Fordere SAP Performance Tricks an

Jetzt anfordern!

* Pflichtfeld
 
Kein SPAM. Ich hasse Spam genau so wie du.

Bildquelle: Photo by Eugene Chystiakov from Pexels

Denis Reis ist Business Intelligence Consultant und gibt als Buchautor sein Wissen rund um den SAP Projektalltag weiter. Wenn Sie tatkräftige Unterstützung bei Ihren SAP BI Projekten benötigen, können Sie ihn über Xing, LinkedIn oder Facebook kontaktieren.
Des Weiteren unterrichtet er Projektmanagement und Controlling an der Wiesbaden Business School. Der aus Düsseldorf stammende Familienmensch zählt zu denjenigen, die auf komplizierte Darstellungen verzichten und das Ganze auf den Punkt bringen.

0 Kommentare

Dein Kommentar

Want to join the discussion?
Feel free to contribute!

Kommentar verfassen