Hallo zusammen!
Ich versuche mich seit Tagen an diversen Scripten, die sich auf SAP RFC Bausteine stürtzen und Daten aus SAP Tables auslesen sollen. Ist kein "Muss-sein", aber es interessiert mich halt, wie das so funktioniert.
So, nach einigen Erfolgen bin ich aber nun an einer Stelle, an der ich nicht weiter komme: :P Hat jemand schon mal Erfahrung mit dem SAP-RFC-Baustein "TABLE_ENTRIES_GET_VIA_RFC" und Lotus Notes gemacht? Mit dem Baustein kann man ja prima SAP-Tables auslesen. Ein VBA-Excel-Coding habe ich dazu zwar vorliegen, das auch prima funktioniert ( http://www.vbip.com/forum/attachment/17018.zip ) , aber ich schaffe es nicht das so in Lotus Script ein(um-)zubauen, dass es funktioniert...
Habe den Fehler "Instance member ADD does not exist" bei
Set MyFunc = R3.Add("TABLE_ENTRIES_GET_VIA_RFC")
Set oParam1 = MyFunc.exports("LANGUE")
Set oParam2 = MyFunc.exports("ONLY")
Set oParam3 = MyFunc.exports("TABNAME")
Set oParam4 = MyFunc.Tables("SEL_TAB")
oParam1.Value = "DE"
oParam2.Value = ""
oParam3.Value = "Y_TABLE"
' --- ### Bang Bang ###
oParam4.Rows.Add ' <-- Hier knallt's mit og Fehlermeldung !! ?? ---
oParam4.Value(1, "ZEILE") = "NAME like 'Suchstring%'"
SAP Connection steht, SAP RFC wird aufgerufen, alle Parameter bis auf Row.Add funktionieren... Hm, Denkblokade?!
Ist zwar ein etwas "extentrisches Thema" glaube ich, aber wer dennoch Lust hat zu helfen... Danke! :)
Soooo, OK: ich hab's dennoch hinbekommen (ein kleiner Blick in die Doku "Domino Integration Technologies for SAP R/3" hat mich auf den richtigen Weg gebracht. Anbei der Code-Ausschnitt, falls es jemanden interessieren sollte - so funzt es jedenfalls prima!
' ----- SAPConnect & SAPLogon (aus Profildokument holen)
If config() Then
Continue=False ' ansonsten ist ende
Exit Sub
End If
If connectionSAP() Then
Continue=False ' ansonsten ist ende
Exit Sub
End If
Print "Login " & SAPServer(0)
Dim MyFunc As RfcFunction
FuncName="TABLE_ENTRIES_GET_VIA_RFC"
Set MyFunc = New RfcFunction(objServer, FuncName )
If MyFunc.message <> "" Then
Msgbox MyFunc.message
Exit Sub
End If
' ----------------------------------------------------------------
' Selektion im RFC Baustein:
' SELECT * FROM (TABNAME) INTO TABLE TABENTRY WHERE (SEL_TAB)
' ----------------------------------------------------------------
Set oParam1 = MyFunc.Exports("LANGU")
Set oParam2 = MyFunc.Exports("ONLY")
Set oParam3 = MyFunc.Exports("TABNAME")
Set oParam4 = MyFunc.Tables("SEL_TAB")
oParam1.Value = "DE"
oParam2.Value = ""
oParam3.Value = "Y20ST"
Set curRow = oParam4.Rows.InsertRow
curRow.ZEILE = "ORTSNAME NOT LIKE 'Dortmund%'"
If MyFunc.Call = True Then
Set NAMETAB = MyFunc.Tables("NAMETAB")
Set SEL_TAB = MyFunc.Tables("SEL_TAB")
Set TABENTRY = MyFunc.Tables("TABENTRY")
Else
Messagebox "Call failed! Error: " & MyFunc.Message
Call objServer.Logoff
Exit Sub
End If
iColumn = 1
Set tbl = MyFunc.Tables("TABENTRY")
Forall rowtbl In tbl.Rows
Print rowtbl.ENTRY
End Forall
Set MyFunc = Nothing
Call objServer.Logoff
Print "Logoff from " & SAPServer(0)
Danke.
Kleiner Hinweis, der mir beim Überfliegen aufgefallen ist:
If connectionSAP() Then
Continue=False ' ansonsten ist ende
Exit Sub
End If
Tu dir selbst den Gefallen und geb dort eine Fehlermeldung aus.
So beendet sich das still und leise.
Bei Zugriff auf externen Ressourcen würde ich auch immer NotesLogging benutzen.
Gruss Axel