本文就说明在C#中如何编写代码来调用SAP中的RFC函数获取数据。

首先需要引用两个NCO3.0的DLL

DLL下载地址:http://files.cnblogs.com/mengxin523/SAP_DotNetConnector3.zip

 //程序代码页面引用:
using SAP.Middleware.Connector; //代码如下:
namespace SAP_RFC { public partial class Form1 : Form { string MATNR = string.Empty; public Form1() { InitializeComponent(); } public void nco() { IDestinationConfiguration ID = new MyBackendConfig(); RfcDestinationManager.RegisterDestinationConfiguration(ID); RfcDestination prd = RfcDestinationManager.GetDestination("PRD_000"); RfcDestinationManager.UnregisterDestinationConfiguration(ID); nco(prd); } public void nco(RfcDestination prd) { RfcRepository repo = prd.Repository; IRfcFunction companyBapi = repo.CreateFunction("ZRFC_MARA_INFO"); //调用函数名 companyBapi.SetValue("MATNR", MATNR); //设置Import的参数 companyBapi.Invoke(prd); //执行函数 IRfcTable table = companyBapi.GetTable("IT_MARA"); //获取相应的品号内表 string MAKTX = companyBapi.GetValue("MAKTX").ToString(); //获取品名 DataTable dt = new DataTable(); //新建表格 dt.Columns.Add("品号"); //表格添加一列 for (int i = ; i < table.RowCount; i++) { table.CurrentIndex = i; //当前内表的索引行 DataRow dr = dt.NewRow(); dr[] = table.GetString("MATNR"); //获取表格的某行某列的值 dt.Rows.Add(dr); //填充该表格的值 } if (MATNR == "") { for (int i = ; i < dt.Rows.Count; i++) { this.comboBox1.Items.Add(dt.Rows[i][].ToString()); //填充下拉框 } } this.label1.Text = MAKTX; //显示品名 prd = null; repo = null; } //登陆SAP前的准备工作 public class MyBackendConfig : IDestinationConfiguration { public RfcConfigParameters GetParameters(String destinationName) { if ("PRD_000".Equals(destinationName)) { RfcConfigParameters parms = new RfcConfigParameters(); parms.Add(RfcConfigParameters.AppServerHost, "192.168.1.3"); //SAP主机IP parms.Add(RfcConfigParameters.SystemNumber, ""); //SAP实例 parms.Add(RfcConfigParameters.User, "MENGXIN"); //用户名 parms.Add(RfcConfigParameters.Password, ""); //密码 parms.Add(RfcConfigParameters.Client, ""); // Client parms.Add(RfcConfigParameters.Language, "ZH"); //登陆语言 parms.Add(RfcConfigParameters.PoolSize, ""); parms.Add(RfcConfigParameters.MaxPoolSize, ""); parms.Add(RfcConfigParameters.IdleTimeout, ""); return parms; } else return null; } public bool ChangeEventsSupported() { return false; } public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged; } private void Form1_Load(object sender, EventArgs e) { comboBox1.Items.Clear(); nco(); comboBox1.SelectedIndex = ; } //当下拉框索引变化的时候传递品号进去查询出品名出来 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { MATNR = comboBox1.Text.ToString(); nco(); } } }

我想这个C#代码很简单,我就不多做详细说明了。结果如下:

SAP中品号信息如下:

由此可见数据完全OK,调用成功。

程序在第一次载入的时候有点慢,在链接SAP和登陆。后续在下拉框变化的时候就立马显示出品名出来了,丝毫没有任何停顿。第二次链接SAP的时候大概是不必在登陆了,SAP系统中已有登陆信息,运行T-CODE:SM04

红色框中这两个即是我们的RFC调用所留下的登录会话。一旦我们的C#程序退出之后,这两个RFC也就退出了。

如果我们的C#程序是ASP.NET的话,页面关闭之后这个RFC登录信息都还在的。除非IIS关闭,否则只有等到SAP系统超时退出这两个登陆会话了。

原文:http://blog.csdn.net/mengxin523/article/details/6710091

.NET连接SAP系统专题:C#调用RFC代码(三)的更多相关文章

  1. Java连接Sap系统调并调用RFC函数

    参考博客:https://blog.csdn.net/qq_36026747/article/details/81287462                   https://www.cnblog ...

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

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

  3. .NET连接SAP系统专题:.NET调用RFC几种方式(一)

