这个实例是钻研了好久,一直努力也一直在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;
}
}
}
具体结果如下所示: