2011年8月18日 星期四

IRfcTable、DataTable、DataSet 資料轉換模組

撰寫 SAP RFC 應用時,一定會遇到資料轉換的問題,
撰寫成公用模組,可以很方便的叫用。



public static DataTable GetDataTableFromRfcTable(IRfcTable rfcTable)
{
DataTable dtRet = new DataTable();

for (int liElement = 0; liElement < rfcTable.ElementCount; liElement++)
{
RfcElementMetadata rfcEMD = rfcTable.GetElementMetadata(liElement);
dtRet.Columns.Add(rfcEMD.Name);
}

foreach (IRfcStructure row in rfcTable)
{
DataRow dr = dtRet.NewRow();

for (int liElement = 0; liElement < rfcTable.ElementCount; liElement++)
{
RfcElementMetadata rfcEMD = rfcTable.GetElementMetadata(liElement);
dr[rfcEMD.Name] = row.GetString(rfcEMD.Name);
}

dtRet.Rows.Add(dr);
}

return dtRet;
}

public static DataTable[] GetDataTablesFromRfcTables(IRfcTable[] rfcTables)
{
DataTable[] dtRetTables = null;

if (rfcTables.Length > 0)
{
dtRetTables = new DataTable[rfcTables.Length];

for (int i = 0; i < rfcTables.Length; i++)
{
dtRetTables[i] = GetDataTableFromRfcTable(rfcTables[i]);
}
}

return dtRetTables;
}

public static DataTable[] GetDataTablesFromDataSet(DataSet ds)
{
DataTable[] dtRetTables = new DataTable[ds.Tables.Count];

for (int i = 0; i < ds.Tables.Count; i++)
dtRetTables[i] = ds.Tables[i];

return dtRetTables;
}

public static DataSet GetDataSetFromDataTables(DataTable[] dtTables)
{
DataSet dsRet = new DataSet();

for (int i = 0; i < dtTables.Length; i++)
{
dsRet.Tables.Add(dtTables[i]);
}

return dsRet;
}

沒有留言: