Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SAP Zugriff via Excel VBA | Herbers Excel-Forum

Forumthread: SAP Zugriff via Excel VBA

SAP Zugriff via Excel VBA
14.01.2010 14:43:25
Space

Hey,
ich würde gerne auf SAP zugreifen und aus einer bestimmten Tabelle Daten auslesen, die ich dann _
in Excel anzeigen lasse. Hierfür benötige ich allerdings den sogenannten "Funktionsbaustein" von _
SAP. Weiß jemand wie man den bekommen kann? Mir wurde gesagt eine Übersicht bekommt man mit der _
Transaktion SE37 für die ich allerdings keine Berechtigung habe. Kann man den Funktionsbaustein _ nicht einfach im offenen Fenster irgendwo ablesen. Hier ist mal mein Code, vielleicht hat ja jemand von euch auch schon mal mit VBA Excel auf SAP zugegriffen und eine Tabelle anzeigen lassen.


Private Sub CommandButton1_Click()
'Deklaration der Objekte und Variablen
Dim functionCtrl As Object          'Function Control (Sammelobjekt)
Dim sapConnection As Object         'Verbindungsobjekt
Dim theFunc As Object               'Function Objekt
'Erstellen eines Funktionsobjektes
Set functionCtrl = CreateObject("SAP.Functions")
'Kontakt zu SAP aufnehmen
Set sapConnection = functionCtrl.Connection
'Logon mit Initialwerten
sapConnection.Client = "000"
sapConnection.user = "SAPuser"
sapConnection.Language = "DE"
If sapConnection.logon(0, False) <> True Then
MsgBox "Keine Verbindung zum R/3!"
Exit Sub            'Programm beenden
End If
'Referenz auf Funktionsobjekt "FUNKTIONSBAUSTEIN"
Set theFunc = functionCtrl.Add("FUNKTIONSBAUSTEIN")
'Vorbereitung der Ausgabe auf EXCEL-Sheet
Worksheets(1).Select
Cells.Clear
'Deklaration
Dim customers As Object
Dim returnFunc As Boolean
Dim startzeil As Integer
Dim endcol As Integer
Dim the_name As String
startzeil = 1
'Festlegen der Importparameter für Funktionsaufruf
For start_char = Asc("A") To Asc("Z")
the_name = Chr$(start_char) + "*"
theFunc.exports("NAME1") = the_name
theFunc.exports("KUNNR") = "*"
returnFunc = theFunc.Call
die_exception = theFunc.Exception
If returnFunc = True Then
Set customers = theFunc.tables.Item("CUSTOMER_T")
endcol = 0
Call tt(the_name, customers, startzeil, endcol)
startzeil = endcol
Set customers = Nothing
Else
If die_exception = "NO_RECORD_FOUND" Then
Cells(startzeil, 1) = "Keine Werte vorhanden für " + the_name
startzeil = startzeil + 1
Else
MsgBox "Fehler beim Zugriff auf Funktion im R/3 ! "
Exit Sub
End If
End If
Next start_char
'Vebindung zum R/3 beenden !
functionCtrl.Connection.logoff
'Objekte und damit Speicherplatz freigeben
Set sapConnection = Nothing
Set functionCtrl = Nothing
MsgBox "Programm beendet!", 16, "Beenden"
End Sub

