纯干货 C# 通过 RFC_READ_TABLE 读取 SAP TABLE
SAP系统又称企业管理解决方案,是全球企业管理软件与解决方案的技术领袖,同时也是市场领导者。通过其应用软件、服务与支持,SAP持续不断向全球各行业企业提供全面的企业级管理软件解决方案。 在实际开发过程中,通常会遇见其他自主开发的软件系统需要与SAP进行对接,进行数据交互,本文介绍如何通过 C# 语言编写程式访问SAP并查询我们需要的数据。
rfcTable与DataTable
用C#开发的程序,一般采用NCO的方式进行访问数据库,里面涉及到一个rfcTable的类型,这也是一个表,但是跟我们平常工的System.Data里面的DataTable不一样,rfcTable是 SAP 里面返回的一种类型,它也支持循环遍历,我们可以根据实际需要将其转换成DataTable来使用。
SAP为我们提供一个名为【RFC_READ_TABLE】的RFC,我们可以通过这个 RFC 查询表数据,具体使用方法如下:
第一步:定义链接参数
string path="D:\\config.xml"; // 这里是一个配置文件 string SapServer = Common.XmlHelper.GetXmlReader(path, "Config", "SapServer"); string SapClient = Common.XmlHelper.GetXmlReader(path, "Config", "SapClient"); string SapSysNumber = Common.XmlHelper.GetXmlReader(path, "Config", "SapSysNumber"); string SapUser = Common.XmlHelper.GetXmlReader(path, "Config", "SapUser"); string SapPwd = Common.XmlHelper.GetXmlReader(path, "Config", "SapPwd"); string CurrPlant = Common.XmlHelper.GetXmlReader(path, "Config", "Plant");
第二步:实例化参数对象
RfcConfigParameters rfcPar = new RfcConfigParameters(); rfcPar.Add(RfcConfigParameters.Name, "CON"); rfcPar.Add(RfcConfigParameters.AppServerHost, SapServer); rfcPar.Add(RfcConfigParameters.Client, SapClient); rfcPar.Add(RfcConfigParameters.User, SapUser); rfcPar.Add(RfcConfigParameters.Password, SapPwd); rfcPar.Add(RfcConfigParameters.SystemNumber, SapSysNumber); rfcPar.Add(RfcConfigParameters.Language, "EN"); dest = RfcDestinationManager.GetDestination(rfcPar); RfcRepository rfcrep = dest.Repository;
第三步:执行查询
myfun = rfcrep.CreateFunction("RFC_READ_TABLE"); IRfcTable IrfTable = myfun.GetTable("DATA"); myfun.SetValue("QUERY_TABLE", "ZP092"); //ZP092表示需要查询的表名 myfun.SetValue("DELIMITER", "#");//#表示返回数据的分割符号 myfun.SetValue("ROWCOUNT", "0");//0表示返回所有的数据 IRfcTable IrfTable2 = myfun.GetTable("OPTIONS"); //OPTIONS为表名,也就是我们需要取数据的表 myfun.Invoke(dest);
此时,IrfTable 里已经有我们需要的数据了,我们可以根据实际需求进行处理。
如果对您有帮助,请帮忙给个推荐,谢谢!
作者:Allen Chen无影
邮箱:allen0717@163.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?