Erstelle mir eine VMB, um aus SAP CS11 Stücklisten für Materialien in Excel zu exportieren!

Um eine VBA-Makro (VMB) zu erstellen, die Stücklisten aus SAP CS11 in Excel exportiert, müssen wir mehrere Schritte berücksichtigen. Da SAP eine komplexe ERP-Software ist, gibt es keine direkte VBA-Integration, aber wir können eine Lösung über SAP GUI Scripting oder SAP-Exportfunktionen (z. B. über SAP Query oder ALV-Export) realisieren.

Hier ist ein VBA-Makro, das den Export von Stücklisten aus SAP CS11 in Excel automatisiert, unter der Annahme, dass die Daten bereits in einer SAP-Tabelle oder ALV-Liste vorliegen und manuell exportiert werden können.


VBA-Makro für den Export von SAP CS11-Stücklisten nach Excel

(Voraussetzung: SAP GUI Scripting ist aktiviert und die Stückliste ist in SAP geöffnet)

Sub ExportSAP_CS11_To_Excel()
    Dim SapGuiAuto As Object
    Dim SAPApp As Object
    Dim SAPCon As Object
    Dim session As Object
    Dim WshShell As Object
    Dim ExcelApp As Object
    Dim ExcelWorkbook As Object
    Dim ExcelSheet As Object
    Dim FilePath As String

    ' Pfad für die Excel-Datei festlegen
    FilePath = "C:\Temp\SAP_Stueckliste_" & Format(Now, "YYYYMMDD_HHMMSS") & ".xlsx"

    ' Excel-Anwendung starten
    Set ExcelApp = CreateObject("Excel.Application")
    ExcelApp.Visible = True
    Set ExcelWorkbook = ExcelApp.Workbooks.Add
    Set ExcelSheet = ExcelWorkbook.Sheets(1)

    ' SAP GUI Scripting initialisieren
    On Error Resume Next
    Set SapGuiAuto = GetObject("SAPGUI")
    If SapGuiAuto Is Nothing Then
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe", 1, False
        MsgBox "Bitte melden Sie sich in SAP an und öffnen Sie die Stückliste (CS11).", vbInformation, "SAP-Anmeldung erforderlich"
        Exit Sub
    End If
    On Error GoTo 0

    Set SAPApp = SapGuiAuto.GetScriptingEngine
    Set SAPCon = SAPApp.Children(0)
    Set session = SAPCon.Children(0)

    ' Prüfen, ob die Stückliste (CS11) geöffnet ist
    If Not session.findById("wnd[0]/tbar[0]/okcd") Is Nothing Then
        session.findById("wnd[0]/tbar[0]/okcd").Text = "/nCS11"
        session.findById("wnd[0]").sendVKey 0
    End If

    ' Warten, bis die Stückliste geladen ist
    Do While session.Busy
        DoEvents
    Loop

    ' Daten aus der ALV-Tabelle extrahieren (Beispiel: Tabelle "SAPLALDB" oder ähnliche)
    ' (Hinweis: Die genaue ID der Tabelle muss angepasst werden!)
    Dim ALVGrid As Object
    Set ALVGrid = session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell")

    If ALVGrid Is Nothing Then
        MsgBox "ALV-Grid nicht gefunden. Bitte stellen Sie sicher, dass die Stückliste angezeigt wird.", vbExclamation, "Fehler"
        Exit Sub
    End If

    ' Daten in Excel schreiben
    Dim RowCount As Integer, ColCount As Integer
    RowCount = ALVGrid.RowCount
    ColCount = ALVGrid.ColumnCount

    ' Spaltenüberschriften kopieren
    For col = 0 To ColCount - 1
        ExcelSheet.Cells(1, col + 1).Value = ALVGrid.GetColumnHeader(col)
    Next col

    ' Daten kopieren
    For row = 0 To RowCount - 1
        For col = 0 To ColCount - 1
            ExcelSheet.Cells(row + 2, col + 1).Value = ALVGrid.GetCellValue(row, col)
        Next col
    Next row

    ' Excel-Datei speichern
    ExcelWorkbook.SaveAs FilePath
    MsgBox "Stückliste erfolgreich nach Excel exportiert!" & vbCrLf & "Dateipfad: " & FilePath, vbInformation, "Export abgeschlossen"

    ' Aufräumen
    Set ALVGrid = Nothing
    Set session = Nothing
    Set SAPCon = Nothing
    Set SAPApp = Nothing
    Set SapGuiAuto = Nothing
    Set ExcelSheet = Nothing
    Set ExcelWorkbook = Nothing
    ExcelApp.Quit
    Set ExcelApp = Nothing
End Sub

Wichtige Hinweise:

  1. SAP GUI Scripting muss aktiviert sein (in SAP unter Extras → Optionen → Zugänglichkeit & Scripting).
  2. Die ALV-Tabellen-ID (cntlGRID1/shellcont/shell) kann je nach SAP-Version variieren.
    • Falls das Makro die Tabelle nicht findet, müssen Sie die korrekte ID mit dem SAP Scripting Recorder ermitteln.
  3. Manueller Export als Alternative:
    • Falls VBA nicht funktioniert, können Sie in SAP die Stückliste als Excel-Datei exportieren (über Strg+Y oder System → Liste → Export → Lokale Datei).
  4. Sicherheit:
    • SAP-Systeme haben oft strenge Sicherheitsrichtlinien. Prüfen Sie, ob Makros erlaubt sind.

Alternative: SAP Query oder Report verwenden

Falls Sie häufig Stücklisten exportieren müssen, können Sie in SAP:

  1. Eine SAP Query (SQ01) erstellen, die die Stücklistendaten abfragt.
  2. Einen ABAP-Report schreiben, der die Daten direkt in Excel exportiert.

Möchten Sie eine dieser Alternativen näher erklärt haben? 😊

Kommentar hinterlassen

Kommentare

Noch keine Kommentare. Starte eine Diskussion?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert