C#如何通过RFC连接SAP系统
Posted 二流码农
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何通过RFC连接SAP系统相关的知识,希望对你有一定的参考价值。
--定义SAPStart类:用于打开访问SAP的链接桥梁
public class SAPStart
{
//用于接收rfc配置
public static RfcDestination rfcdest = null;
public static RfcRepository rfcrep = null;
//打开sap接口
public static void OpenSAP()
{
/ /如果rfcdest 、rfcrep 没有为空,则不需要再次打开链接的桥梁
if (rfcdest != null && rfcrep != null)
{
return;
}
try
{
//rfc配置
string rfcname = "rfcname";
string rfcsystemid = "rfcsystemid";
string rfcappserverhost = "rfcappserverhost";
string rfcclient = "rfcclient";
string rfcuser = "rfcuser";
string rfcpassword = "rfcpassword";
string rfcsystemnumber = "rfcsystemnumber";
RfcConfigParameters rfc = new RfcConfigParameters();
rfc.Add(RfcConfigParameters.Name, rfcname);
rfc.Add(RfcConfigParameters.SystemID, rfcsystemid);
rfc.Add(RfcConfigParameters.AppServerHost, rfcappserverhost);
rfc.Add(RfcConfigParameters.Client, rfcclient);
rfc.Add(RfcConfigParameters.User, rfcuser);
rfc.Add(RfcConfigParameters.Password, rfcpassword);
rfc.Add(RfcConfigParameters.SystemNumber, rfcsystemnumber);
rfc.Add(RfcConfigParameters.Language, "ZF");
rfc.Add(RfcConfigParameters.PoolSize, "5");
rfc.Add(RfcConfigParameters.MaxPoolSize, "10");
rfc.Add(RfcConfigParameters.IdleTimeout, "500");
rfcdest = RfcDestinationManager.GetDestination(rfc);
rfcrep = rfcdest.Repository;
}
catch (Exception ex)
{
//OpenSAP失败= ex.ToString(),;
throw ex;
}
}
}
---------------------------------------------
----------Get 数据
public static void function_Get()
{
//打开访问SAP的链接桥梁
SAPStart.OpenSAP();
try
{
//调用函数名
IRfcFunction myfun = SAPStart.rfcrep.CreateFunction("函数名");
//设置参数
myfun.SetValue("参数名", "参数值");
//执行函数
myfun.Invoke(SAPStart.rfcdest);
//获取内表
IRfcTable output= myfun.GetTable("内表名");
//获取SAP返回的数据
string message = output.GetString("内表的列名");
}
catch (Exception ex)
{
throw ex;
}
}
---------------------------------------------
----------Post 数据
public static void function_Post()
{
//打开访问SAP的链接桥梁
SAPStart.OpenSAP();
try
{
//调用函数名
IRfcFunction myfun= SAPStart.rfcrep.CreateFunction("函数名");
//结构
IRfcStructure imports= myfun.GetStructure("结构名称");
//执行函数
myfun.Invoke(SAPStart.rfcdest);
//设置参数
mports.SetValue("参数名", "参数值");
IRfcTable output= myfun.GetTable("内表名");
//获取SAP返回的数据
string message = output.GetString("内表的列名");
}
catch (Exception ex)
{
throw ex;
}
}
以上是关于C#如何通过RFC连接SAP系统的主要内容,如果未能解决你的问题,请参考以下文章
还在写SQL做SAP二开?通过RFC调用NetWeaver,让HANA数据库操作更可靠
关于java 通过rfc接口获取sap中的数据,tableParams返回的是二维的数据吗,还有如何获取其中的值