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

Forumthread: VBA - SAP Daten auslesen

VBA - SAP Daten auslesen
22.07.2021 13:47:26
MarC
Hallo zusammen,
ich habe auf mehreren Internetseiten gelesen das die Möglichkeit besteht Daten aus SAP in Excel zu laden. Leider gibt es hier kein fertiges Skript oder eine Anleitung an der man sich entlang hangeln kann, um so etwas selber zu erstellen.
Hat jemand von euch Erfahrung damit? Wenn mir hier jemand helfen könnte wäre ich sehr dankbar. Ich muss fast jeden Tag die Kosten tracken und auswerten und das dauert locker 1 - 2 Stunden. Wenn ich die Daten per Makro laden könnte würde ich mir da sehr viel Zeit sparen.
Weiß jemand wie ich da vorgehen kann und bzw. was hier alles benötigt wird?
Grüße
MarC
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - SAP Daten auslesen
22.07.2021 14:03:34
ede
Hallo MarC,
hab das mal vor vielen Jahren für eine SAP-Tabelle gemacht, anbei der CODE, wobei du die sapConnection. auf dein SAP-System anpassen musst:

Sub SAP_read_table()
Dim functionCtrl As Object
Dim sapConnection As Object
Dim FUBAU_rfc_read_table 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 sapConnection = functionCtrl.Connection
sapConnection.Client = "999"
sapConnection.User = "DEIN_SAP-USERNAME"
sapConnection.Password = InputBox("Bitte Kennwort eingeben") '
sapConnection.Language = "DE"
sapConnection.SystemNumber = "20"
sapConnection.System = "DEIN_SYSTEM"
sapConnection.ApplicationServer = "DEIN_SAP_SERVER"
If sapConnection.Logon(1, True)  True Then
MsgBox "Keine Verbindung zum SAP!"
Exit Sub
End If
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
'.exports("ROWCOUNT") = 100                 ' Anzahl an Datensätze
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
gruss
ede
Anzeige
AW: VBA - SAP Daten auslesen
22.07.2021 14:12:06
MarC
Oh Super schon mal vielen Dank. Der unten abgebildete Teil muss von mir bzw. mit meinen Daten gefüllt werden. Da schau ich mal das ich die in Erfahrung bringe.
Was ich noch gar nicht verstehe bzw. mir fehlt hier die Vorstellung wie sage ich Excel welche Kostenelemente ich benötige. Wenn ich ins SAP gehe klicke ich ja nur meinen Favorit an und gebe dann das Element an das ich benötige. Wie funktioniert das aber in VBA?

sapConnection.Client = "999"
sapConnection.User = "DEIN_SAP-USERNAME"
sapConnection.Password = InputBox("Bitte Kennwort eingeben") '
sapConnection.Language = "DE"
sapConnection.SystemNumber = "20"
sapConnection.System = "DEIN_SYSTEM"
sapConnection.ApplicationServer = "DEIN_SAP_SERVER"

Anzeige
AW: VBA - SAP Daten auslesen
22.07.2021 14:17:03
ede
Hallo nochmal,
diese Fragen kann ich Dir auch nicht beantworten, dazu müsstest Du schon den Kontakt mit deinem Administrator aufnehmen. In der Regel kann man aber aus SAP die selektierten Daten auch nach Excel exportieren.
Gruss
ede
AW: VBA - SAP Daten auslesen
23.07.2021 23:27:22
MarC
Servus Ede,
die Maske habe ich jetzt mit allen Informationen (User, Server, etc.) gefüllt. Jetzt fehlt mir glaube ich nur noch der Verweis auf die Tabelle. Für das ist glaube ich der Teil von deinem Code verantwortlich. Muss ich hier nur den Tabellennamen eingeben? Wenn ja wo finde ich den bzw wie hast du den gefunden?

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
'.exports("ROWCOUNT") = 100                 ' Anzahl an Datensätze
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")

Anzeige
AW: VBA - SAP Daten auslesen
22.07.2021 14:08:40
Günther
Moin,
ich finde es immer wieder faszinierend, wie manche Unternehmen die eigene Verantwortung so delegieren, dass sie kostenlose Hilfe zu extrem teuren Programmen (SAP) in Foren finden müssen. ☹
Und warum überhaupt VBA? In deiner Version sollte das sehr gut über Daten | Abrufen und transformieren machbar sein.
 
