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系统的主要内容,如果未能解决你的问题,请参考以下文章

jco3调用sap系统的rfc连接不上 请高手指点

还在写SQL做SAP二开?通过RFC调用NetWeaver,让HANA数据库操作更可靠

关于java 通过rfc接口获取sap中的数据,tableParams返回的是二维的数据吗,还有如何获取其中的值

SAP RFC函数远程调试跟踪管理软件

java 调用 sap rfc函数 rfc函数是自定义的还是sap系统组件自带的

如何在SAP gateway系统配置路由到后台系统的OData服务路径