分享
 
 
 

利用Visual Basic开发SAP接口程序初探

王朝vb·作者佚名  2006-04-14
窄屏简体版  字體: |||超大  

SAP R/3系统是业界最先进、最稳定的ERP系统,国际和国内大型企业采用该系统的比例遥遥领先于其它ERP系统的总和。SAP R/3内建了二次开发平台,使用的开发语言叫做ABAP,是一种类似于COBOL的编程语言。ABAP在报表输出方面功能相对较弱(只能按行打印在屏幕上或者导出到Excel中处理),所以日常工作中经常需要在外部开发程序。通过程序接口自动读取SAP R/3的数据表(视图),在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。

SAP R/3的接口方式主要有RFC、IDOC、BAPI三种,本文要介绍的是相对比较简单的RFC(Romote Function Call,远程函数调用)。SAP系统RFC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。下面是RFC调用的模型:

本文主要不是讨论SAP R/3函数的开发,因为使用SAP的公司一般都有专门的ABAP开发人员。大家如果有机会接触ABAP平台,可以通过事务代码SE37进入ABAP开发平台的"函数编制器"进行函数开发测试。如图:

下面主要以VB为例介绍一下SAP接口RFC的开发思路。在SAP客户端SAP Gui Client安装的时候,注意选择安装附带的SDK包(最保险是选择完全安装)。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接口开发技术。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有