C#如何通过NCO3.0来连接SAP并调用SAP中的RFC

C#如何通过NCO3.0来连接SAP并调用SAP中的RFC
首先安装NCO3.0,这是SAP针对.Net开发的专用组件,安装完成之后在C:\Program Files\SAP\SAP_DotNetConnector3_x86目录下面会有sapnco_utils.dll sapnco.dll rscp4n.dll libicudecnumber.dll四个DLL文件,在项目里面添加引用,找到这个4个DLL文件,引用到项目里面,libicudecnumber.dll会提示无法引用,貌似要将项目的.NET目标平台改为4.0的才可以,这里我没有亲测。
下面开始编程了:

 1 using SAP.Middleware.Connector;
 5 public void GetSapData()
 6         {
 7             RfcConfigParameters rfcPar = new RfcConfigParameters();
 8             rfcPar.Add(RfcConfigParameters.Name, "CON");
 9             rfcPar.Add(RfcConfigParameters.AppServerHost, "IP");
10             rfcPar.Add(RfcConfigParameters.Client, "800");
11             rfcPar.Add(RfcConfigParameters.User, "UserID");
12             rfcPar.Add(RfcConfigParameters.Password, "Password");
13             rfcPar.Add(RfcConfigParameters.SystemNumber, "02");
14             rfcPar.Add(RfcConfigParameters.Language, "EN");
15             RfcDestination dest = RfcDestinationManager.GetDestination(rfcPar);
16             RfcRepository rfcrep = dest.Repository;
17             IRfcFunction myfun = null;
18             myfun = rfcrep.CreateFunction("SAP里面的函数名称");
19             myfun.SetValue("VTYPE", "0");//SAP里面的传入参数
20             myfun.Invoke(dest);
21             IRfcTable IrfTable = myfun.GetTable("IT_ZMYTB2");
22             //提前实例化一个空的表结构出来
23             DataTable dt = new DataTable();
24             dt.Columns.Add("USERID");
25             dt.Columns.Add("USERPWD");
26             dt.Columns.Add("USERADDRESS");
27             //循环把IRfcTable里面的数据放入Table里面,因为类型不同,不可直接使用。
28             for (int i = 0; i < IrfTable.Count; i++)
29             {
30                 IrfTable.CurrentIndex = i;
31                 DataRow dr = dt.NewRow();
32                 dr["USERID"] = IrfTable.GetString("USERID");
33                 dr["USERPWD"] = IrfTable.GetString("USERPWD");
34                 dr["USERADDRESS"] = IrfTable.GetString("USERADDRESS");
35                 dt.Rows.Add(dr);
36             }
37             //将重新生成的Table赋值给数据控件DataGridView。
38             dgv.DataSource = dt;
39         }

 

时间: 2024-08-31 14:25:27

C#如何通过NCO3.0来连接SAP并调用SAP中的RFC的相关文章

C# 网页程序 调用NCO3.0的问题

问题描述 我的系统是WIN1064位的VS2010要开发一个WEB的小程序(没开发过WEB)引用了SAPNCO.dll,sapnco_utils.dll.引用和写程序时一切正常不过在调试时,在实例化RFCRfcConfigParametersrfc=newRfcConfigParameters();时提示:用户代码未处理System.TypeInitializationExceptionHResult=-2146233036Message="SAP.Middleware.Connector.Rf

VS2010调用NCO3.0时发生异常

问题描述 各位大佬,如题,我在专案里面引入了NCO3.0的3个DLL文件,如下:sapnco.dllsapnco_utils.dllrscp4n.dllDLL的版本:3.0.0.42,运行时版本:v4.0.30319,专案框架4.0然后运行时异常就来了,实例化对象RfcConfigParametersConfigRFC=newRfcConfigParameters();的时候报异常"SAP.Middleware.Connector.RfcConfigParameters的类型初始值设定项引发异常

SPL3.0数据连接详解

数据|详解 SPL3.0数据连接详解 SPL3.0数据支持能力 SPL3.0在数据连接方面作了很大的改进,使用多种方式对多种数据库进行连接访问,让用户有了更多的选择, 支持的数据库有:SQL Server .Access.Oracle.其他ODBC连接 支持的连接方式有: 用System.Data.SqlClient访问SQL Server 用System.Data.OleDb访问Access和Oracle 用System.Data.Odbc访问SQL Server.Oracle等其他ODBC连

ble-IOS BLE蓝牙4.0如何连接特定的外设(peripheral)

问题描述 IOS BLE蓝牙4.0如何连接特定的外设(peripheral) 能不能通过外设的mac地址进行指定连接,可是要获取mac地址,必须要先连接外设呀感觉有点矛盾, 或者全部扫描连接符合mac地址的留下不符合的断开然后停止扫描,是不是效率低? 解决方案 扫描周围外设,这是获取mac地址方法:http://blog.csdn.net/macpu/article/details/49805763 解决方案二: 我也知道可以通过180A服务的特征来获取mac地址,但那还是必须先连接上外设,有没

android-Android 蓝牙4.0 如何连接多个设备。获取到BluetoothGatt后却只能连接一个设备

问题描述 Android 蓝牙4.0 如何连接多个设备.获取到BluetoothGatt后却只能连接一个设备 Android 蓝牙4.0 如何连接多个设备.获取到BluetoothGatt后却只能连接一个设备,我尝试建立多个连接把得到的BluetoothGatt放到集合中,然后获取服务,还是控制不了多个. 求给个思路,或者简单的例子. 解决方案 Android蓝牙开发之连接设备 解决方案二: 你也是在做蓝牙吗?求蓝牙app 有吗?

socket-想问各位大神什么情况下本机通过127.0.0.1连接会断开

问题描述 想问各位大神什么情况下本机通过127.0.0.1连接会断开 昨晚在电脑上开了一个自己写的server,然后在同一台电脑上开了一个client,通过127.0.0.1连接上了,今早上看的时候客户端与服务器断开连接了,请问什么情况下会断开连接 解决方案 请问是什么连接呢 解决方案二: TCP如果长时间没有数据通信,连接会自动断开.

请教Enterprise Library 6.0怎样连接Mysql啊?

问题描述 大家好:第一次用EnterpriseLibrary6.0去连接Mysql,弄了好久都没试成功,想请教一下各位.有下面的一断配置,但总是报错:Theconnectionstringforthedefaultdatabase'mysql'doesnotexistordoesnothaveavalidprovider.<configSections><sectionname="dataConfiguration"type="Microsoft.Pract

C#调用SAP RFC如何向RFC的一个表参数传值

问题描述 如题,必须是C#,因为整个项目使用C#完成的,SAP的RFC非常复杂,要传很多参数...,下边是部分代码SAPLogonCtrl.SAPLogonControlClasssapLogon=newSAPLogonCtrl.SAPLogonControlClass();//sapLogon.ApplicationServer="GERPLO.SEC.SAMSUNG.NET";sapLogon.MessageServer="GERPLO.SEC.SAMSUNG.NET&q

C#开发webservice调用SAP的webservice后返回值是表类型,如何获取值?

问题描述 求助,C#调用SAP的webservice后返回值是表类型,如何获取表的行数? 解决方案 解决方案二:什么叫表类型?DataTable?SAP天堂也返回这样的东西?解决方案三:ws返回的就是xml了,里面的数据是可以获取的.至于你说的表,具体是什么?如果是datatable,好办,解析xml就是了.如果单单是某个表名,那就啥都不能获取到.解决方案四:引用2楼guwei4037的回复: ws返回的就是xml了,里面的数据是可以获取的.至于你说的表,具体是什么?如果是datatable,好