.NET通过NCO3.0连接SAP并传递数据(一)
1.在新建的项目中引入需要的两个dll文件,sapnco.dll和sapnco_utils.dll(直接安装NCo307_Net20_x86.msi安装包即可获得)
2.创建连接SAP需要的配置类,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using SAP.Middleware.Connector; using System.Configuration; namespace SapInterface { public class BackendSAPConfig : IDestinationConfiguration { #region 重写接口中的方法,获得SAP相关配置信息 public RfcConfigParameters GetParameters(string destinationName) { if (destinationName.Equals("TEST")) { RfcConfigParameters parms = new RfcConfigParameters(); parms.Add(RfcConfigParameters.AppServerHost, ConfigurationManager.AppSettings["ServerHost"]); //SAP主机IP //parms.Add(RfcConfigParameters.SystemID, ConfigurationManager.AppSettings["SystemID"]);//系统ID parms.Add(RfcConfigParameters.SystemNumber, ConfigurationManager.AppSettings["SystemNumber"]); //SAP实例 parms.Add(RfcConfigParameters.User, ConfigurationManager.AppSettings["User"]); //用户名 parms.Add(RfcConfigParameters.Password, ConfigurationManager.AppSettings["Password"]); //密码 parms.Add(RfcConfigParameters.Client, ConfigurationManager.AppSettings["Client"]); // Client parms.Add(RfcConfigParameters.Language, ConfigurationManager.AppSettings["Language"]); //登陆语言 parms.Add(RfcConfigParameters.PoolSize, ConfigurationManager.AppSettings["PoolSize"]); //parms.Add(RfcConfigParameters.MaxPoolSize, "10");已过时,被PeakConnectionsLimit替代 parms.Add(RfcConfigParameters.PeakConnectionsLimit, ConfigurationManager.AppSettings["PeakConnectionsLimit"]); //parms.Add(RfcConfigParameters.IdleTimeout, "60"); return parms; } else { return null; } } #endregion #region 实现接口中的方法 public bool ChangeEventsSupported() { return false; } public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged; #endregion } }
3.主要一些方法如下
View Code
public void nco() { IDestinationConfiguration config = new BackendSAPConfig();//实例化SAP接口配置类 RfcDestinationManager.RegisterDestinationConfiguration(config);//注册 RfcDestination prd = RfcDestinationManager.GetDestination(destinationName.ToUpper());//传入参数获得连接配置 nco(prd); //注意,反注册在NCO 3.0.7.0版本中需要放在nco(prd)后面,而在NCO 3.0.1.0放在nco(prd)前面也行 RfcDestinationManager.UnregisterDestinationConfiguration(config);//反注册 }