Dies hängt davon ab, welche Art von Zugriff Sie auf Ihr SAP-System haben. Ein ABAP-Programm, das die Daten und/oder einen RFC exportiert, den Ihr Makro aufrufen kann, um die Daten direkt zu erhalten oder SAP die Datei erstellen zu lassen, ist wahrscheinlich am besten.
Jedoch als allgemeine Regel Menschen auf der Suche nach dieser Art von Antwort suchen nach einer sofortigen Lösung, die ihre IT-Abteilung monatelang keine Anpassung ihres SAP-Systems erfordern.
In diesem Fall möchten Sie wahrscheinlich SAP GUI Scripting verwenden. Mit SAP GUI Scripting können Sie das Windows SAP GUI auf die gleiche Weise automatisieren, wie Sie Excel automatisieren. Tatsächlich können Sie das SAP GUI direkt von einem Excel-Makro aus aufrufen. Lesen Sie mehr darüber here. Das SAP GUI verfügt ähnlich wie Excel über ein Makro-Aufzeichnungstool. Es zeichnet Makros in VBScript auf, das fast identisch mit Excel VBA ist und normalerweise direkt in ein Excel-Makro kopiert und eingefügt werden kann.
Beispielcode
Hier ist ein einfaches Beispiel basierend auf einem SAP-System, das ich Zugriff habe.
Public Sub SimpleSAPExport()
Set SapGuiAuto = GetObject("SAPGUI") 'Get the SAP GUI Scripting object
Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI
Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
Set session = SAPCon.Children(0) 'Get the first session (window) on that connection
'Start the transaction to view a table
session.StartTransaction "SE16"
'Select table T001
session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").Text = "T001"
session.findById("wnd[0]/tbar[1]/btn[7]").Press
'Set our selection criteria
session.findById("wnd[0]/usr/txtMAX_SEL").text = "2"
session.findById("wnd[0]/tbar[1]/btn[8]").press
'Click the export to file button
session.findById("wnd[0]/tbar[1]/btn[45]").press
'Choose the export format
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").select
session.findById("wnd[1]/tbar[0]/btn[0]").press
'Choose the export filename
session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "test.txt"
session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Temp\"
'Export the file
session.findById("wnd[1]/tbar[0]/btn[0]").press
End Sub
Script Recording
zu helfen Um die Namen von Elementen wie wnd[1]/tbar[0]/btn[0]
finden Sie Skript Aufnahme verwenden können. Klicken Sie auf die Schaltfläche anpassen lokalen Layout, es sieht wahrscheinlich ein bisschen wie folgt aus:
Dann finden Sie den Menüpunkt Skript Aufnahme und Wiedergabe.
Innerhalb der More
Schaltfläche können Sie sehen/ändern Sie die Datei, die das VB-Skript aufgezeichnet wird. Das Ausgabeformat ist ein bisschen chaotisch, es zeichnet Dinge wie Text auswählen, in einem Textfeld klicken, usw.
Edit: Frühe und späte
Die bereitgestellten Skript Bindung sollte, wenn sie direkt in ein VBA-Makro kopiert arbeiten. Es verwendet späte Bindung, die Linie Set SapGuiAuto = GetObject("SAPGUI")
definiert das SapGuiAuto-Objekt.
Wenn Sie jedoch die frühe Bindung verwenden möchten, damit Ihr VBA-Editor möglicherweise die Eigenschaften und Methoden der von Ihnen verwendeten Objekte anzeigt, müssen Sie im Installationsordner von SAP GUI einen Verweis auf sapfewse.ocx
hinzufügen.
Sie geben nicht das Produkt an, von dem Sie Daten exportieren (SAP ist eine Firma, die eine Unmenge von Produkten liefert - über welche sprechen Sie?). Sie geben nicht an, auf welche Berichte oder welche Berichtstechnik Sie Ihre Formatierung anwenden. Es ist schwer, diese Frage ohne weitere Informationen zu beantworten. – vwegert