on 05-15-2018 8:30 AM
Hello everybody,
I have a code in an excel file that I use to gather data from tables. For this I´m using RFC_READ_TABLE. The active login via popup works like a charm, however any attempt to get it working via silent login utterly fails. My script is complex and long, chaining multiple tables along and gathering mass amounts of data, that is why I spare you with my code and provide an easy example from the internet.
Basically the problem is here:
If oSAP.Connection.Logon(0, False) = True Then
When set to false, it asks me for credentials. When I provide them, everything is fine.
When I however set it to:
If oSAP.Connection.Logon(0, True) = True Then
I receive an error 1001 exactly here:
Set oFuBa = oSAP.Add("RFC_READ_TABLE")
I suspect my login is somehow not working, maybe wrong application server - I do not know.
When I login via popup & credentials, my application server is empty and my login is working perfectly.
Does anybody know, why the silent login is not working in this example code? Is the application server mandatory? Why does it work with empty application server as long as the popup is used?
I´d be glady if anybody could lend me a hand here. Thank you very much in advance.
Sub RFCReadTable()
' https://www.linkedin.com/pulse/connect-sap-r3-call-custom-fm-from-ms-excel-erkan-kopuz
' https://saplsmw.com/Import_tables_directly_into_Access_from_SAP_using_RFCs
' http://sapass.metro.client.jp/Sap_Active_X/UseFunctionControl.htm
Set oSAP = CreateObject("SAP.Functions")
oSAP.Connection.ApplicationServer = "" ' IP des Appl-Servers (SM51->Details)
oSAP.Connection.SystemNumber = "01" ' Systemnummer, meißt im Namen des Appl-Servers enthalten
oSAP.Connection.System = "XA1" ' Entwicklungs-, Test-, Produktivsystem
oSAP.Connection.Client = "100" ' Mandant
oSAP.Connection.Language = "DE" ' Sprache "EN", "DE" ...
oSAP.Connection.User = "USER1" ' SAP-User
oSAP.Connection.Password = "xyz" ' SAP-Passwort
oSAP.Connection.UseSAPLogonIni = False
' RFC-Login, wobei
' Logon(0, False): Logon-Fenster anzeigen
' Logon(0, True): Silent logon, Passwort muss gesetzt sein
If oSAP.Connection.Logon(0, False) = True Then
Dim oFuBa As Object
' FuBa RFC_READ_TABLE abfragen
Set oFuBa = oSAP.Add("RFC_READ_TABLE")
' EXPORTING
Set e_query_table = oFuBa.Exports("QUERY_TABLE")
Set e_delimiter = oFuBa.Exports("DELIMITER")
Set e_rowCount = oFuBa.Exports("ROWCOUNT")
e_query_table.Value = "STXH" ' Tabelle STXH
e_delimiter.Value = ";" ' Spalten mit ";" getrennt
e_rowCount.Value = "100" ' max. 100 Datensätze lesen, 0 = alle
' TABLES
Set t_options = oFuBa.Tables("OPTIONS")
Set t_fields = oFuBa.Tables("FIELDS")
Set t_data = oFuBa.Tables("DATA")
' WHERE-Bedingung
t_options.AppendRow
t_options(1, "TEXT") = "TDOBJECT EQ 'TEXT'"
' Welche Spalten sollen gelesen werden
t_fields.AppendRow
t_fields(1, "FIELDNAME") = "TDOBJECT"
t_fields.AppendRow
t_fields(2, "FIELDNAME") = "TDNAME"
t_fields.AppendRow
t_fields(3, "FIELDNAME") = "TDID"
t_fields.AppendRow
t_fields(4, "FIELDNAME") = "TDTITLE"
t_fields.AppendRow
t_fields(5, "FIELDNAME") = "TDLUSER"
If oFuBa.Call = True Then
' Schnittstellenparameter "TABLES-DATA" holen
' Rückgabe in Excel-Sheet einfügen
Dim iRow As Integer
iRow = 1
' Rückgabemenge beinhaltet Strings, die mit dem festgelegten Separator ";" getrennt sind
For Each oDataLine In t_data.Rows
Dim vFields As Variant
vFields = Split(oDataLine(1), ";")
'
For iCol = LBound(vFields) To UBound(vFields)
ActiveWorkbook.Sheets(1).Cells(iRow, iCol + 1) = Trim(vFields(iCol))
Next iCol
iRow = iRow + 1
Next
Else
' Exception?
MsgBox oFuBa.Exception
End If
' Logoff
oSAP.Connection.Logoff
Else
' Login not possible
MsgBox "Login failed"
End If
End Sub
Hi Björn,
I think either the application server host name or a message server is necessary to establish an RFC connection to an ABAP server. Maybe it is selected from the "SAP R/3 Logon" popup.
If the ApplicationServer value is set, try to capture a security trace on the ABAP server, follow SAP note
495911 - Logon problem trace analysis
Note that calling RFC_READ_TABLE FM is not supported
382318 - FAQ|Function module RFC_READ_TABLE
2503119 - Information about function module RFC_READ_TABLE
Best regards,
Antal
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
85 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.