Fetch the value of nested structure returned by RFC?

点点圈 提交于 2020-07-07 09:09:59

问题


I am new to C#. I have rfc that returns data from SAP system as nested structure but when I'am fetching that data using:

IrfcTable table = rfc.getTable("exporting_parameter");       // et_customer

it returns only first inner structure only. For example my exporting internal table for rfc is et_customer that contains sub structure as follow:

gen_data
 bank data
 tax data

it returns value inside gen_data only. How to get entire data?


回答1:


A couple of Extensions that may help. eg Convert from SAP structures to Other better known structures.

public static class SapToDataExtensionClass
{

    public static Dictionary<string,string> ToDictionary(this IRfcStructure stru)
    {
        Dictionary<string,string> dict = new Dictionary<string, string>();

        for (int i = 0; i < stru.Metadata.FieldCount; i++)
        {
            dict.Add(stru.Metadata[i].Name , stru.GetString(i) );  
        }

        return dict;
    }
    public static DataTable GetDataTable(this IRfcTable i_Table)
    {

        DataTable dt = new DataTable();

        dt.GetColumnsFromSapTable(i_Table);

        dt.FillRowsFromSapTable(i_Table);

        return dt;

    }


    public static void FillRowsFromSapTable(this DataTable i_DataTable, IRfcTable i_Table)
    {

        foreach (IRfcStructure tableRow in i_Table)
        {

            DataRow dr = i_DataTable.NewRow();

            dr.ItemArray = tableRow.Select(structField => structField.GetValue()).ToArray();

            i_DataTable.Rows.Add(dr);

        }

    }


    public static void GetColumnsFromSapTable(this DataTable i_DataTable, IRfcTable i_SapTable)
    {

        var DataColumnsArr = i_SapTable.Metadata.LineType.CreateStructure().ToList().Select

        (structField => new DataColumn(structField.Metadata.Name)).ToArray();

        i_DataTable.Columns.AddRange(DataColumnsArr);

    }

}


来源:https://stackoverflow.com/questions/24133940/fetch-the-value-of-nested-structure-returned-by-rfc

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!