从0开始实现PB9调用SAP的RFC根据条件查询返回结果的例子
通用在SAP创建相应的RFC功能模块,再使用PB进行相关调用。其它内容应该也可以根据例子进行调整。本例子为根据SAP自带表的航班代码,查询航班计划(从别人获取的SAP虚拟机,自带相关测试数据)。
SAP产品版本为: EHP8 FOR SAP ERP 6.0,使用的SAP客户端为:740,理论上方法应该通用。
特别说明:
在操作时,有时候需要回车进行一些数据确认,如果左下角有黄色提示,可以回车跳过,一般不影响最终结果。
文档可能随时更新,以上网址下载最新版。
文档日期 修改者 修改记录
2022-04-17 郝晓宗 初始版本,完整测试
部分界面:
核心代码:
SAP RFC:
SELECT * FROM SPFLI
INTO TABLE DATA
WHERE CARRID = CARRID.
PB :
oleobject saprfc,connection2,funct,table_d //定义RFC对应对象
long ll_status //状态 DEBUG测试可以用
long ll_rows, ll_cols ,i,j //总行数,总列数 当前行,当前列
string ls_carrid //查询条件参数
string ls_data //为显示数据临时存储
//long ll_ret_row //返回当前导出的数据行数
saprfc = create oleobject
ll_status = saprfc.connecttonewobject("sap.functions.unicode")
connection2 = saprfc.connection
connection2.applicationserver = "192.168.30.170" //服务器IP
connection2.systemnumber = '00' //系统编号
connection2.client = '000' //客户端
connection2.user = 'zddic' //RFC用户
connection2.password = 'c123456' //密码
connection2.language = 'zh' //语言
//connection2.Codepage = "8400"
if connection2.logon(0,true) = false then//判断是否成功
messagebox('connet sap','connect failed')
return
else
// messagebox('connet sap','success')
end if
mle_1.text = '' //置空内容
funct = saprfc.add("Z_RFC_SPFLI") //给接口函数输入参数赋值
ls_carrid = sle_1.text //取窗口的参数输入
funct.Exports('CARRID').value = ls_carrid //传入参数
if funct.call then //调用SAP的RFC函数
table_d = funct.tables //得到从RFC返回的表内容
ll_rows = table_d.item(1).rowcount //取得行数
ll_cols = table_d.item(1).Columncount //取列数
// messagebox(string(ll_rows),string(ll_cols))
if ll_rows <= 0 then return
//循环取数据
for i = 1 to ll_rows step 1
ls_data = string(table_d.item(1).value(i,1)) //从RFC返回的内容里逐个取数据
for j = 2 to ll_cols step 1
ls_data = ls_data + ' ' + string(table_d.item(1).value(i,j))
next
mle_1.text += ls_data + '~r~n' //将数据在界面显示
next
messagebox('提示','行数:' + string(ll_rows) + '~r~n' + '列数:' + string(ll_cols) )
else
messagebox ('提示','导出数据失败! 出错信息: 调用SAP的RFC出错!' + string(funct.Exception) ) //
end if
完整文档及相关PB9代码下载地址:
**** Hidden Message ***** 从0开始实现PB9调用SAP的RFC根据条件查询返回结果的例子 学习,谢谢! 谢谢你的分享 第一次看PB调用SAP的RFC ,学习了 ,谢谢分享
页:
[1]