'Die Ausgabe der Ergebnisse erfolgt über ein seperates Modul mit dem Code:
Sub tt(aName As String, ByRef customers_table As Object, start_zeil As Integer, ByRef end_col As Integer)
'Anzeige des Tabellenkopfes
Cells(start_zeil, 1) = "KundenNr."
Cells(start_zeil, 2) = "Anrede "
Cells(start_zeil, 3) = "Kundenname " + aName
Cells(start_zeil, 4) = "PLZ"
Cells(start_zeil, 5) = "Ort"
Cells(start_zeil, 6) = "Tel.Nr "
'Hervorhebung der Fonts
Range(Cells(start_zeil, 1), Cells(start_zeil, 6)).Font.Bold = True
'Zeigt Inhalte der Kundentabelle an
bManyCustomers = False
If (bManyCustomers = False) Then
i = start_zeil + 2
For Each Customer In customers_table.Rows
Cells(i, 1) = Trim(Customer("KUNNR"))
Cells(i, 2) = Customer("ANRED")
Cells(i, 3) = Customer("NAME1")
Cells(i, 4) = Customer("PSTLZ")
Cells(i, 5) = Customer("ORT01")
Cells(i, 6) = Customer("TELF1")
i = i + 1
Next
End If
end_col = i
End Sub Das Login Fenster geht auf aber es kommt nach Eingabe der Zugangsdaten immer nur der Fehler RFC: error
Kann mir jemand sagen, was man dagegen machen kann. Wäre super, wenn sich jemand mal den Code vornehmen kann und etwas dazu sagen könnte. Ich habe mir den aus div. Tutorials zusammen kopiert und geschrieben.
Vielen, vielen Dank im Voraus!
Gruß
Space

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
;
Anzeige

Infobox / Tutorial

Zugriff auf SAP-Daten mit Excel VBA


Schritt-für-Schritt-Anleitung

Um mit Excel auf SAP zuzugreifen und Daten abzurufen, kannst du den folgenden VBA-Code verwenden. Vergewissere dich, dass du die nötigen Berechtigungen für den SAP-Zugriff hast. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Modul hinzufügen: Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Code einfügen: Kopiere den folgenden Code in das Modul:
Private Sub CommandButton1_Click()
    'Deklaration der Objekte und Variablen
    Dim functionCtrl As Object          'Function Control (Sammelobjekt)
    Dim sapConnection As Object         'Verbindungsobjekt
    Dim theFunc As Object               'Function Objekt

    'Erstellen eines Funktionsobjektes
    Set functionCtrl = CreateObject("SAP.Functions")

    'Kontakt zu SAP aufnehmen
    Set sapConnection = functionCtrl.Connection
    sapConnection.Client = "000"
    sapConnection.user = "SAPuser"
    sapConnection.Language = "DE"

    If sapConnection.logon(0, False) <> True Then
        MsgBox "Keine Verbindung zum R/3!"
        Exit Sub
    End If

    'Referenz auf Funktionsobjekt "FUNKTIONSBAUSTEIN"
    Set theFunc = functionCtrl.Add("FUNKTIONSBAUSTEIN")

    'Vorbereitung der Ausgabe auf EXCEL-Sheet
    Worksheets(1).Select
    Cells.Clear

    'Deklaration
    Dim customers As Object
    Dim returnFunc As Boolean
    Dim startzeil As Integer
    Dim endcol As Integer
    Dim the_name As String
    startzeil = 1

    'Festlegen der Importparameter für Funktionsaufruf
    For start_char = Asc("A") To Asc("Z")
        the_name = Chr$(start_char) + "*"
        theFunc.exports("NAME1") = the_name
        theFunc.exports("KUNNR") = "*"
        returnFunc = theFunc.Call
        die_exception = theFunc.Exception
        If returnFunc = True Then
            Set customers = theFunc.tables.Item("CUSTOMER_T")
            endcol = 0
            Call tt(the_name, customers, startzeil, endcol)
            startzeil = endcol
            Set customers = Nothing
        Else
            If die_exception = "NO_RECORD_FOUND" Then
                Cells(startzeil, 1) = "Keine Werte vorhanden für " + the_name
                startzeil = startzeil + 1
            Else
                MsgBox "Fehler beim Zugriff auf Funktion im R/3!"
                Exit Sub
            End If
        End If
    Next start_char

    'Verbindung zum R/3 beenden
    functionCtrl.Connection.logoff
    Set sapConnection = Nothing
    Set functionCtrl = Nothing
    MsgBox "Programm beendet!", 16, "Beenden"
End Sub

