【问题标题】:Save SAP RFC structure to MSSQL table?将 SAP RFC 结构保存到 MSSQL 表?
【发布时间】:2013-07-03 05:59:43
【问题描述】:
最近我正在做一个项目,需要从 SAP 表中获取数据到 MICROSOFT SQL 表中,我已经完成了连接部分,我还将 SAP 结构值拉入了 ASP.NET。
我的问题是如何将结构保存到 Sql 表中?
这是我的代码;
RfcDestination mydestination = RfcDestinationManager.GetDestination("rfcecp");
RfcRepository myrepository = mydestination.Repository;
IRfcFunction EHSIMSFM = myrepository.CreateFunction("ZEHSIMS");
EHSIMSFM.Invoke(mydestination);
IRfcTable positable = EHSIMSFM.GetTable("POSITIONTAB1");
if (positable.RowCount > 0)"THIS IS THE SAP STRUCTURE WITH ROW COUNT '300'."
{
posid.Text = "working";
}
else
{
posid.Text = "notworking";
}
}
catch (Exception ej)
{
posid.Text = ej.Message;
}
【问题讨论】:
标签:
asp.net
sql
sql-server-2008
system.data.sqlite
sap-dotnet-connector
【解决方案1】:
您可以通过 NCo 3 SAP 连接器从返回的 IRfcTable 收集所有信息。
这里是从 IRfcTable 对象遍历每一行(IRfcStructure)的方法..
foreach (IRfcStructure row in rfcTable)
{
for (int element = 0; element < rfcTable.ElementCount; element++)
{
RfcElementMetadata metadata = rfcTable.GetElementMetadata(element);
// row.GetString(metadata.Name); // get value from row's field
}
// You have your data from a row here..
}
示例:这是将 IRfcTable 转换为 DataTable 的代码。
public static DataTable CreateDataTable(IRfcTable rfcTable)
{
var dataTable = new DataTable();
for (int element = 0; element < rfcTable.ElementCount; element++)
{
RfcElementMetadata metadata = rfcTable.GetElementMetadata(element);
dataTable.Columns.Add(metadata.Name);
}
foreach (IRfcStructure row in rfcTable)
{
DataRow newRow = dataTable.NewRow();
for (int element = 0; element < rfcTable.ElementCount; element++)
{
RfcElementMetadata metadata = rfcTable.GetElementMetadata(element);
newRow[metadata.Name] = row.GetString(metadata.Name);
}
dataTable.Rows.Add(newRow);
}
return dataTable;
}
同样,您可以将数据添加到 MSSQL DB 中。