ehxz 发表于 2022-4-17 11:13:21

从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 *****

woyaodwn 发表于 2022-5-23 21:04:06

从0开始实现PB9调用SAP的RFC根据条件查询返回结果的例子

hzzz_lgh3399 发表于 2022-7-18 14:24:36

学习,谢谢!

JYpb 发表于 2022-7-28 09:16:35

谢谢你的分享

jie__001 发表于 2023-4-18 09:33:27

第一次看PB调用SAP的RFC ,学习了 ,谢谢分享
页: [1]
查看完整版本: 从0开始实现PB9调用SAP的RFC根据条件查询返回结果的例子

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com