十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
因为很多非basis想做这方面的接口调用,根据我自己的经验提示一下,也许不适合所有的人。只要你有可以登录SAP的权限,应该就可以连接。技巧是先不要用静连接,也就是把连接语句的TRUE,改成0,这样连接时会调出连接设置界面,里面很多信息都有默认值。特别是楼主说的number问题,你点不同的服务器名,就看到不同的number了。另外,开始我不知道IP地址,服务器在国外,我用这个办法,故意在vba里写一个错误命令,搞到IP地址的。
创新互联主营双江网站建设的网络公司,主营网站建设方案,app软件开发公司,双江h5微信平台小程序开发搭建,双江网站营销推广欢迎双江等地区企业咨询
那是因为你没有正常联上SAP,所以后面就不能用CreateObject("SAP.FUNCTIONS").你需要在VBA中先引用SAP Remote control的控件(也就是WDTFUNCS.OCX),这个文件可以在SAP的按装目录下找下,大约是在control的那个子目录下.然后在VBA的菜单-工具-引用中引用这个控件,就可以正常联接到SAP了.顺便讲一句,如果你不想将自己的用户信息暴露给别人(比如密码之类),前面的oConnection.一大堆信息都不用写的,只要写result = oConnection.Logon(0, false)就行了,系统自会让你在执行时输入用户名密码等信息
没太看明白你的需求,是不是说,vba已经控制sap界面表单,提交后,导数数据为excel,然后你想打开那个excle,录制的时候无法办到是吗?
那确实是无法操控的,因为超过sap录制的范围了,sap只录制sap里面的操作。如果要操作接下来导出的excel文件,很简单,因为导入文件的路径和地址都是已知的,直接在vba中 Set ak = Workbooks.Open(wb, UpdateLinks:=0)打开这个导出的excel不就行了。
使用VBA调用SAP RFC和JCO 常用的方法基本一致,大致分为三步:登录系统,执行RFC函数,注销
示例代码
Sub Macro1()
Set R3 = CreateObject("SAP.Functions")
R3.Connection.System = "DEV"
R3.Connection.ApplicationServer = "172.18.28.5"
R3.Connection.Client = "700"
R3.Connection.SystemNumber = "00"
R3.Connection.User = "ZHANGXB"
R3.Connection.Password = "密码"
R3.Connection.Language = "ZH"
R3.Connection.Codepage = "8400"
If R3.Connection.logon(0, True) = True Then
MsgBox "连接成功"
Else
MsgBox "连接不成功"
End If
Set MyFunc = R3.Add("ZGET_KPI")
Set zmonth = MyFunc.Tables("T_ZYRMONTH")
zmonth.AppendRow
zmonth(1, "SIGN") = "I"
zmonth(1, "OPTION") = "EQ"
zmonth(1, "LOW") = "200910"
Result = MyFunc.CALL
Set T_KPI = MyFunc.Tables("T_KPI")
For i = 1 To zmonth.Rows.Count
MsgBox T_KPI(1, "KPI_VALUE")
Next i
End Sub
R3.Connection.LOGOFF