1) 新建工程后,首先添加3个Com组建的引用,分别为 SAPFunctionsOCX,SAPLogonCtrl,SAPTableFactoryCtrl;
2) 项目添加引用
using SAPFunctionsOCX;
using SAPLogonCtrl;
using SAPTableFactoryCtrl;
using SAPLogonCtrl;
using SAPTableFactoryCtrl;
3) 连接并调用RFC
SAPLogonControlClass connctl = new SAPLogonControlClass();
//下面的参数值根据实际情况赋值
connctl.Client = "200";
connctl.Language = "EN";
connctl.ApplicationServer = "xxx.xxx.xxx.xxx";//Application server IP
connctl.SystemNumber = 00;
connctl.User = "XXXX";
connctl.Password = "XXXXXXX";
connctl.Client = "200";
connctl.Language = "EN";
connctl.ApplicationServer = "xxx.xxx.xxx.xxx";//Application server IP
connctl.SystemNumber = 00;
connctl.User = "XXXX";
connctl.Password = "XXXXXXX";
Connection conn = (Connection)connctl.NewConnection();
//登陆
if (conn.Logon(null,true))
{
MessageBox.Show("Successful");
}
if (conn.Logon(null,true))
{
MessageBox.Show("Successful");
}
SAPFunctionsClass functions = new SAPFunctionsClass();
functions.Connection = conn;
functions.Connection = conn;
//这里就可以传入Function Name
Function fucntion = (Function)functions.Add("RFC_READ_TABLE");。
Function fucntion = (Function)functions.Add("RFC_READ_TABLE");。
//这里是传入值参数
Parameter parameter1 = (Parameter)fucntion.get_Exports("QUERY_TABLE");
parameter1.Value = "VEKP";
Parameter parameter2 = (Parameter)fucntion.get_Exports("DELIMITER");
parameter2.Value = ";";
Parameter parameter1 = (Parameter)fucntion.get_Exports("QUERY_TABLE");
parameter1.Value = "VEKP";
Parameter parameter2 = (Parameter)fucntion.get_Exports("DELIMITER");
parameter2.Value = ";";
//这里是传入表的参数,这里有两个表OPTIONS和FIELDS
Tables Tables1 = (Tables)fucntion.Tables;
Table table0 = (Table)Tables1.get_Item("OPTIONS");
table0.AppendGridData(1, 1, 1, "EXIDV = '00000000001000000022'");
table0.AppendGridData(1, 1, 1, "EXIDV = '00000000001000000022'");
Table talble1 = (Table)Tables1.get_Item("FIELDS");
talble1.AppendGridData(1, 1, 1, "VENUM");
talble1.AppendGridData(2, 1, 1, "VPOBJKEY");
talble1.AppendGridData(3, 1, 1, "VSTEL");
talble1.AppendGridData(1, 1, 1, "VENUM");
talble1.AppendGridData(2, 1, 1, "VPOBJKEY");
talble1.AppendGridData(3, 1, 1, "VSTEL");
//调用函数,并读取数据
if (fucntion.Call())
{
Tables1 = (Tables)fucntion.Tables;
Table talbe2 = (Table)Tables1.get_Item("DATA");
MessageBox.Show(talbe2.get_Cell(1, 1).ToString());
}
if (fucntion.Call())
{
Tables1 = (Tables)fucntion.Tables;
Table talbe2 = (Table)Tables1.get_Item("DATA");
MessageBox.Show(talbe2.get_Cell(1, 1).ToString());
}
//退出登陆
conn.Logoff();
conn.Logoff();