利用NCO 3.0 调用SAP中的函数
简介
.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中的函数相关推荐
- 天马行空W:在C++中调用DLL中的函数
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- 在C++中调用DLL中的函数
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- 在C++中调用DLL中的函数(2)
本文转自:http://blog.sina.com.cn/s/blog_53004b4901009h3b.html 应用程序使用DLL可以采用两种方式: 一种是隐式链接,另一种是显式链接.在使用DLL ...
- C#调用dll中的函数
C#调用dll中的函数 文章分类:操作系统 文章来源:http://blog.csdn.net/strmagic/archive/2007/11/02/1863462.aspx 大家在实际工作学习C# ...
- 如何调用 DLL 中的函数
如何调用 DLL 中的函数 在 DLL工程中的 cpp中函数定义如下: extern "C" _declspec (dllexport ) int add(int a, ch ...
- 如何调用DLL中的函数
如何调用 DLL 中的函数 在 DLL工程中的 cpp中函数定义如下: extern "C" _declspec (dllexport ) int add(int a, char ...
- 通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?(转)...
通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern "C"声明导出函数? [已结贴,结贴人:darongtou] 如题,网上搜了N多资料,一直找不 ...
- GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数?
GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数? 通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern " ...
- 调用iframe中的函数
前言 360极速浏览器 13.0.2206.0 (正式版本) (32 位) 操作系统 Windows 10 OS Version 1909 (Build 18363.1379) JavaScript ...
最新文章
- python从零实习深度学习_月薪45K的深度程序员教你从零在Python中开发深度学习
- centos 找不到php.ini,centos找不到php.ini文件
- MPB:湖南师大尹佳组-​乳酸菌对酸和胆碱盐的耐受能力
- 23种设计模式及其对应实例-转
- 如何隐藏你写的ABAP代码
- python中打开文件提示编码当时错误_Python:文件编码错误
- 内部结构透视XRAY
- Boost:info hook信息挂钩的测试程序
- SAP CRM product customizing下载的第四个队列
- Extjs4开发中的一些问题
- 他演绎了真正的“寒门逆袭”:从贫苦农村到顶级科学家,如今站在世界之巅,为祖国争光!...
- PSIM软件中 Simplified C Block模块 和 C Block模块区别
- python not instance_Python检查类的实例
- Beta阶段冲刺第一天
- netty channel的线程安全性与@Sharable
- java opencv3轮廓_如何在OpenCV中获得单独的轮廓(并填充它们)?
- SQL Server 2008 附加数据库之后显示为 只读 的解决方法
- 少儿编程python学啥-少儿编程学什么?少儿编程课程体系介绍
- 解读神书《凤凰项目》,带你跳出DevOps转型的所有坑
- [封装插件]酒仙网和京东左侧动态菜单栏案例
热门文章
- onCreate源码分析
- centos下升级jdk版本
- hdu 5631 Rikka with Graph(图)
- C,C++宏中#与##的讲解
- Spark Streaming源码分析 – DStream
- python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解
- 数据库导出到excel解决科学计数法问题
- idea 2018.1 创建springboot开启找回Run Dashboard
- c# 模拟登陆 webbrowser 抓取_《VR+电力——更换绝缘子培训》已登陆Pico Neo 2
- ip地址管理系统_门禁监控管理系统项目总结