Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA auf SAP R3 zugreifen ?

VBA auf SAP R3 zugreifen ?
14.08.2019 08:35:37
jana
Hallo Mitstreiter..
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
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 09:00:54
ede
Hallo Jana,
anbei mal ein Beispiel, wie man den Inhalt einer Tabelle nach Excel holt:

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
ede
Anzeige
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 09:13:41
jana
Ich weis nicht wie ich das implementieren soll...
also ich bin grad bisschen überfordert
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 09:23:45
ede
-in eine neu Exceldatei den VBE-Editor öffnen
-ein neues Modul einfügen
-den Code der beiden Procerufen in das Modul einfügen
-Deine SAP-Login-Parameter anpassen
-die Datei Speichern unter DeinDateiName.xlsm
-die Procedure ReadTable() ausführen
gruss
ede
Anzeige
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 09:48:28
jana
hmm noch ne kurze frage, woher weis es denn welche tabelle ich möchte ?
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 09:54:40
ede
dann solltest Du mit deinem SAP-Administrator mal reden, Du musst doch wissen, welche SAP-Tabellen du haben möchtest!
gruss
ede
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 09:56:04
jana
Ja ne ich meinte eher wo ich meine Tabelle eintippen muss aber ist ok habs gefunden.
jedoch kommt der Fehler :
KEINE RFC-BERECHTIGUNG für FUNKTIONSBAUSTEIN RFCPING ?
Anzeige
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 09:59:00
ede
dann wirst DU wohl mit Deinem SAP-User nicht die notwendigen Berechtigungen haben!
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 10:02:37
jana
Ist es 100% ein Berechtigungs fehler oder kann es sein das ich bei der Anmeldung falsche server namen oder co angegeben habe ?
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 10:06:10
ede
Wenn Du zur Abfrage des Tabellennamen kommst, dann ist die SAP-Anmeldung durch.
Anzeige
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 10:08:31
ede
die Procedure "Anmelden_an_SAP()" wird eigentlich nicht gebraucht. Eigentlich müsste ein Dialog zur SAP-Anmeldung kommen, wenn man ReadTable() startet.
AW: VBA auf SAP R3 zugreifen ?
14.08.2019 10:24:36
jana
Ja genau da kommt da Dialog Fenster, melde mich an aber der Fehler erscheint dann...
Naja dann muss ich eben zum IT MANN
Dennoch vielen Dank für deine Hilfe
warst mir eine hilfe !!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zugriff auf SAP R3 mit Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und den VBE-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Neues Modul einfügen: Klicke auf "Einfügen" und dann auf "Modul".

  3. 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
  4. 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
  5. Speichern: Speichere die Datei unter einem Namen mit der Endung .xlsm.

  6. Code ausführen: Führe die ReadTable() Prozedur aus, um Daten aus SAP abzurufen.


Häufige Fehler und Lösungen

  • 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.


Alternative Methoden

Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch:

  • Excel-Daten aus SAP abrufen: Nutze SAP-Add-Ins wie SAP Analysis for Office, die eine benutzerfreundliche Schnittstelle bieten, um Daten einfacher in Excel zu importieren.
  • SAP GUI Scripting: Mit dieser Methode kannst Du Aktionen in der SAP-GUI aufzeichnen und wiederholen, um Daten in Excel zu übertragen.

Praktische Beispiele

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:

  • Ändere den Parameter im InputBox zu MARA, um alle Materialstammdaten in Excel zu importieren.

Tipps für Profis

  • 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

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige