Connection对象
Connection对象负责连接至SAP系统,其他对象,比如SAPFunctions都要指定Connection对象作为其属性。上篇的编程模型,图示如下:
如何查看Connection对象的属性和方法
在VBE中添加引用后,按下F2键转到对象浏览器界面(或者使用菜单【视图】-【对象浏览器】),可以看到SAPLogonCtrl包括SAPLongonControl和Connection两个类。在这里可以看到它们的各自的方法和属性。
Connection对象的重要属性
ApplicationServer:应用程序服务器,为IP地址或者字符串,String类型
System:GUI登陆界面设置的系统标识,String类型
SystemNumber:GUI登陆界面设置的实例编号,Long类型
SAPRouter:GUI登陆界面设置中的SAPRouter字符串,外网访问需要设置的路由字符串,String类型
Client、User、Password、Language,很直观,不多说。
IsConnected: 连接的状态。使用Logon方法后,可以使用IsConneced属性判断连接的状态,共有5个值:
- Const tloRfcNotConnected = 0
- Const tloRfcConnected = 1
- Const tloRfcConnectCancel = 2
- Const tloRfcConnectParameterMissing = 4
- Const tloRfcConnectFailed = 8
Connection对象的重要方法
Logon()方法
功能:登陆SAP
语法:Function Logon(hWnd, bSilent As Boolean) As Boolean
说明:Silent登陆是指在登陆的时候,不出现登陆对话框。需要在程序中指定登录到SAP系统的完整的信息:Application Server, System number, user, password, client, language
Logoff()方法
功能:注销SAP
语法:Sub Logoff()
晚绑定
代码中,我们使用了Set logonControl = New SAPLogonControl语句。这是早绑定的使用方法。也可以用Set sapLogon = CreateObject(“SAP.LogonControl.1”)进行晚绑定。晚绑定允许在VBE中不添加SAPLogonControl,也可以使用。原理是系统注册表中存放了组件的CLASSID。
晚绑定示例
Dim sapLogon As Object
Dim sapConnection As Object
Public Sub Logon_LateBinding()
Set sapLogon = CreateObject("SAP.LogonControl.1")
Set sapConnection = sapLogon.NewConnection()
Call sapConnection.Logon(0, False)
Debug.Print sapConnection.IsConnected
End Sub
Silent Logon
Silent logon使用代码中指定的用户名和密码,登录到指定的SAP系统,在代码中必须填充完整的登陆信息。示例如下:
Dim sapLongonControl As SAPLogonCtrl.SAPLogonControl
Dim sapConnection As SAPLogonCtrl.Connection
Public Sub ConnectSAP()
Set sapLongonControl = CreateObject("SAP.LogonControl.1")
Set sapConnection = sapLongonControl.NewConnection
' Fill all required properties
With sapConnection
.System = "XXX" '系统标识
.ApplicationServer = "sap-dev" '应用服务器,一般为IP地址
.SAPRouter = "/H/XXX.XX.XXX.XX/H/" '外网连接的SAP路由
.SystemNumber = "00" '实例编号
.Client = "800"
.User = "xxxx"
.Password = "xxxx"
End With
Call sapConnection.Logon(0, True) ' hWnd, Silent Logon
If sapConnection.IsConnected = tloRfcConnected Then
MsgBox "OK"
Else
MsgBox "Error code:" & sapConnection.IsConnected
End If
sapConnection.Logoff
End Sub
参考资料
http://scn.sap.com/docs/DOC-52886
SAP NetWeaver RFC SDK – RFC Client Programs
http://scn.sap.com/docs/DOC-47152
如何在Excel中使用VB宏连接SAP系统