最近使用C#调用SAP RFC函数,SAP提供了NCO3.0组件。

下载组件安装,之后引用“sapnco.dll”和“sapnco_utils.dll”两个文件。

在程序中 using SAP.Middleware.Connector;

具体看下面代码

使用app.config文件配置注册客户端连接

  1. <?xml version="1.0"?>
  2. <configuration>
  3. <configSections>
  4. <sectionGroup name="SAP.Middleware.Connector">
  5. <sectionGroup name="ClientSettings">
  6. <section name="DestinationConfiguration" type="SAP.Middleware.Connector.RfcDestinationConfiguration,sapnco"/>
  7. </sectionGroup>
  8. </sectionGroup>
  9. </configSections>
  10. <SAP.Middleware.Connector>
  11. <ClientSettings>
  12. <DestinationConfiguration>
  13. <destinations>
  14. <add NAME="Conn" USER="KY_PG01" PASSWD="ky@123" CLIENT="002" SYSNR="10" ASHOST="192.168.0.22" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="5"></add>
  15. </destinations>
  16. </DestinationConfiguration>
  17. </ClientSettings>
  18. </SAP.Middleware.Connector>
  19. </configuration>
  1. private RfcDestination _rfcDestination = null;
  2. public DataTable dtr = new DataTable();
  3.  
  4. public void RegisterDestination() //注册客户端
  5. {
  6. try
  7. {
  8. if (_rfcDestination == null)
  9. {
  10. _rfcDestination = RfcDestinationManager.GetDestination("Conn");
  11. }
  12. }
  13. catch (Exception ex)
  14. {
  15. MessageBox.Show(ex.Message);
  16. }
  17. }
  18.  
  19. public string InvokeRFCFunctionGetCompanyID(string dateBegin, string dateEnd)
  20. {
  21. IRfcFunction function = null;
  22. string str = string.Empty;
  23. try
  24. {
  25. function = _rfcDestination.Repository.CreateFunction("ZKY_FM_ZM005B");//调用服务器函数
  26. function.SetValue("SO_FKDAT_B", dateBegin);//传入参数
  27. function.SetValue("SO_FKDAT_E", dateEnd);//传入参数
  28. function.SetParameterActive(, true);
  29. function.Invoke(_rfcDestination);//执行服务器调用的函数
  30. IRfcTable myrfcTable = function.GetTable("IT_ZM005B");//rfc server function 返回值table结构名称
  31.  
  32. int liElement = ;
  33. for (liElement = ; liElement <= myrfcTable.ElementCount - ; liElement++)
  34. {
  35. RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
  36. dtr.Columns.Add(metadata.Name);//循环创建列
  37. }
  38. foreach (IRfcStructure dr in myrfcTable)//循环table结构表
  39. {
  40. DataRow row = dtr.NewRow();//创建新行
  41. for (liElement = ; liElement <= myrfcTable.ElementCount - ; liElement++)
  42. {
  43. RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
  44. row[metadata.Name] = dr.GetString(metadata.Name).Trim();
  45. }
  46. dtr.Rows.Add(row);
  47. }
  48. this.dataGridView1.DataSource = dtr;
  49. }
  50. catch (Exception ex)
  51. {
  52. MessageBox.Show(ex.ToString());
  53. }
  54. return str;
  55. }
  56.  
  57. //在事件或方法中调用
  58.  
  59. this.RegisterDestination();
  60. this.InvokeRFCFunctionGetCompanyID("", "");