Sub tt(aName As String, ByRef customers_table As Object, start_zeil As Integer, ByRef end_col As Integer)
    'Anzeige des Tabellenkopfes
    Cells(start_zeil, 1) = "KundenNr."
    Cells(start_zeil, 2) = "Anrede "
    Cells(start_zeil, 3) = "Kundenname " + aName
    Cells(start_zeil, 4) = "PLZ"
    Cells(start_zeil, 5) = "Ort"
    Cells(start_zeil, 6) = "Tel.Nr "

    'Hervorhebung der Fonts
    Range(Cells(start_zeil, 1), Cells(start_zeil, 6)).Font.Bold = True

    'Zeigt Inhalte der Kundentabelle an
    i = start_zeil + 2
    For Each Customer In customers_table.Rows
        Cells(i, 1) = Trim(Customer("KUNNR"))
        Cells(i, 2) = Customer("ANRED")
        Cells(i, 3) = Customer("NAME1")
        Cells(i, 4) = Customer("PSTLZ")
        Cells(i, 5) = Customer("ORT01")
        Cells(i, 6) = Customer("TELF1")
        i = i + 1
    Next

    end_col = i
End Sub
  1. Makros aktivieren: Stelle sicher, dass die Makros in Excel aktiviert sind, damit dein SAP Excel Makro funktioniert.

  2. Button erstellen: Füge einen Button in dein Excel-Blatt ein, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • RFC: error: Dieser Fehler tritt häufig auf, wenn die Verbindung zu SAP fehlschlägt. Überprüfe deine Zugangsdaten und stelle sicher, dass du die erforderlichen Berechtigungen hast. Möglicherweise musst du auch die SAP-RFC-Verbindungen überprüfen.

  • Keine Verbindung zum R/3: Achte darauf, dass der SAP-Server erreichbar ist und dass die Netzwerkverbindungen korrekt konfiguriert sind.

  • Fehler beim Zugriff auf Funktion im R/3: Dies kann auf einen falschen Funktionsbaustein oder fehlende Berechtigungen hinweisen. Vergewissere dich, dass der Funktionsbaustein korrekt ist und dass du die erforderlichen Berechtigungen hast.


Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch mit Power Query in Excel versuchen, Daten aus SAP abzurufen. Diese Methode ist einfacher und erfordert keine Programmierkenntnisse. Du kannst über die SAP-Schnittstelle eine Verbindung herstellen und Daten importieren.


Praktische Beispiele

  1. SAP Daten in Excel importieren: Verwende den oben genannten VBA-Code, um Kundendaten abzurufen. Stelle sicher, dass du den Funktionsbaustein entsprechend anpasst.

  2. Excel mit SAP verknüpfen: Du kannst auch andere SAP-Transaktionen über VBA aufrufen, indem du den entsprechenden Funktionsbaustein verwendest.


Tipps für Profis

  • VBA-SAP-Logon: Speichere deine Logon-Daten nicht im Code, um Sicherheitsrisiken zu vermeiden. Verwende stattdessen Umgebungsvariablen oder sichere Methoden zur Eingabe von Benutzerdaten.

  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung in deinem VBA-Code, um Probleme leichter zu identifizieren und zu beheben.

  • Performance-Optimierung: Achte darauf, den Code zu optimieren, um eine flüssige Ausführung zu gewährleisten, insbesondere wenn du große Datenmengen abrufst.


FAQ: Häufige Fragen

1. Wie kann ich mit Excel auf SAP zugreifen?
Du kannst mit VBA und dem SAP-ActiveX-Steuerelement auf SAP zugreifen. Der oben bereitgestellte Code zeigt dir, wie du eine Verbindung herstellen und Daten abrufen kannst.

2. Was tun, wenn ich keine Berechtigung für die Transaktion SE37 habe?
In diesem Fall solltest du dich an deinen SAP-Administrator wenden und um die erforderlichen Berechtigungen bitten.

3. Welche SAP-Daten kann ich in Excel abrufen?
Du kannst nahezu alle Daten abrufen, für die du die Berechtigung hast, einschließlich Kunden-, Verkaufs- und Finanzdaten. Achte darauf, den richtigen Funktionsbaustein zu verwenden.

4. Gibt es eine Alternative zu VBA?
Ja, du kannst Power Query verwenden, um Daten aus SAP in Excel zu importieren, was eine benutzerfreundliche Alternative darstellt.

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