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 里已经有我们需要的数据了,我们可以根据实际需求进行处理。
如果对您有帮助,请帮忙给个推荐,谢谢!