Aufgabenstellung
Die Aufgabenstellung sowie der Ansatz ist identisch mit diesem Artikel (Bitte zuerst lesen).
Prämissen / Vorraussetzungen
Die Datei librfc32.dll muss im VBA Editor eingebunden werden (sie ist nach der Installation der SAPGUI verfügbar).
Lösung
Aufbau der Verbindung
Public Function SAP_Logon(username As String, password As String) As Boolean '************************************************* ' ANMELDUNG AN SAP ' ACHTUNG: USER MUSS BERECHTIGUNGEN HABEN!!!! '************************************************* Set FunctionCtrl = CreateObject("SAP.Functions") 'Objekt für die SAP Verbindung Set SapConnection = FunctionCtrl.Connection SapConnection.Client = "100" SapConnection.User = username SapConnection.Language = "DE" SapConnection.password = password SapConnection.hostname = "rechnername.firma.com" 'nicht das kuerzel wie DE9 SapConnection.systemnumber = "0" If Not SapConnection.Logon(0, True) Then 'True silent - false offen MsgBox "Logon failed!!!", vbCritical CMS_Logon = False Else CMS_Logon = True End If End Function
Abmelden
Public Function SAP_Logoff() As Boolean SapConnection.LogOff End Function
Funktionbaustein befüllen und aufrufen
Public Function SAP_Create_Request() As Long '****************************************************** ' Request erzeugen ' Strukturen füllen und übergeben, dann Log ausgeben '****************************************************** On Error GoTo ErrorMSG Dim FunctionModule As Object Dim e_EXPORTSTRUKTUR As Object Dim T_TABELLENSTRUKTUR As Object Dim te_messtab As Object Dim lCnt As Long ' Assign Function Module Set FunctionModule = FunctionCtrl.Add("Z_FUBA") ' Set export Variables Set e_EXPORTSTRUKTUR = FunctionModule.Exports("P_STRUKTURPARAMETER") ' Set structrue fields in export parameter e_EXPORTSTRUKTUR ("ZEXPORTPARAM1") = "BLA" e_EXPORTSTRUKTUR ("ZEXPORTPARAM1") = "BLA2" Set T_TABELLENSTRUKTUR = FunctionModule.Tables("T_ZMMMATANF8") T_TABELLENSTRUKTUR.appendRow T_TABELLENSTRUKTUR(1, "SPALTE1") = 1 T_TABELLENSTRUKTUR(1, "SPALTE2") = 2 T_TABELLENSTRUKTUR.appendRow T_TABELLENSTRUKTUR(2, "SPALTE1") = 3 T_TABELLENSTRUKTUR(2, "SPALTE2") = 4 ' Call Function Aufruf If FunctionModule.Call = True Then Set te_messtab = FunctionModule.Tables("TE_MESSTAB") ' Meldungen ausgeben: Dim intRow As Integer For intRow = 1 To te_messtab.RowCount If te_messtab(intRow, "ARBGB") = "ZMM0001" And _ te_messtab(intRow, "MSGNR") = "003" Then ' ANForderung wurde erstellt. CMS_Create_Request = Val(te_messtab(intRow, "MSGV1")) End If Debug.Print te_messtab(intRow, "ARBGB") Debug.Print te_messtab(intRow, "MSGNR") Debug.Print te_messtab(intRow, "NATXT_DE") sMSGTXT = te_messtab(intRow, "NATXT_DE") Debug.Print te_messtab(intRow, "FLDNAME") Debug.Print te_messtab(intRow, "MSGV1") Debug.Print te_messtab(intRow, "MSGV2") Debug.Print te_messtab(intRow, "MSGV3") Debug.Print te_messtab(intRow, "MSGV4") Debug.Print "----------------------------------" Next Else CMS_Create_Request = 0 MsgBox "Error creating the CMS Request." & vbNewLine & _ "See Log for details", vbCritical End If ErrorMSG: End Function
Die Testfunktion
Public Sub Start() '************************************************* ' TESTUMGEBUNG '************************************************* Dim RequestNo As Long Dim username As String Dim password As String username = "BJOERN" password = "ICHBINDERBESTE" Call CMS_Logon(username, password) RequestNo = SAP_Create_Request Call CMS_Logoff End Sub