C# VS2010 NCO3.O 连接NCO3.0 调用SAP RFC实例

1 篇文章 0 订阅
1 篇文章 0 订阅

这个实例是钻研了好久,一直努力也一直在CSDN上参考过往高手的例子,终于成功。

1、下载NCO3.O

      下载地址:https://pan.baidu.com/s/1Rgh5dPA56KHKBLa2-pj62g  

       提取码:y73o

       下载后把其解压到一个文件夹中,以备VS2010引用。

2、ABAP创建RFC 函数

     创建一个函数:Z_HDC_RFC_TEST1

     输入物料号:I_MATNR

     输出TABLE:IT_DATA  

     

     

 

 

     IT_DATA 结构说明:

 

 

3、VS2010写程式调用RFC。

   先在引用中附加 rscp4n.dll sapnco.dll sapnco_utils.dll这三个DLL,要不等一下引用会出错。

   此案例是作一个安钮按下BUTTON1后,下面的DataGridView 控件显示数据,以下用户名与密码隐藏以*代替。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SAP.Middleware.Connector;

namespace _1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            GET_combox_data();
        }

        private void GET_combox_data()
        {
            RfcConfigParameters rfcPar = new RfcConfigParameters();
            rfcPar.Add(RfcConfigParameters.Name, "CON");
            rfcPar.Add(RfcConfigParameters.AppServerHost, "192.168.0.20");
            rfcPar.Add(RfcConfigParameters.Client, "220");
            rfcPar.Add(RfcConfigParameters.User, "******");
            rfcPar.Add(RfcConfigParameters.Password, "*****");
            rfcPar.Add(RfcConfigParameters.SystemNumber, "00");
            rfcPar.Add(RfcConfigParameters.Language, "ZH");
            RfcDestination dest = RfcDestinationManager.GetDestination(rfcPar);
            RfcRepository rfcrep = dest.Repository;

            IRfcFunction myfun = null;
            myfun = rfcrep.CreateFunction("Z_HDC_RFC_TEST1");
            myfun.SetValue("I_MATNR", "14019819");
            myfun.Invoke(dest);

            IRfcTable IrfTable = myfun.GetTable("IT_DATA");

            DataTable dt = new DataTable();
            dt.Columns.Add("物料编号");
            dt.Columns.Add("物料描述");

            for (int i = 0; i < IrfTable.Count; i++)
            {
                IrfTable.CurrentIndex = i;
                DataRow dr = dt.NewRow();
                dr["物料编号"] = IrfTable.GetString("MATNR");
                dr["物料描述"] = IrfTable.GetString("MAKTX");
                dt.Rows.Add(dr);
            }

            dgv.DataSource = dt;

        }
    }
}

具体结果如下所示:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值