    本来今天是要写一篇关于NCO3.0的东西,就是关乎.NET调用SAP的RFC的,支持VS2010和.NET 4.0等.现在网上到处都是充斥着NCO1.X和NCO2.0,需要用VS2003来使用,都是一 ...

  4. .NET连接SAP系统专题:BAPI_TRANSACTION_COMMIT的使用方法(十)

    from:http://scnblogs.techweb.com.cn/mengxin/archives/5.html 为什么.net调用SAP的BAPI接口需要调用BAPI_TRANSACTION_ ...

  5. C#通过RFC连接sap系统

    先理解一下 RFC(Romote Function Call)远程函数调用 调用前提: 1.要想通过C# 通过RFC调用SAP端,SAP端要存在RFC远程调用的函数才行(例如SAP端通过SE37创建) ...

  6. C#与SAP系统的接口调用

    Sap作为ERP的龙头企业,在企业信息化建设中是有目共睹的,特别是财务.人力.物流等发挥着极大作用,占领着半壁江山,所以与企业系统用SAP软件的接口对接很是普遍,简单介绍一下与SAP接口的一点点儿心得 ...

  7. JAVA连接SAP

    1.首先需要在SAP事务码SE37中新建一个可以被远程调用的RFC 事务码:SE37 新建一个函数组:输入事务码SE37回车后,来到函数构建器屏幕,到上面一排菜单栏:转到 -> 函数组 -> ...

  8. 登陆到 SAP 系统后的用户出口

    增强类型:smod 增强名称:SUSR0001 组件(退出功能模块):EXIT_SAPLSUSF_001 功能:用户每次登陆SAP系统后都会调用这个SUSR0001增强,可以在FUNCTION EXI ...

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

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

随机推荐

  1. npoi z

    http://blog.csdn.net/fireghost57/article/details/25623143 http://www.cnblogs.com/jiagoushi/archive/2 ...

  2. [算法 笔记]2014年去哪儿网 开发笔试(续)第一题BUG修正

    上一篇的blog地址为:http://www.cnblogs.com/life91/p/3313868.html 这几天又参加了一个家公司的笔试题,在最后的编程题中竟然出现了去哪儿网开发的第一题,也就 ...

  3. yii框架AR详解

    虽 然Yii DAO可以处理事实上任何数据库相关的任务,但很可能我们会花费90%的时间用来编写一些通用的SQL语句来执行CRUD操作(创建,读取,更新和删除). 同时我们也很难维护这些PHP和SQL语 ...

  4. 从今天开始写博客、托管代码到 Github

    最近看了一篇文章,译名<简历危险>,原名<Resumes are dangerous>. 作者为Alex Maccaw,他有一篇文章曾经在网上流传甚广——<Traveli ...

  5. 重新安装python

    1. 在上次进行安装python的时候,很多东西不能用,例如后退键,删除键,都是不能在命令行中使用,主要原因是在编译python的时候,相关的安装包没有进行安装,从而导致出现乱码,在编译最新版本的py ...

  6. 在Ubuntu下ADT识别不出真机的解决办法

    前两天把系统换成Ubuntu 12.04,今天在写代码的时候准备真机调试,结果ADT识别不出真机,我擦.果断网上查找了一下解决办法,经过半个小时左右的折腾,尼玛,终于搞定了.具体解决办法如下: 1.先 ...

  7. TopFreeTheme精选免费模板【20130703】

    今天我们给大家分享13个最新的主题模板,5款WordPress主题,5款Joomla模板,3款OpenCart主题. BowThemes – BT Folio v1.0 Template for Jo ...

  8. 在C语言环境下使用google protobuf

    本文写给经常使用C编程且不喜欢C++而又要经常使用google protobuf的人.        经常写通讯程序的人对数据进行序列化或者反序列化时,可能经常使用google的protobuf(PB ...

  9. Python 最佳实践

    前言 对我来说,以前每次面试是我审视自己,检验自己的一种方式.每次准备面试,以及被面试官问住的时候才会发现,其实我python我学的还不够好.工作中也是,可以从其他的同事那里获得成长.但是我今天说的是 ...

  10. 分享一个自己用的Objective-C的Http接连类

    很久没有更新博客了,所以分享一个. @protocol HttpListenerDelegate; @interface BaseHttp : NSObject { } @property (nona ...