下面主要以一段程序为例介绍一下SAP接口RFC的开发思路。RFC接口程序开发,主要用的是 "SAP.Functions "这个控件,通过控件在外部程序模拟SAP Gui Client的用户登录和函数调用,然后返回函数的值。
请看下面的程序片段和重点注解(尤其是test_Click()):
Private Sub Command1_Click()
' 定义R/3用户名和密码变量(用户名应由SAP管理员开运行函数的权限)
Dim logname As String * 22, password As String * 22
Call logonr3(logname, password) ' 调用SAP登录界面程序
If logflag Then ' 调用生产、开发系统开关
StatusBar1.Visible = True
StatusBar1.SimpleText = "正在登录SAP R/3系统... "
Dim R3AppServer As String, R3Client As String, R3SystemNo As String
If Form2.opPRD.Value Then
' 以下服务器参数请根据客户配置情况更改
R3AppServer = "10.3.1.4 " ' 生产系统服务器IP
R3Client = "800 " '生产系统集团代码
R3SystemNo = "00 " '生产系统号
Else
R3AppServer = "10.3.3.1 " ' 开发系统服务器IP
R3Client = "101 "
R3SystemNo = "00 "
End If
Unload Form2 ' 释放 Form2 , 所有控件及值不可用
Set Functions = CreateObject( "Sap.Functions ") ' 创建RFC的本地对象
Set Connect = Functions.Connection ' 设置连接
Connect.ApplicationServer = R3AppServer ' 赋值服务器IP
Connect.Client = R3Client ' 赋值SAP集团代码
Connect.Language = "ZH " ' 置SAP系统界面中文
Connect.User = Trim(logname) ' 赋值SAP登录用户名
Connect.password = Trim(password) ' 赋值SAP登录用户密码
Connect.SystemNumber = R3SystemNo ' 赋值SAP系统号
If Not Connect.Logon(0, True) Then ' 软件登录SAP并判断
MsgBox "登录SAP R/3失败,请重新登录! ", vbOKOnly + vbExclamation, "系统提示 "
Command1.SetFocus
Else ' 登录SAP成功
Command1.Enabled = False
Command2.Enabled = True
test.Enabled = True
End If
StatusBar1.SimpleText = " "
StatusBar1.Visible = False
End If
End Sub
Private Sub Command2_Click() ' 注销SAP登录
Connect.LogOff
Command2.Enabled = False
Command1.Enabled = True
test.Enabled = False
End Sub
Private Sub Command3_Click() ' 退出SAP接口演示程序
If Form1.Command2.Enabled Then
MsgBox "退出前请断开SAP R/3系统! ", vbOKOnly + vbInformation, "系统提示 "
Else
End
End If
End Sub
Private Sub Form_Load()
Command2.Enabled = False
test.Enabled = False
logoflag = False
End Sub
Private Sub test_Click() ' SAP RFC远程调用处理主演示
Dim GetCustomers As Object
Dim Customers As Object
Dim i As Integer
' 通过RFC接口远程运行SAP内部函数RFC_CUSTOMER_GET
' 赋要调用的SAP内建函数名
Set GetCustomers = Functions.Add( "RFC_CUSTOMER_GET ")
GetCustomers.Exports( "KUNNR ") = "0000000103 " ' 向函数入口赋值(客户代码)
' 向函数入口赋查询表名称
Set Customers = GetCustomers.Tables( "CUSTOMER_T ")
If GetCustomers.Call Then ' 调用成功遍历显示客户所有信息条目
For i = 1 To Customers.rowcount
MsgBox Customers(i, "KUNNR ")
Next i
Else
MsgBox " 搜索出错! 出错信息: " + GetCustomers.Exception
End If
End Sub
SAP的RFC调用是其接口技术中最简单和易用的一种方式,该方式开发比较简便,特别适合于外部报表开发,但对于大数据量的查询效率相对较低。若想提高效率需进一步学习高级的IDOC和BAPI接口开发技术。
请看下面的程序片段和重点注解(尤其是test_Click()):
Private Sub Command1_Click()
' 定义R/3用户名和密码变量(用户名应由SAP管理员开运行函数的权限)
Dim logname As String * 22, password As String * 22
Call logonr3(logname, password) ' 调用SAP登录界面程序
If logflag Then ' 调用生产、开发系统开关
StatusBar1.Visible = True
StatusBar1.SimpleText = "正在登录SAP R/3系统... "
Dim R3AppServer As String, R3Client As String, R3SystemNo As String
If Form2.opPRD.Value Then
' 以下服务器参数请根据客户配置情况更改
R3AppServer = "10.3.1.4 " ' 生产系统服务器IP
R3Client = "800 " '生产系统集团代码
R3SystemNo = "00 " '生产系统号
Else
R3AppServer = "10.3.3.1 " ' 开发系统服务器IP
R3Client = "101 "
R3SystemNo = "00 "
End If
Unload Form2 ' 释放 Form2 , 所有控件及值不可用
Set Functions = CreateObject( "Sap.Functions ") ' 创建RFC的本地对象
Set Connect = Functions.Connection ' 设置连接
Connect.ApplicationServer = R3AppServer ' 赋值服务器IP
Connect.Client = R3Client ' 赋值SAP集团代码
Connect.Language = "ZH " ' 置SAP系统界面中文
Connect.User = Trim(logname) ' 赋值SAP登录用户名
Connect.password = Trim(password) ' 赋值SAP登录用户密码
Connect.SystemNumber = R3SystemNo ' 赋值SAP系统号
If Not Connect.Logon(0, True) Then ' 软件登录SAP并判断
MsgBox "登录SAP R/3失败,请重新登录! ", vbOKOnly + vbExclamation, "系统提示 "
Command1.SetFocus
Else ' 登录SAP成功
Command1.Enabled = False
Command2.Enabled = True
test.Enabled = True
End If
StatusBar1.SimpleText = " "
StatusBar1.Visible = False
End If
End Sub
Private Sub Command2_Click() ' 注销SAP登录
Connect.LogOff
Command2.Enabled = False
Command1.Enabled = True
test.Enabled = False
End Sub
Private Sub Command3_Click() ' 退出SAP接口演示程序
If Form1.Command2.Enabled Then
MsgBox "退出前请断开SAP R/3系统! ", vbOKOnly + vbInformation, "系统提示 "
Else
End
End If
End Sub
Private Sub Form_Load()
Command2.Enabled = False
test.Enabled = False
logoflag = False
End Sub
Private Sub test_Click() ' SAP RFC远程调用处理主演示
Dim GetCustomers As Object
Dim Customers As Object
Dim i As Integer
' 通过RFC接口远程运行SAP内部函数RFC_CUSTOMER_GET
' 赋要调用的SAP内建函数名
Set GetCustomers = Functions.Add( "RFC_CUSTOMER_GET ")
GetCustomers.Exports( "KUNNR ") = "0000000103 " ' 向函数入口赋值(客户代码)
' 向函数入口赋查询表名称
Set Customers = GetCustomers.Tables( "CUSTOMER_T ")
If GetCustomers.Call Then ' 调用成功遍历显示客户所有信息条目
For i = 1 To Customers.rowcount
MsgBox Customers(i, "KUNNR ")
Next i
Else
MsgBox " 搜索出错! 出错信息: " + GetCustomers.Exception
End If
End Sub
SAP的RFC调用是其接口技术中最简单和易用的一种方式,该方式开发比较简便,特别适合于外部报表开发,但对于大数据量的查询效率相对较低。若想提高效率需进一步学习高级的IDOC和BAPI接口开发技术。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/183242/viewspace-683331/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/183242/viewspace-683331/