纯干货 C# 通过 RFC_READ_TABLE 读取 SAP TABLE
2024-09-01 14:07:22
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表示返回所有的数据 IRfcTable IrfTable2 = myfun.GetTable("OPTIONS"); //OPTIONS为表名,也就是我们需要取数据的表
myfun.Invoke(dest);
此时,IrfTable 里已经有我们需要的数据了,我们可以根据实际需求进行处理。
如果对您有帮助,请帮忙给个推荐,谢谢!
最新文章
- Linux 中我该如何备份系统
- redis主从 以及认证配置
- Git之分支创建策略
- Unity脚本在层级面板中的执行顺序测试3
- C++ const使用详解
- POJ 1944 - Fiber Communications
- HDU-1225 Football Score
- CSS3 边框
- 块对象block小结
- (转)C++中extern “C”含义深层探索
- 动态规划——Distinct Subsequences
- GCC编译器原理(三)------编译原理三:编译过程(3)---编译之汇编以及静态链接【2】
- Linux 命令的20个实用范例,入门必看!
- 01-Python的基础知识3
- C++面向对象多线程入门
- Oracle(一)执行计划
- 系统对接API调用
- 简述Android触摸屏手势识别
- 立即调用的函数表达式---IIFE
- gitolite