1、安装sap .net connector 3.0 程序,附件中提供
注意根据自己的环境选择:
Compiled with .NET Framework 2.0:
sapnco30P_8-20007347.zip:SAP Connector for Microsoft .NET 3.0.8.0 for Windows 32bit (x86)
sapnco30P_8-20007348.zip:SAP Connector for Microsoft .NET 3.0.8.0 for Windows 64bit (x64)
Compiled with .NET Framework 4.0
sapnco30dotnet40P_8-20007347.zip:SAP Connector for Microsoft .NET 3.0.8.0 for Windows 32bit (x86)
sapnco30dotnet40P_8-20007348.zip: SAP Connector for Microsoft .NET 3.0.8.0 for Windows 64bit (x64)
2、在程序中引用 sapnco.dll ,sapnco_utils.dll
例如:C:\Program Files (x86)\SAP\SAP_DotNetConnector3_x64/下 (根据自己安装情况)
3、部分代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using SAP.Middleware.Connector;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
string MATNR = string.Empty;
public Form1()
{
InitializeComponent();
}
public void Execute()
{
IDestinationConfiguration ID = new MyBackendConfig();
RfcDestinationManager.RegisterDestinationConfiguration(ID);
//登录
RfcDestination prd = RfcDestinationManager.GetDestination("my_asp"); // 这个名称为自己定义,注意和 MyBackendConfig 中一样就行
Execute(prd);
//退出登录
RfcDestinationManager.UnregisterDestinationConfiguration(ID);
}
public void Execute(RfcDestination prd)
{
RfcRepository repo = prd.Repository;
IRfcFunction companyBapi = repo.CreateFunction("sap_Function_name"); //调用函数名
companyBapi.SetValue("param1", "value1"); //设置Import的参数
companyBapi.SetValue("param2", "value2"); //设置Import的参数
companyBapi.Invoke(prd); //执行函数
IRfcTable table = companyBapi.GetTable("out_table");//这个根据自己的参数设置
//声明字段,此字段放入数据库可以实现字段的动态设置
string[] columns = new string[]{
"clumn1",
"clumn2",
"clumn3",
"clumn4",
"clumn5"
};
DataTable dt = new DataTable(); //新建表格
foreach (string clmn in columns)
{
dt.Columns.Add(clmn);
}
for (int i = 0; i < table.RowCount; i++)
{
DataRow dr = dt.NewRow();
foreach (string clmn in columns)
{
dr[clmn] = table.GetString(clmn);
}
dt.Rows.Add(dr); //填充该表格的值
}
this.dataGridView1.DataSource = dt;
prd = null;
repo = null;
}
//登陆SAP前的准备工作
public class MyBackendConfig : IDestinationConfiguration
{
public RfcConfigParameters GetParameters(String destinationName)
{
if ("my_sap".Equals(destinationName))
{
RfcConfigParameters parms = new RfcConfigParameters();
parms.Add(RfcConfigParameters.AppServerHost, "10.10.10.2*"); //SAP主机IP
parms.Add(RfcConfigParameters.SystemNumber, "2*"); //SAP实例
parms.Add(RfcConfigParameters.User, "username"); //用户名
parms.Add(RfcConfigParameters.Password, "password"); //密码
parms.Add(RfcConfigParameters.Client, "800"); // Client
parms.Add(RfcConfigParameters.Language, "ZH"); //登陆语言
parms.Add(RfcConfigParameters.PoolSize, "5");
parms.Add(RfcConfigParameters.IdleTimeout, "60");
return parms;
}
else
return null;
}
public bool ChangeEventsSupported()
{
return false;
}
public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;
}
private void button1_Click(object sender, EventArgs e)
{
Execute();
}
}
}