純干貨 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 里已經有我們需要的數據了,我們可以根據實際需求進行處理。

 

 

如果對您有幫助,請幫忙給個推薦,謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM