简介

.Net Connector 3.0,简称 Nco3.0。Nco3.0 是 SAP 针对 .net 平台提供的编程接口,由 Nco1.0/Nco2.0 演变而来。如果使用 .net 平台编程,推荐使用 NCo3.0。3.0 版与之前1.0/2.0 版本比较,不管是 API 还是架构,都重新设计过,也借鉴了 Jco3.0 的设计,所以相对来说更为成熟,也为程序员提供更好的控制性和方便性。

.Net connector 3.0 下载和安装

下载地址:NCO 3.0

安装无非就是放了几个DLL, 选择安装目录,安装后,可以看到目录下有这几个文件,如下图所示:


新建一个WinForm程序,引用两个DLL:sapnco.dll 和 sapnco_utils.dll,如下图所示:


根据下图中SAP的配置,配置C#代码:


首先修改App.config文件中的代码,在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="Conn" USER="15970" PASSWD="369369" CLIENT="410" SYSNR="00" ASHOST="192.168.1.221" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="10"></add></destinations></DestinationConfiguration></ClientSettings></SAP.Middleware.Connector>

然后在测试的Form中增加如下图的代码:

    public partial class Form1 : Form{private RfcDestination _rfcDestination = null;public DataTable dtr = new DataTable();public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){           RegisterDestination();MyInvokeRFCFunctionGetCompanyID();}public void RegisterDestination()  //注册客户端{try{if (_rfcDestination == null){_rfcDestination = RfcDestinationManager.GetDestination("Conn");}}catch (Exception ex){MessageBox.Show(ex.Message);}}public string MyInvokeRFCFunctionGetCompanyID(){IRfcFunction function = null;string str = string.Empty;try{function = _rfcDestination.Repository.CreateFunction("Z_MES_MATQTY_LIST");//调用服务器函数function.SetValue("E_BUKRS","1001");//传入参数function.SetParameterActive(0, true);function.Invoke(_rfcDestination);//执行服务器调用的函数IRfcTable myrfcTable = function.GetTable("ET_ITEM");//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;}}

点击查询按钮即可得出结果。

利用NCO 3.0 调用SAP中的函数相关推荐

  1. 天马行空W:在C++中调用DLL中的函数

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  2. 在C++中调用DLL中的函数

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  3. 在C++中调用DLL中的函数(2)

    本文转自:http://blog.sina.com.cn/s/blog_53004b4901009h3b.html 应用程序使用DLL可以采用两种方式: 一种是隐式链接,另一种是显式链接.在使用DLL ...

  4. C#调用dll中的函数

    C#调用dll中的函数 文章分类:操作系统 文章来源:http://blog.csdn.net/strmagic/archive/2007/11/02/1863462.aspx 大家在实际工作学习C# ...

  5. 如何调用 DLL 中的函数

     如何调用 DLL 中的函数 在 DLL工程中的 cpp中函数定义如下: extern "C" _declspec (dllexport ) int add(int a, ch ...

  6. 如何调用DLL中的函数

    如何调用 DLL 中的函数 在 DLL工程中的 cpp中函数定义如下: extern "C" _declspec (dllexport ) int add(int a, char ...

  7. 通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?(转)...

    通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern "C"声明导出函数? [已结贴,结贴人:darongtou] 如题,网上搜了N多资料,一直找不 ...

  8. GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数?

    GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数? 通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern " ...

  9. 调用iframe中的函数

    前言 360极速浏览器 13.0.2206.0 (正式版本) (32 位) 操作系统 Windows 10 OS Version 1909 (Build 18363.1379) JavaScript ...

最新文章

  1. python从零实习深度学习_月薪45K的深度程序员教你从零在Python中开发深度学习
  2. centos 找不到php.ini,centos找不到php.ini文件
  3. MPB:湖南师大尹佳组-​乳酸菌对酸和胆碱盐的耐受能力
  4. 23种设计模式及其对应实例-转
  5. 如何隐藏你写的ABAP代码
  6. python中打开文件提示编码当时错误_Python:文件编码错误
  7. 内部结构透视XRAY
  8. Boost:info hook信息挂钩的测试程序
  9. SAP CRM product customizing下载的第四个队列
  10. Extjs4开发中的一些问题
  11. 他演绎了真正的“寒门逆袭”:从贫苦农村到顶级科学家,如今站在世界之巅,为祖国争光!...
  12. PSIM软件中 Simplified C Block模块 和 C Block模块区别
  13. python not instance_Python检查类的实例
  14. Beta阶段冲刺第一天
  15. netty channel的线程安全性与@Sharable
  16. java opencv3轮廓_如何在OpenCV中获得单独的轮廓(并填充它们)?
  17. SQL Server 2008 附加数据库之后显示为 只读 的解决方法
  18. 少儿编程python学啥-少儿编程学什么?少儿编程课程体系介绍
  19. 解读神书《凤凰项目》,带你跳出DevOps转型的所有坑
  20. [封装插件]酒仙网和京东左侧动态菜单栏案例

热门文章

  1. onCreate源码分析
  2. centos下升级jdk版本
  3. hdu 5631 Rikka with Graph(图)
  4. C,C++宏中#与##的讲解
  5. Spark Streaming源码分析 – DStream
  6. python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解
  7. 数据库导出到excel解决科学计数法问题
  8. idea 2018.1 创建springboot开启找回Run Dashboard
  9. c# 模拟登陆 webbrowser 抓取_《VR+电力——更换绝缘子培训》已登陆Pico Neo 2
  10. ip地址管理系统_门禁监控管理系统项目总结