利用VisualBasic开发SAP接口程序初探
SAP R/3系统是业内最先进、最稳定的ERP系统。国际国内大型企业采用该系统的比例远远高于其他ERP系统的总和。SAP/3内置了二次开发平台,使用的开发语言叫做ABAP,是一种类似于COBOL的编程语言。ABAP在报表输出方面比较弱(只能逐行打印在屏幕上或者导出到Excel进行处理),所以日常工作中经常需要对外开发程序。通过程序接口自动读取SAP R/3的数据表(视图),对外进行处理,使用crystal reports等工具生成符合中国人习惯的报表样式。
SAP R/3主要有三种接口模式:RFC、IDOC和BAPI。本文将介绍相对简单的RFC(远程函数调用)。调用SAP RFC的原理其实很简单。有一些类似三层架构的C/S系统。第三方客户端程序通过接口调用SAP内部的标准或自定义函数,并获取函数返回的数据进行处理,然后显示或打印。以下是RFC调用的模型:
本文主要不讨论SAP R/3函数的开发,因为使用SAP的公司一般都有专门的ABAP开发人员。如果有机会接触ABAP平台,可以通过交易代码SE37进入ABAP开发平台的“函数编译器”进行函数开发测试。如图所示:
下面主要以VB为例介绍SAP接口RFC的开发思路。在SAP客户端中安装SAP Gui客户端时,注意安装中包含的SDK包(最安全的选择是完全安装)。RFC接口程序开发主要使用控件" SAP。Functions”,在外部程序中模拟SAP Gui客户端的用户登录和函数调用,然后返回函数的值。请看以下程序片段和关键注释(尤其是test_Click()):
Privatecommand1 _ click ()
'定义R/3用户名和密码变量(用户名要经过SAP管理员授权才能运行函数)
Dim logname As String * 22,password As String * 22
调用logonr3(logname,password)'调用SAP登录接口程序
If logflag Then '调用生产开发系统的开关
statusbar1。visible = true
statusbar1。simpletext = "登录SAP R/3系统..."
Dim R3AppServer为字符串,R3Client为字符串, R3 no as string[/Br/]if form 2 . opp rd . value then[/Br/]'以下服务器参数应根据客户配置进行更改
R3AppServer = "10.3.1.4 " '生产系统服务器IP
R3 = " 800 " '生产系统组代码
R3SystemNo = "00 " '生产系统编号[/Br/]Else[/Br/]R3 AppServer = " 10 . 3 . 3 . 1 " '开发系统服务器IP[/Br/] 所有控件和值都不可用
Set functions = createobject(" sap . functions ")'创建RFC的本地对象
Set Connect = functions . connection '设置连接
Connect . applicationserver = R3 appserver '分配服务器IP
Connect . client = R3 client '分配SAP组代码
Connect。 Language = "ZH " '为SAP系统接口
连接设置中文。User = Trim(logname)' assign SAP登录用户名
connect . password = Trim(password)' assign SAP登录用户密码
connect . system number = R3 system no ' assign SAP系统号
如果没有connect.logon (0,true)则'软件登录SAP并判断
MsgBox "登录SAP R/3失败,请重新登录!",vbOKOnly+VB example,"系统提示"
command 1 . setfocus
else '成功登录SAP
command 1 . enabled = false
command 2 . enabled = true
test . enabled = true[/br]
StatusBar1。SimpleText = ""
StatusBar1。visible = False
End If
End Sub
Privatecommand2 _ click()'注销SAP登录
connect . Log off
command 2 . enabled = false
command 1 . enabled = true
test . enabled = false
end sub
PrivateCommand3 _ click()'退出SAP接口演示程序
if form 1 . command 2 . enabled then
msgbox "请在退出前断开SAP R/3系统!",vbOKOnly+vbInformation,"系统提示"
else
end
end if
end sub
private Sub Form _ Load()
command 2。Enabled = False
测试。enabled = False
logo flag = False
End Sub
PrivateTest _ Click ()' SAP RFC远程调用处理主演示
Dim Get Customers As Object
Dim Customers As Object
Dim I As Integer
通过RFC接口远程运行SAP内部函数RFC _ customer _ Get
'并分配要调用的SAP内置函数的名称
set Get Customers = functions . add(" RFC _ customer _ Get ")
get customers . exports(" kunr ")= " 0000000103 " '将值(客户代码)分配给函数条目
'将查询表名称分配给函数条目
set customers = get customers . tables(" customer _ t ")
获取客户。“call then”成功遍历I =个客户的所有信息项
。rowcount
msgbox customers(I," kunr ")
next I
else
msgbox "搜索错误!错误:"+get customers . exception
end if
end sub
SAP的RFC调用是其接口技术中最简单易行的方式。易于开发,特别适合外部报表开发,但其对于大数据量的查询效率相对较低。掌握它之后,您可以进一步学习先进的IDOC和BAPI界面开发技术。
0条评论