[MS Excel] BAPI-Zugriff aus Excel (VBA) heraus

Option Explicit

Sub GetMATNR()
    ' Verbindung zu SAP herstellen
    Dim oSAP As Object
    Set oSAP = CreateObject("SAP.Functions")
    ' Verbindungsdaten vorbelegen
    oSAP.Connection.ApplicationServer = "1.1.1.1" ' IP des Appl-Servers (SM51->Details)
    oSAP.Connection.SystemNumber = "01"           ' Systemnummer, meißt im Namen des Appl-Servers enthalten
    oSAP.Connection.System = "XD1"                ' Entwicklungs-, Test-, Produktivsystem
    oSAP.Connection.Client = "100"                ' Mandant
    oSAP.Connection.Language = "DE"               ' Sprache "EN", "DE" ...
    
    ' RFC-Login: Logon-Fenster anzeigen
    If oSAP.Connection.Logon(0, False) = True Then
        ' BAPI_MATERIAL_GET_DETAIL abfragen
        Dim oFuBa As Object
        Set oFuBa = oSAP.Add("BAPI_MATERIAL_GET_DETAIL")
        
        ' EXPORTING
        Dim e_material As Variant
        Set e_material = oFuBa.Exports("MATERIAL")
        e_material.Value = ActiveWorkbook.ActiveSheet.Cells(1, 2) ' MATNR in B1
        
        ' IMPORTING
        Dim i_material_general_data As Variant
        Set i_material_general_data = oFuBa.Imports("MATERIAL_GENERAL_DATA")
        
        Dim i_return As Variant
        Set i_return = oFuBa.Imports("RETURN")
        
        ' Wenn Fuba-Aufruf ok
        If oFuBa.Call = True Then
            ' RETURN auswerten
            If i_return.Value("TYPE") = "E" Then
                ' Bei Fehler: Fehlermessage ausgeben in B2
                ActiveWorkbook.ActiveSheet.Cells(2, 2) = i_return.Value("MESSAGE")
            Else
                ' Wenn OK: Materialkurztext in B2
                ActiveWorkbook.ActiveSheet.Cells(2, 2) = i_material_general_data.Value("MATL_DESC")
            End If
        End If
    End If
End Sub

[SAP] Report manuell im Hintergrund ausführen und Ausführung überwachen

Vorteil: sehr lang laufende Programme brechen nicht mit Timeout ab

SE80 (oder Transaktionscode für Programmstart)

  • erst den Report starten -> Selektionsbild erscheint
  • Menü -> Programm -> Im Hintergrund ausführen (F9)
  • Ausgabegerät: Irgendein beliebiger Drucker
  • Exemplare: 1
  • Seitenbereich: Alles
  • Ausgabezeitpunkt: Zunächst nur SAP-Spool
  • Weiter (grüner Haken)
  • Startterminwerte
  • Button “Sofort” klicken
  • Klick auf Speichern (blaue Diskette)
  • Job wurde nun angelegt und Programmausführung im Hintergrund gestartet, Listenausgabe im Spool (SP01)

SM37 (Überwachung des (noch laufenden) Hintergrundjobs)

  • Jobname: *
  • Benutzername:
  • Jobstatus: Haken setzen
  • Jobstartbedingung: heutiges Datum
  • Button “Ausführen” klicken -> Jobübersicht
  • Jobname == Programmname
  • Spoolliste: Doppelklick -> SP01
  • Jobersteller
  • Status: aktiv
  • Dauer
  • Button Aktualisieren klicken für Forschritt

SM51 (Workprozess für die Ausführung des Jobs anzeigen)

  • Doppelklick auf Servernamen (SM50)
  • Klick auf Button “Aktive Workprozesse”

SAP-News

Horst Keller

  • ABAP

Rich Heilman

  • SAP HANA

Thomas Fiedler

  • ABAP

Frank Buchholz

  • Architekt SAP CoE

Thomas Jung

  • SAP HANA

Andre Fischer

  • SAP Fiori, SAP Gateway, Odata

Uwe Fetzer

  • ABAP

Joachim Rees

  • S/4HANA, ABAP

Wolfgang Woehrle

  • ABAP, ADT

Enno Wulff

  • ABAP

Olga Dolinskaja

  • ABAP, ATC

Bartosz Jarkowski

  • HANA

Mauricio Lauffer

  • SAPUI5, OpenUI5

Lars Hvam

S/4HANA Blog

  • Infos zum Thema S/4HANA

S/4HANA-Experts

  • Infos zum Thema S/4HANA