2020-12-14

C# 调用SAP RFC

结构:

 

 

 安装NuGet包:

 

 

using SAP.Middleware.Connector;using System.Data;namespace DFDN.SDK.ServiceInterface{ public class RfcDemo {  public void Loading()  {   RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(GetParameters()); //连接字符串   RfcDestination SapRfcDestinationForConfig = RfcDestinationManager.GetDestination("dad"); //连接字符串 从App.config配置   RfcRepository SapRfcRepository = SapRfcDestination.Repository;   DataTable dt = new DataTable(); //数据源   dt.Columns.Add("DATA1", typeof(string));   dt.Columns.Add("DATA2", typeof(string));   dt.Columns.Add("DATA3", typeof(string));   IRfcFunction func = SapRfcRepository.CreateFunction("Z_RFC_XXXX");   IRfcTable tSAP = func.GetTable("INPUT_TABLE");   for (int i = 0; i < dt.Rows.Count; i++)   {    string str1 = dt.Rows[i][0].ToString();    string str2 = dt.Rows[i][1].ToString();    string str3 = dt.Rows[i][2].ToString();    IRfcStructure struSAP = tSAP.Metadata.LineType.CreateStructure();    struSAP.SetValue("str1", str1);    struSAP.SetValue("str2", str2);    struSAP.SetValue("str3", str3);    tSAP.Append(struSAP);   }   func.SetValue("INPUT_TABLE", tSAP); //table 参数   func.SetValue("WERKS", "A");  //单个参数    func.SetValue("STATUS", "B"); //单个参数   func.Invoke(SapRfcDestination); //调用   IRfcTable SAPDataTable = func.GetTable("RETURN_TABLE"); //获取表格结果   DataTable table = ToDataTable(SAPDataTable); //转换DataTable   string result = func.GetValue("X").ToString(); //获取指定返回结果  }  /// <summary>  /// RfcTable 转换为 DataTable  /// </summary>  /// <param name="myrfcTable"></param>  /// <returns></returns>  public DataTable ToDataTable(IRfcTable myrfcTable)  {   DataTable loTable = new DataTable();   int liElement;   for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++)   {    RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);    loTable.Columns.Add(metadata.Name);   }   foreach (IRfcStructure Row in myrfcTable)   {    DataRow ldr = loTable.NewRow();    for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++)    {     RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);     ldr[metadata.Name] = Row.GetString(metadata.Name);    }    loTable.Rows.Add(ldr);   }   return loTable;  }  /// <summary>  /// SAP RFC 连接信息设置  /// </summary>  /// <returns></returns>  public RfcConfigParameters GetParameters()  {   RfcConfigParameters parms = new RfcConfigParameters();   parms.Add(RfcConfigParameters.AppServerHost, "192.168.0.114"); //SAP主机IP   parms.Add(RfcConfigParameters.SystemNumber, "01"); //SAP实例   parms.Add(RfcConfigParameters.User, "RFC_EDI"); //用户名   parms.Add(RfcConfigParameters.Password, "init1"); //密码   parms.Add(RfcConfigParameters.Client, "300"); // Client    parms.Add(RfcConfigParameters.Language, "ZH"); //登陆语言   parms.Add(RfcConfigParameters.PoolSize, "10");   parms.Add(RfcConfigParameters.IdleTimeout, "600");   parms.Add(RfcConfigParameters.Name, "DAP");   return parms;  }  }}

<??><configuration> <configSections> <sectionGroup name="SAP.Middleware.Connector">  <sectionGroup name="ClientSettings">  <section name="DestinationConfiguration" type="SAP.Middleware.Connector.RfcDestinationConfiguration,sapnco"/>  </sectionGroup> </sectionGroup> </configSections> <SAP.Middleware.Connector> <ClientSettings>  <DestinationConfiguration>  <destinations>   <add NAME="dad" USER="ddac" PASSWD="qwe" CLIENT="110" SYSNR="00" ASHOST="192.168.0.111" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="10" IDLE_TIMEOUT="600"></add>  </destinations>  </DestinationConfiguration> </ClientSettings> </SAP.Middleware.Connector></configuration>

 









原文转载:http://www.shaoqun.com/a/499846.html

法瑞儿:https://www.ikjzd.com/w/412

鸥鹭:https://www.ikjzd.com/w/2568

黑石集团:https://www.ikjzd.com/w/1339.html


结构:安装NuGet包:usingSAP.Middleware.Connector;usingSystem.Data;namespaceDFDN.SDK.ServiceInterface{publicclassRfcDemo{publicvoidLoading(){RfcDestinationSapRfcDestination=RfcDestinationManager.GetDestinatio
网络星期一:网络星期一
let go:let go
湖南赏桃花:人间仙境桃花源 :湖南赏桃花:人间仙境桃花源
去宏村旅游什么时候最佳?:去宏村旅游什么时候最佳?
中秋去广州谷丰园好玩吗?:中秋去广州谷丰园好玩吗?

No comments:

Post a Comment