【问题标题】: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 中。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-21
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多