2

在从 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 连接器。

请帮忙。

4

1 回答 1

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 访问表参数。它返回一个表示 table 参数的 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 在 TAB512 类型的参数表“data”中返回其数据,其中包含一个名为“WA”的字段。调用函数后,使用 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,也无法检查错误。

于 2013-11-24T11:49:05.430 回答