RFC_READ_TABLE-无法获得静默登录来工作...

2020-09-20 06:59发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,


我在excel文件中有一个代码,用于从表中收集数据。 为此,我正在使用RFC_READ_TABLE。 通过弹出窗口进行的活动登录就像一个超级按钮一样,但是通过静默登录进行的任何尝试都将完全失败。 我的脚本复杂而冗长,将多个表链接在一起并收集大量数据,这就是为什么我不花我的代码并从互联网上提供一个简单的示例的原因。

基本上问题在这里:

如果oSAP.Connection.Logon(0,False)= True则

设置为false时,它会要求我提供凭据。 当我提供它们时,一切都很好。

当我将其设置为:

如果oSAP.Connection.Logon(0,True)= True则

我恰好在这里收到错误1001:

设置oFuBa = oSAP.Add(" RFC_READ_TABLE")

我怀疑我的登录无法正常运行,可能是错误的应用程序服务器-我不知道。

当我通过弹出窗口和凭据登录时,我的应用程序服务器为空,并且登录正常。

有人知道,为什么静默登录在此示例代码中不起作用? 应用服务器是强制性的吗? 为什么只要使用弹出窗口,它就可以与空的应用程序服务器一起工作?

如果有人可以在这里帮助我,我会很高兴。 提前非常感谢您。

 Sub RFCReadTable()
     'https://www.linkedin.com/pulse/connect-sap-r3-call-custom-fm-from-ms-excel-erkan-kopuz
     'https://saplsmw​​.com/Import_tables_direct_into_Access_from_SAP_using_RFCs
     'http://sapass.metro.client.jp/Sap_Active_X/UseFunctionControl.htm
     设置oSAP = CreateObject(" SAP.Functions")
     oSAP.Connection.ApplicationServer =""'IP应用服务器(SM51->详细信息)
     oSAP.Connection.SystemNumber =" 01"'Systemnummer,应用服务器名称变暗
     oSAP.Connection.System =" XA1"'Entwicklungs-,Test-,Produktivsystem
     oSAP.Connection.Client =" 100"'强制
     oSAP.Connection.Language =" DE"'语言" EN"," DE" ...
     oSAP.Connection.User =" USER1"'SAP用户
     oSAP.Connection.Password =" xyz"'SAP密码
     oSAP.Connection.UseSAPLogonIni = False
     
     RFC登录,沃贝
     'Logon(0,False):Logon-Fenster anzeigen
     'Logon(0,True):静音登录,Passwort muss gesetzt sein
     如果oSAP.Connection.Logon(0,False)= True,则
       昏暗的oFuBa作为对象
         
       'FuBa RFC_READ_TABLE缩写
       设置oFuBa = oSAP.Add(" RFC_READ_TABLE")
       
       出口
       设置e_query_table = oFuBa.Exports(" QUERY_TABLE")
       设置e_delimiter = oFuBa.Exports(" DELIMITER")
       设置e_rowCount = oFuBa.Exports(" ROWCOUNT")
       
       e_query_table.Value =" STXH"'Tabelle STXH
       e_delimiter.Value =";"  'Spalten mit";" 发脾气
       e_rowCount.Value =" 100"'最大值 100Datensätzelesen,0 = alle
       
       桌子
       设置t_options = oFuBa.Tables(" OPTIONS")
       设置t_fields = oFuBa.Tables(" FIELDS")
       设置t_data = oFuBa.Tables(" DATA")
       
       在哪里
       t_options.AppendRow
       t_options(1," TEXT")=" TDOBJECT EQ'TEXT'"
       
       韦尔切·斯帕尔滕(Welche Spalten)
       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"
       
       如果oFuBa.Call = True,则
         'Schnittstellenparameter" TABLES-DATA"孔
         在Excel-Sheeteinfügen中的Rückgabe
         
         Dim iRow作为整数
         iRow = 1
             
         'Rückgabemengebeinhaltet琴弦,是mit dem festgelegten分隔符";" 发脾气
         对于t_data.Rows中的每个oDataLine
 
         
           变暗vFields作为变体
           vFields = Split(oDataLine(1),";")
           
           '
           对于iCol = LBound(vFields)到UBound(vFields)
             ActiveWorkbook.Sheets(1).Cells(iRow,iCol + 1)=修剪(vFields(iCol))
           下一个iCol
                 
          iRow = iRow +1
         下一个
       其他
         例外吗?
         MsgBox oFuBa.Exception
       万一
 
       ' 注销
       oSAP.Connection.Logoff
     
     其他
       '无法登录
       MsgBox"登录失败"
     万一
 
 结束子

 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,


我在excel文件中有一个代码,用于从表中收集数据。 为此,我正在使用RFC_READ_TABLE。 通过弹出窗口进行的活动登录就像一个超级按钮一样,但是通过静默登录进行的任何尝试都将完全失败。 我的脚本复杂而冗长,将多个表链接在一起并收集大量数据,这就是为什么我不花我的代码并从互联网上提供一个简单的示例的原因。

