点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我的公司即将迁移到Office ...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我的公司即将迁移到Office ...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我的公司即将迁移到Office 365。 我测试了一个程序,该程序登录到SAP并在365环境中运行RFC,并且在" Functions.Connection = objConnection"行上遇到运行时错误(运行时错误20080008…错误的变量类型)
显式选项 作为SAPFunctions的公共函数OCX.SAPFunctions 私人LogonControl为SAPLogonCtrl.SAPLogonControl 私有objConnection为SAPLogonCtrl.Connection 作为SAPFunctionsOCX.Function的公共函数 公共提交为SAPFunctionsOCX.Function 将公共TableFactory作为SAPTableFactory 以布尔值公开的silentLogon 公共tblReadTableOptions,tblReadTableFields,tblReadTableData作为SAPTableFactoryCtrl.Table 子ExtractProjectData() 如果objConnection什么都没有,那么LogonToSAP 发起SAP变量 设置Func = Functions.Add(" BBP_RFC_READ_TABLE") 设置tblReadTableOptions = Func.Tables(" OPTIONS") 设置tblReadTableFields = Func.Tables(" FIELDS") 设置tblReadTableData = Func.Tables(" DATA") '从SAP表中提取/转换数据 结束子 函数InitiateSAPVariables() 设置函数=无 设置TableFactory = Nothing 设置功能=无 设置函数= CreateObject(" SAP.Functions") 设置TableFactory = CreateObject(" SAP.TableFactory.1") Functions.Connection = objConnection'运行时错误在Office 365中出现,但在本地时不存在 结束功能 函数LogonToSAP() 昏暗建立连接为布尔 silenceLogon =否 设置LogonControl = CreateObject(" SAP.LogonControl.1") 设置objConnection = LogonControl.NewConnection objConnection.Client =" ###" objConnection.Language =" EN" objConnection.SystemNumber =" ##" objConnection.User ="" objConnection.Password ="" objConnection.HostName =" ###############" objConnection.System =" ###" objConnection.ApplicationServer =" ###。###。#。##" 建立连接= objConnection.Logon(0,silentLogon) 结束功能
快速检查objConnection会告诉我登录已成功...因此我知道该部件正在365上工作。但是由于某些原因,它不喜欢分配Functions SAPFunctionsOCX的Connection属性。 SAPFunctions对象在365环境中(请随时纠正我的说法,我知道这不太正确)。
请注意,在这两种环境下,我都没有看到任何参考问题,也没有遇到任何编译错误。 麻烦的第一个迹象是在执行Functions.Connection = objConnection
这里还有另外一个问题,那就是我有另一个较旧的VBA程序,该程序登录到SAP并运行不使用SAPFunctionsOCX.SAPFunctions的远程函数调用,而是将变量R3声明为" Public R3 As Object",然后 稍后在登录代码中将R3设置为`Set R3 = CreateObject(" SAP.Functions")`...它不使用OCX。 换句话说,旧例程使用后期绑定。 当以这种方式设置Functions对象(在这种情况下为R3)时,我将能够在prem和Office 365环境中运行RFC。
功能LogonProdSAP(可选SuppressLoginScreen为布尔值) Application.ScreenUpdating = False '************************************************** '创建服务器对象并设置DEV的连接 '************************************************** 设置R3 = CreateObject(" SAP.Functions") 如果SuppressLoginScreen然后 R3.Connection.System =" ###" R3.Connection.HostName =" ####################" R3.Connection.SystemNumber =" ##" R3.Connection.Client =" ###" R3.Connection.User =" ##########" R3.Connection.Password =" #########" R3.Connection.Language =" EN" '通话记录器(" LogonProdSAP>"&GetUserName) 万一 LogonProdSAP = R3.Connection.logon(0,SuppressLoginScreen) 如果LogonProdSAP <> True,则MsgBox("登录错误"):退出功能 结束功能 我可以回到这种方式,但是我不必重新配置我刚刚设置的所有代码。 此外,我更喜欢早期绑定,因此Intellitype可以显示该对象可用的所有属性/方法。 我相信还有其他好处。 我必须怎么做才能使早期绑定技术在Office 365上运行? 这个问题也发布在堆栈溢出... https://stackoverflow.com/questions/58942674
迈克尔你好,
很遗憾,我不能为您解决问题,但是我对通过Excel VBA执行SAP RFC的想法很感兴趣。 是否允许在后台读取SAP表数据并将其导出到Excel?
谢谢
最好的问候
Michal Kaczmarczyk
一周热门 更多>