当前位置:首页 > Windows程序 > 正文

C# 使用 SAP NCO3.0 调用SAP RFC函数接口

2021-03-26 Windows程序

最近使用C#调用SAP RFC函数,,SAP提供了NCO3.0组件。

下载组件安装,之后引用“sapnco.dll”和“sapnco_utils.dll”两个文件。

在程序中 using SAP.Middleware.Connector;

具体看下面代码

使用app.config文件配置注册客户端连接

<?xml version="1.0"?> <configuration> <configSections> <sectionGroup> <sectionGroup> <section type="SAP.Middleware.Connector.RfcDestinationConfiguration,sapnco"/> </sectionGroup> </sectionGroup> </configSections> <SAP.Middleware.Connector> <ClientSettings> <DestinationConfiguration> <destinations> <add USER="KY_PG01" PASSWD="ky@123" CLIENT="002" SYSNR="10" ASHOST="192.168.0.22" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="5"></add> </destinations> </DestinationConfiguration> </ClientSettings> </SAP.Middleware.Connector> </configuration>

private RfcDestination _rfcDestination = null; public DataTable dtr = new DataTable(); public void RegisterDestination() //注册客户端 { try { if (_rfcDestination == null) { _rfcDestination = RfcDestinationManager.GetDestination("Conn"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } public string InvokeRFCFunctionGetCompanyID(string dateBegin, string dateEnd) { IRfcFunction function = null; string str = string.Empty; try { function = _rfcDestination.Repository.CreateFunction("ZKY_FM_ZM005B");//调用服务器函数 function.SetValue("SO_FKDAT_B", dateBegin);//传入参数 function.SetValue("SO_FKDAT_E", dateEnd);//传入参数 function.SetParameterActive(0, true); function.Invoke(_rfcDestination);//执行服务器调用的函数 IRfcTable myrfcTable = function.GetTable("IT_ZM005B");//rfc server function 返回值table结构名称 int liElement = 0; for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++) { RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement); dtr.Columns.Add(metadata.Name);//循环创建列 } foreach (IRfcStructure dr in myrfcTable)//循环table结构表 { DataRow row = dtr.NewRow();//创建新行 for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++) { RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement); row[metadata.Name] = dr.GetString(metadata.Name).Trim(); } dtr.Rows.Add(row); } this.dataGridView1.DataSource = dtr; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } return str; } //在事件或方法中调用 this.RegisterDestination(); this.InvokeRFCFunctionGetCompanyID("20120401", "20120901");

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68081.html