从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。
请帮忙。
答案 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,也无法检查错误。