C# 使用 SAP NCO3.0 调用SAP RFC函数接口的更多相关文章

  1. .NET连接SAP系统专题:SAP中新建可远程调用的RFC(二)

    何谓RFC,就是一个Function,可以被非SAP系统调用,比如VB,C#,Java等.如果我们在RFC中INCLUDE了相关的业务逻辑,那么我们就可以完全操控SAP中的业务数据了.就像在TTE里, ...

  2. Java(JCo3)与SAP系统相互调用

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. SAP RFC函数

    RFC 接口 RFC是对一个函数模块的调用,但是调用者的系统与被调函数所在的系统是不一样的. RFC也可以在系统内被调用,但是通常调用和被调用是在不同的系统中的. 在sap系统中,远程调用的能力是有R ...

  4. 新浪微博 使用OAuth2.0调用API

    # -*- coding: cp936 -*- #python 2.7.10 #xiaodeng #新浪微博 使用OAuth2.0调用API #微博开放接口的调用,都需要获取用户的身份认证.目前微博开 ...

  5. RFC函数的初步使用-同步

    1.由于没有外围系统,采用不同SAP不同client之间进行测试. 首先在A-client搭建需要被调用的RFC函数.在A-client里运行SE37创建函数 在属性页签选择“远程启用的模块” 设定i ...

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

    ,这是SAP针对.Net开发的专用组件,安装完成之后在C:\Program Files\SAP\SAP_DotNetConnector3_x86目录下面会有sapnco_utils.dll sapnc ...

  7. .net 调用SAP RFC函数获取数据的两种方式

    方式1:使用客户端自带的组件 安装客户端以后,添加引用:SAPFunctionsOCX(.net 的Com列表里一般找不到,需要引用DLL[一般位于以下路径:Program Files\SAP\Fro ...

  8. C#通过RFC调用SAP

    using System;using System.Collections.Generic;using SAP.Middleware.Connector;using System.Data;using ...

  9. 还在写SQL做SAP二开?通过RFC调用NetWeaver,让HANA数据库操作更可靠

    相比于从零开始构建全套信息化系统,基于成熟的ERP等行业软件做二次开发是更多中大型企业应对个性化软件需求的首选方案.如何在二开模块中,可靠地对成品软件的数据库进行读写操作,以满足单据自动创建.元数据自 ...

随机推荐

  1. SQL Server 2012 列存储索引分析(翻译)

    一.概述 列存储索引是SQL Server 2012中为提高数据查询的性能而引入的一个新特性,顾名思义,数据以列的方式存储在页中,不同于聚集索引.非聚集索引及堆表等以行为单位的方式存储.因为它并不要求 ...

  2. android 用NineOldAndroid实现的弹出按钮

    NineOldAndroid 1.首先上效果图: 左边这张是没有点击button的时候的效果,   右边这张是点击button 后是以该button为圆的展开5个button

  3. [JAVA] 一个可以编辑、编译、运行Java简单文件的记事本java实现

    本来是Java课做一个仿windows记事本的实验,后来突然脑子一热,结果就给它加了一个编译运行Java文件的功能. 本工程总共大约3000行代码,基本上把所学的java界面.文件.控件的功能都包含在 ...

  4. 股市T+0技巧

    虽然现在股票不能t+0交易了,不过通过股票t+0技巧可以变相的实现t+0交易,尤其在主力方面应用股票t+0技巧更为明显.主力资金一旦介入某股,肯定会建立很大的仓位作为主仓,然后长线持有.然而为了推动股 ...

  5. JS获取元素CSS值的各种方法分析

    先来看一个实例:如何获取一个没有设置大小的字体? <!DOCTYPE html> <html lang="en"> <head> <met ...

  6. paip.c3p0 数据库连接池 NullPointerException 的解决...

    paip.c3p0 数据库连接池 NullPointerException 的解决... 程序ide里面运行正常..外面bat运行错误.. 作者Attilax  艾龙,  EMAIL:14665198 ...

  7. paip. 内存占用少的php ide选择评测总结

    paip. 内存占用少的php ide选择评测总结 php ide主要以内存占用为标准进行评测.. 其次以软件体积为标准.. 作者Attilax  艾龙,  EMAIL:1466519819@qq.c ...

  8. paip.java 线程无限wait的解决

    paip.java  线程无限wait的解决 jprofl>threads>thread dump> 查看棉线程执行的code stack... 估计是.比如.BlockingQue ...

  9. C#:使用MD5对用户密码加密与解密

    C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...

  10. hive函数总结

    转自:http://www.cnblogs.com/end/archive/2012/06/18/2553682.html 1.内置运算符1.1关系运算符 运算符 类型 说明 A = B 所有原始类型 ...