如何获得RFC的结果

时间:2013-11-18 11:14:35

标签: c# asp.net saprfc sap-connector

从SAP RFC获取数据时,我是全新的。我正在关注许多链接,使用以下代码集与SAP建立连接。

<appSettings> 
   <add key=”ServerHost” value=”127.0.0.1″/>
   <add key=”SystemNumber” value=”00″/>
   <add key=”User” value=”sample”/>  
   <add key=”Password” value=”pass”/>
   <add key=”Client” value=”50″/>
   <add key=”Language” value=”EN”/>
   <add key=”PoolSize” value=”5″/>
   <add key=”PeakConnectionsLimit” value=”10″/>
   <add key=”IdleTimeout” value=”600″/>   
</appSettings>

cs文件

SAPSystemConnect sapCfg = new SAPSystemConnect();
RfcDestinationManager.RegisterDestinationConfiguration(sapCfg);
RfcDestination rfcDest = null;
rfcDest = RfcDestinationManager.GetDestination(“Dev”);.

现在我不知道如何调用特定的RFC并在数据集或列表中获取结果。我也安装了SAP.net Connector。

请帮忙。

1 个答案:

答案 0 :(得分:3)

创建一个有效的RFC目标后,你必须使用RfcDestionation-Method CreateFunction创建一个IRfcFunction对象:

var rfc_read_table = rfcDest.CreateFunction("RFC_READ_TABLE");

现在您可以使用创建的对象来设置参数。可以使用SetValue或GetValue方法设置或检索导入/导出参数:

// we want to read from table kna1 (customer master data)
rfc_read_table.SetValue("QUERY_TABLE", "kna1");
// Delimiter ';'
rfc_read_table.SetValue("DELIMITER", ";");

使用方法GetTable访问表参数。它返回表示表参数的IRfcTable对象:

var fieldsTable = rfc_read_table.GetTable("FIELDS");
// append a new row
fieldsTable.Append();
// set value for field "FIELDNAME" on new row
fieldsTable.SetValue("FIELDNAME", "mandt");
fieldsTable.Append();
fieldsTable.SetValue("FIELDNAME", "kunnr");

现在你可以执行功能

rfc_read_table.Invoke(rfcDest);

RFC_READ_TABLE使用名为“WA”的单个字段在TAB512类型的参数表“data”中返回其数据。调用该函数后,使用方法GetTable创建一个新的IRfcTable对象并迭代其内容。

var returnTable = rfc_read_table.GetTable("DATA");
foreach(IRfcStructure row in returnTable)
{
   string[] fieldValues = row.GetValue("WA").Split(';');
   // process field values
}

请注意,这只是一个例子。例如,功能模块RFC_READ_TABLE未针对客户发布,因此SAP不支持使用此功能。我希望我的语法正确,我现在没有可用的IDE,也无法检查错误。