Gruß
Günther  |  mein Excel-Blog
Anzeige
AW: VBA - SAP Daten auslesen
23.07.2021 23:22:31
MarC
Danke für den Hinweis Günter. Ich weiß das man Daten inportieren und Transformieren kann. Leider weiß ich aber nicht wie das bei SAP geht. Wie baut man denn von Excel zu SAP eine Verbindung auf?
Gruß MarC
AW: VBA - SAP Daten auslesen
22.07.2021 14:18:32
Rudi
Hallo,
ich speichere die Ergebnisse meiner SAP-Reports als TAB getrennte Texte lokal ab und verwurste die anschließend per VBA.
Dann habe ich keinen Stress mit der Connection, Parameterübergabe etc.
Gruß
Rudi
Anzeige
AW: VBA - SAP Daten auslesen
23.07.2021 23:16:54
Tim
Hallo Rudi,
mein Problem ist nicht die Verarbeitung der Informationen das bekomme ich hin. Ich möchte mir den weg in SAP sparen. Also ich will nicht jeden Tag ins SAP gehen und mir die Kosteninformationen als Text Datei oder Excel runterladen und dann verarbeiten. Ich möchte per Makro die Daten direkt in eine Excel ziehen ohne per Hand die Kostenelemente eingeben zu müssen.
Gruß
MarC
Anzeige
AW: VBA - SAP Daten auslesen
23.07.2021 23:19:55
MarC
Hallo Rudi,
mein Problem ist nicht die Verarbeitung der Informationen das bekomme ich hin. Ich möchte mir den weg in SAP sparen. Also ich will nicht jeden Tag ins SAP gehen und mir die Kosteninformationen als Text Datei oder Excel runterladen und dann verarbeiten/inportieren. Ich möchte per Makro die Daten direkt in eine Excel ziehen ohne per Hand die Kostenelemente in SAP eingeben zu müssen.
Gruß
MarC
Anzeige
AW: VBA - SAP Daten auslesen
24.07.2021 20:02:28
Rudi
Hallo,

ohne per Hand die Kostenelemente in SAP eingeben zu müssen.
Wozu gibt es Selektionsvarianten?
1x eingeben und als Variante speichern.
Gruß
Rudi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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

Daten aus SAP in Excel importieren mit VBA


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Neues Modul erstellen: Klicke im Menü auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub SAP_read_table()
        Dim functionCtrl As Object
        Dim sapConnection As Object
        Dim FUBAU_rfc_read_table 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 sapConnection = functionCtrl.Connection
        sapConnection.Client = "999"
        sapConnection.User = "DEIN_SAP-USERNAME"
        sapConnection.Password = InputBox("Bitte Kennwort eingeben") 
        sapConnection.Language = "DE"
        sapConnection.SystemNumber = "20"
        sapConnection.System = "DEIN_SYSTEM"
        sapConnection.ApplicationServer = "DEIN_SAP_SERVER"
        If sapConnection.Logon(1, True) Then
            MsgBox "Keine Verbindung zum SAP!"
            Exit Sub
        End If
        Set FUBAU_rfc_read_table = functionCtrl.Add("RFC_READ_TABLE")
        With FUBAU_rfc_read_table
            .exports("QUERY_TABLE") = InputBox("Bitte Tabellenname eingeben")
            .exports("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")
        ret = FUBAU_rfc_read_table.call
        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, "|")
                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-Verbindungsdetails anpassen: Ändere die Variablen für sapConnection.Client, sapConnection.User, sapConnection.System, etc. nach deinen Bedürfnissen.

  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Keine Verbindung zu SAP: Stelle sicher, dass alle SAP-Verbindungsdetails korrekt sind. Möglicherweise musst du deinen Administrator kontaktieren, um die richtigen Parameter zu erhalten.
  • Falscher Tabellenname: Wenn du einen falschen Tabellennamen eingibst, wird keine Daten zurückgegeben. Überprüfe den Tabellennamen in SAP.
  • VBA-Fehlermeldungen: Aktiviere die Entwicklertools in Excel, um sicherzustellen, dass VBA korrekt konfiguriert ist.

Alternative Methoden

  1. Power Query: Du kannst Daten aus SAP auch über Daten > Abrufen und transformieren importieren. Diese Methode erfordert weniger Programmierkenntnisse und ist benutzerfreundlicher.
  2. Direkter Export: Exportiere Daten aus SAP direkt als Excel-Datei und importiere sie in deine Arbeitsmappe.

Praktische Beispiele

  • Kostenelemente abrufen: Verwende den oben genannten VBA-Code, um Daten von spezifischen Kostenelementen in SAP zu holen. Fülle die Felder wie QUERY_TABLE mit dem entsprechenden Namen der Tabelle.
  • Automatische Aktualisierung: Du kannst das Makro so anpassen, dass es Daten aus SAP in Excel automatisch aktualisiert, z.B. durch Einfügen einer Schaltfläche in dein Excel-Dokument.

Tipps für Profis

  • Selektionsvarianten verwenden: Erstelle Selektionsvarianten in SAP, um oft benötigte Kostenelemente schnell auszuwählen.
  • Fehlerprotokollierung einbauen: Füge Fehlerprotokollierung in dein VBA-Skript ein, um Probleme beim Datenabruf besser nachvollziehen zu können.
  • Performance optimieren: Überlege, nur die benötigten Felder zu importieren, um die Performance des Makros zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich die Verbindung zu SAP testen?
Du kannst den Verbindungsversuch im VBA-Code testen, indem du eine MsgBox nach der Logon-Abfrage einfügst.

2. Was ist der Unterschied zwischen Power Query und VBA?
Power Query ist eine benutzerfreundliche Methode zur Datenverarbeitung ohne Programmierkenntnisse, während VBA mehr Flexibilität und Automatisierungsmöglichkeiten bietet.

3. Kann ich mehrere Tabellen gleichzeitig importieren?
Ja, du musst jedoch den VBA-Code anpassen, um mehrere Tabellen nacheinander abzurufen und die Daten in Excel zu speichern.

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