Folgende Frage und bitte um Hilfe.
Kann ich mit Excel VBA auf SAP-R3 // oder SAP-BO zugreifen
und evtl Die Tabellen runterladen kann in einen mir ausgewählten Ordner.
Wenn ja wie würde der Code aussehn ?!!
Besten Dank für jede Hilfe !
Jana
Sub ReadTable()
Dim FUBAU_rfc_read_table As Object
Dim functionCtrl As Object
Dim T_I_Options As Object
Dim T_I_Fields As Object
Dim T_E_Data As Object
Dim i, x As Integer
Dim strDataRow As String
Dim DataRow As Variant
Dim Col As Boolean
Col = False
Set functionCtrl = CreateObject("SAP.Functions")
Set FUBAU_rfc_read_table = functionCtrl.Add("RFC_READ_TABLE")
With FUBAU_rfc_read_table
.exports("QUERY_TABLE") = InputBox("Bitte Tabellenname eingeben")
.exports("DELIMITER") = "|" 'Delimiter
End With
Set T_I_Options = FUBAU_rfc_read_table.tables("OPTIONS")
Set T_I_Fields = FUBAU_rfc_read_table.tables("FIELDS")
Set T_E_Data = FUBAU_rfc_read_table.tables("DATA")
'Aufruf des FUBAs
ret = FUBAU_rfc_read_table.call
'Übetragen der Daten in Excel-Tabelle (z.B. immer in Tabelle1)
If T_E_Data.RowCount > 0 And ret = True Then
For i = 1 To T_E_Data.RowCount
strDataRow = T_E_Data(i, 1)
DataRow = Split(strDataRow, "|")
'Spaltenüberschriften an Excel übergeben
If Col = False Then
For x = 0 To UBound(DataRow)
Tabelle1.Cells(1, x + 1).Value = T_I_Fields(x + 1, 1)
Next x
Col = True
End If
For x = 0 To UBound(DataRow)
Tabelle1.Cells(i + 1, x + 1).Value = DataRow(x)
Next x
Next i
End If
End Sub
Logindaten für DEIN SAP SYSTEM anpassen
Public Sub Anmelden_an_SAP()
SAP_Anmeldung = False
Set functionCtrl = CreateObject("SAP.Functions")
Set SAP_Connection = functionCtrl.Connection
SAP_Connection.ApplicationServer = "DEINSERVER"
SAP_Connection.SystemNumber = "20"
SAP_Connection.System = "DEINSYSTEM"
SAP_Connection.Client = "002"
SAP_Connection.User = "DeinName" ' SAP_UserID
SAP_Connection.Password = "DeinKennwort" 'SAP_Passwort
If SAP_Connection.Logon(0, True) True Then
'Nur wenn keine Verbindung zu SAP kommt eine Fehlermeldung
SAP_Connection.LastError
SAP_Anmeldung = False
Else
SAP_Anmeldung = True
End If
'MsgBox SAP_Anmeldung
End Sub
grussÖffne Excel und den VBE-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
Neues Modul einfügen: Klicke auf "Einfügen" und dann auf "Modul".
Code einfügen: Kopiere den folgenden VBA-Code in das neue Modul:
Sub ReadTable()
Dim FUBAU_rfc_read_table As Object
Dim functionCtrl As Object
Dim T_I_Options As Object
Dim T_I_Fields As Object
Dim T_E_Data As Object
Dim i, x As Integer
Dim strDataRow As String
Dim DataRow As Variant
Dim Col As Boolean
Col = False
Set functionCtrl = CreateObject("SAP.Functions")
Set FUBAU_rfc_read_table = functionCtrl.Add("RFC_READ_TABLE")
With FUBAU_rfc_read_table
.exports("QUERY_TABLE") = InputBox("Bitte Tabellenname eingeben")
.exports("DELIMITER") = "|" 'Delimiter
End With
Set T_I_Options = FUBAU_rfc_read_table.tables("OPTIONS")
Set T_I_Fields = FUBAU_rfc_read_table.tables("FIELDS")
Set T_E_Data = FUBAU_rfc_read_table.tables("DATA")
'Aufruf des FUBAs
ret = FUBAU_rfc_read_table.call
'Übetragen der Daten in Excel-Tabelle (z.B. immer in Tabelle1)
If T_E_Data.RowCount > 0 And ret = True Then
For i = 1 To T_E_Data.RowCount
strDataRow = T_E_Data(i, 1)
DataRow = Split(strDataRow, "|")
'Spaltenüberschriften an Excel übergeben
If Col = False Then
For x = 0 To UBound(DataRow)
Tabelle1.Cells(1, x + 1).Value = T_I_Fields(x + 1, 1)
Next x
Col = True
End If
For x = 0 To UBound(DataRow)
Tabelle1.Cells(i + 1, x + 1).Value = DataRow(x)
Next x
Next i
End If
End Sub
SAP-Login anpassen: Füge den folgenden Code hinzu, um Dich bei Deinem SAP-System anzumelden:
Public Sub Anmelden_an_SAP()
SAP_Anmeldung = False
Set functionCtrl = CreateObject("SAP.Functions")
Set SAP_Connection = functionCtrl.Connection
SAP_Connection.ApplicationServer = "DEINSERVER"
SAP_Connection.SystemNumber = "20"
SAP_Connection.System = "DEINSYSTEM"
SAP_Connection.Client = "002"
SAP_Connection.User = "DeinName" ' SAP_UserID
SAP_Connection.Password = "DeinKennwort" 'SAP_Passwort
If SAP_Connection.Logon(0, True) > 0 Then
SAP_Anmeldung = False
Else
SAP_Anmeldung = True
End If
End Sub
Speichern: Speichere die Datei unter einem Namen mit der Endung .xlsm.
Code ausführen: Führe die ReadTable() Prozedur aus, um Daten aus SAP abzurufen.
KEINE RFC-BERECHTIGUNG für FUNKTIONSBAUSTEIN RFCPING: Dieser Fehler tritt auf, wenn Dein SAP-User nicht über die notwendigen Berechtigungen verfügt. Bitte wende Dich an Deinen SAP-Administrator.
Falscher Servername oder Systemnummer: Überprüfe Deine Anmeldedaten. Falsche Angaben führen oft zu Verbindungsproblemen. Stelle sicher, dass die Parameter in der Anmelden_an_SAP() Prozedur korrekt eingegeben sind.
Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch:
Ein Beispiel für eine typische Excel-SAP-Integration könnte die Abfrage von FUBAS Live Tabellen sein. Du kannst beispielsweise die Tabelle MARA (Materialstammdaten) abrufen:
InputBox zu MARA, um alle Materialstammdaten in Excel zu importieren.Debugging: Nutze Debug.Print im VBA, um Variablenwerte zu überprüfen und Fehler zu finden.
SAP-Farben ändern: Wenn Du die Darstellung Deiner Excel-Daten optimieren möchtest, kannst Du über VBA die Formatierung ändern:
Tabelle1.Range("A1:Z100").Interior.Color = RGB(255, 255, 0) ' Ändert die Hintergrundfarbe auf Gelb
1. Frage
Kann ich mehrere Tabellen gleichzeitig abfragen?
Antwort: Ja, Du kannst die ReadTable() Prozedur in einer Schleife aufrufen, um mehrere Tabellen hintereinander abzurufen.
2. Frage
Was ist der Unterschied zwischen SAP R3 und SAP E3?
Antwort: SAP R3 ist die ältere Version des SAP-Systems, während SAP E3 eine modernisierte Variante ist, die verbesserte Funktionen und Benutzeroberflächen bietet.
3. Frage
Wie kann ich Daten aus SAP in eine Pivot-Tabelle umwandeln?
Antwort: Nach dem Abrufen der Daten in Excel kannst Du die Funktion "PivotTable" verwenden, um Deine Daten zu analysieren und zu visualisieren.