基本上问题在这里:

如果oSAP.Connection.Logon(0,False)= True则

设置为false时,它会要求我提供凭据。 当我提供它们时,一切都很好。

当我将其设置为:

如果oSAP.Connection.Logon(0,True)= True则

我恰好在这里收到错误1001:

设置oFuBa = oSAP.Add(" RFC_READ_TABLE")

我怀疑我的登录无法正常运行,可能是错误的应用程序服务器-我不知道。

当我通过弹出窗口和凭据登录时,我的应用程序服务器为空,并且登录正常。

有人知道,为什么静默登录在此示例代码中不起作用? 应用服务器是强制性的吗? 为什么只要使用弹出窗口,它就可以与空的应用程序服务器一起工作?

如果有人可以在这里帮助我,我会很高兴。 提前非常感谢您。

 Sub RFCReadTable()
     'https://www.linkedin.com/pulse/connect-sap-r3-call-custom-fm-from-ms-excel-erkan-kopuz
     'https://saplsmw​​.com/Import_tables_direct_into_Access_from_SAP_using_RFCs
     'http://sapass.metro.client.jp/Sap_Active_X/UseFunctionControl.htm
     设置oSAP = CreateObject(" SAP.Functions")
     oSAP.Connection.ApplicationServer =""'IP应用服务器(SM51->详细信息)
     oSAP.Connection.SystemNumber =" 01"'Systemnummer,应用服务器名称变暗
     oSAP.Connection.System =" XA1"'Entwicklungs-,Test-,Produktivsystem
     oSAP.Connection.Client =" 100"'强制
     oSAP.Connection.Language =" DE"'语言" EN"," DE" ...
     oSAP.Connection.User =" USER1"'SAP用户
     oSAP.Connection.Password =" xyz"'SAP密码
     oSAP.Connection.UseSAPLogonIni = False
     
     RFC登录,沃贝
     'Logon(0,False):Logon-Fenster anzeigen
     'Logon(0,True):静音登录,Passwort muss gesetzt sein
     如果oSAP.Connection.Logon(0,False)= True,则
       昏暗的oFuBa作为对象
         
       'FuBa RFC_READ_TABLE缩写
       设置oFuBa = oSAP.Add(" RFC_READ_TABLE")
       
       出口
       设置e_query_table = oFuBa.Exports(" QUERY_TABLE")
       设置e_delimiter = oFuBa.Exports(" DELIMITER")
       设置e_rowCount = oFuBa.Exports(" ROWCOUNT")
       
       e_query_table.Value =" STXH"'Tabelle STXH
       e_delimiter.Value =";"  'Spalten mit";" 发脾气
       e_rowCount.Value =" 100"'最大值 100Datensätzelesen,0 = alle
       
       桌子
       设置t_options = oFuBa.Tables(" OPTIONS")
       设置t_fields = oFuBa.Tables(" FIELDS")
       设置t_data = oFuBa.Tables(" DATA")
       
       在哪里
       t_options.AppendRow
       t_options(1," TEXT")=" TDOBJECT EQ'TEXT'"
       
       韦尔切·斯帕尔滕(Welche Spalten)
       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"
       
       如果oFuBa.Call = True,则
         'Schnittstellenparameter" TABLES-DATA"孔
         在Excel-Sheeteinfügen中的Rückgabe
         
         Dim iRow作为整数
         iRow = 1
             
         'Rückgabemengebeinhaltet琴弦,是mit dem festgelegten分隔符";" 发脾气
         对于t_data.Rows中的每个oDataLine
 
         
           变暗vFields作为变体
           vFields = Split(oDataLine(1),";")
           
           '
           对于iCol = LBound(vFields)到UBound(vFields)
             ActiveWorkbook.Sheets(1).Cells(iRow,iCol + 1)=修剪(vFields(iCol))
           下一个iCol
                 
          iRow = iRow +1
         下一个
       其他
         例外吗?
         MsgBox oFuBa.Exception
       万一
 
       ' 注销
       oSAP.Connection.Logoff
     
     其他
       '无法登录
       MsgBox"登录失败"
     万一
 
 结束子

 
付费偷看设置
发送
1条回答
派大星 ヾ
1楼 · 2020-09-20 07:45.采纳回答

嗨比约恩,

我认为应用程序服务器主机名或消息服务器是建立与ABAP服务器的RFC连接所必需的。 也许是从" SAP R/3登录"弹出窗口中选择的。

如果设置了ApplicationServer值,请尝试在ABAP服务器上捕获安全跟踪,​​请遵循SAP注释

495911 -登录问题跟踪分析

请注意,不支持调用RFC_READ_TABLE FM

382318 -常见问题解答|功能模块RFC_READ_TABLE

2503119 -有关功能模块RFC_READ_TABLE的信息

最诚挚的问候,

肛门

一周热门 更多>