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 里已经有我们需要的数据了,我们可以根据实际需求进行处理。

如果对您有帮助,请帮忙给个推荐,谢谢!

最新文章

  1. Linux 中我该如何备份系统
  2. redis主从 以及认证配置
  3. Git之分支创建策略
  4. Unity脚本在层级面板中的执行顺序测试3
  5. C++ const使用详解
  6. POJ 1944 - Fiber Communications
  7. HDU-1225 Football Score
  8. CSS3 边框
  9. 块对象block小结
  10. (转)C++中extern “C”含义深层探索
  11. 动态规划——Distinct Subsequences
  12. GCC编译器原理(三)------编译原理三:编译过程(3)---编译之汇编以及静态链接【2】
  13. Linux 命令的20个实用范例,入门必看!
  14. 01-Python的基础知识3
  15. C++面向对象多线程入门
  16. Oracle(一)执行计划
  17. 系统对接API调用
  18. 简述Android触摸屏手势识别
  19. 立即调用的函数表达式---IIFE
  20. gitolite

热门文章

  1. C++走向远洋——31(六周,项目一,1.1)
  2. PDF 相关操作
  3. sql03
  4. Skeleton Screen加载占位图(内容出现前显示灰色占位图)的分析与实现
  5. JS基础入门篇(十八)—日期对象
  6. Data Vault 简介
  7. Unity 相机平移、旋转、缩放
  8. iview中select搜索
  9. centos7下pymysql安装
  10. 第一个爬虫经历----豆瓣电影top250(经典案例)