前事不忘,后事之师,不忘国耻!

SAP SYBASE论坛中文社区技术服务

 找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 279|回复: 1
收起左侧

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

[复制链接]
ehxz 发表于 2022-4-17 11:13:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

x
通用在SAP创建相应的RFC功能模块,再使用PB进行相关调用。其它内容应该也可以根据例子进行调整。
本例子为根据SAP自带表的航班代码,查询航班计划(从别人获取的SAP虚拟机,自带相关测试数据)。
SAP产品版本为:        EHP8 FOR SAP ERP 6.0,使用的SAP客户端为:740,理论上方法应该通用。

特别说明:
在操作时,有时候需要回车进行一些数据确认,如果左下角有黄色提示,可以回车跳过,一般不影响最终结果。

文档可能随时更新,以上网址下载最新版。
文档日期        修改者        修改记录
2022-04-17        郝晓宗        初始版本,完整测试
               

部分界面:               
sap1.jpg sap2.jpg

核心代码:
  1. SAP RFC:
  2. SELECT * FROM SPFLI
  3.   INTO TABLE DATA
  4.         WHERE CARRID = CARRID.
复制代码

PB :
  1. oleobject saprfc,connection2,funct,table_d //定义RFC对应对象

  2. long ll_status //状态 DEBUG测试可以用

  3. long     ll_rows, ll_cols ,i,j //总行数,总列数 当前行,当前列
  4. string   ls_carrid //查询条件参数
  5. string   ls_data //为显示数据临时存储
  6. //long     ll_ret_row //返回当前导出的数据行数

  7. saprfc = create oleobject
  8. ll_status = saprfc.connecttonewobject("sap.functions.unicode")
  9. connection2 = saprfc.connection
  10. connection2.applicationserver = "192.168.30.170" //服务器IP
  11. connection2.systemnumber = '00' //系统编号
  12. connection2.client = '000' //客户端
  13. connection2.user = 'zddic' //RFC用户
  14. connection2.password = 'c123456' //密码
  15. connection2.language = 'zh' //语言
  16. //connection2.Codepage = "8400"

  17. if connection2.logon(0,true) = false then  //判断是否成功
  18.         messagebox('connet sap','connect failed')
  19.         return
  20. else
  21.         //        messagebox('connet sap','success')
  22. end if

  23. mle_1.text = '' //置空内容
  24. funct = saprfc.add("Z_RFC_SPFLI") //给接口函数输入参数赋值
  25. ls_carrid = sle_1.text //取窗口的参数输入
  26. funct.Exports('CARRID').value = ls_carrid //传入参数

  27. if funct.call then //调用SAP的RFC函数
  28.         table_d = funct.tables //得到从RFC返回的表内容
  29.         ll_rows = table_d.item(1).rowcount //取得行数
  30.         ll_cols = table_d.item(1).Columncount //取列数
  31.         //   messagebox(string(ll_rows),string(ll_cols))
  32.         if ll_rows <= 0 then return
  33.         //循环取数据
  34.         for i = 1 to ll_rows step 1
  35.                 ls_data = string(table_d.item(1).value(i,1)) //从RFC返回的内容里逐个取数据
  36.                 for j = 2 to ll_cols step 1
  37.                         ls_data = ls_data + ' ' + string(table_d.item(1).value(i,j))
  38.                 next
  39.                 mle_1.text += ls_data + '~r~n' //将数据在界面显示
  40.         next
  41.         messagebox('提示','行数:' + string(ll_rows) + '~r~n' + '列数:' + string(ll_cols) )
  42. else
  43.         messagebox ('提示','导出数据失败! 出错信息: 调用SAP的RFC出错!' + string(funct.Exception) ) //
  44. end if
复制代码




完整文档及相关PB9代码下载地址:
游客,如果您要查看本帖隐藏内容请回复
你不共享给别人,谁会共享给你?
SYBASE论坛欢迎您能交换更多好的信息,资料,代码……
富强,民主,文明,和谐;自由,平等,公正,法治;爱国,敬业,诚信,友善!
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
woyaodwn 发表于 昨天 21:04 | 显示全部楼层
从0开始实现PB9调用SAP的RFC根据条件查询返回结果的例子
你不共享给别人,谁会共享给你?
SYBASE论坛欢迎您能交换更多好的信息,资料,代码……
富强,民主,文明,和谐;自由,平等,公正,法治;爱国,敬业,诚信,友善!
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

QQ|Archiver|SYBASE论坛中文社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2022-5-24 04:19 , Processed in 0.040676 second(s), 10 queries , MemCached On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表