예제 #1
0
        //把RFCTABLE 转换成DataTable.
        public static DataTable RfcTableToDataTable(IRfcTable rfcTable)
        {
            DataTable dtRet = new DataTable();

            for (int liElement = 0; liElement < rfcTable.ElementCount; liElement++)
            {
                RfcElementMetadata rfcEMD = rfcTable.GetElementMetadata(liElement);
                //Console.WriteLine("Name:" + rfcEMD.Name);
                //Console.WriteLine("DatType:" + rfcEMD.DataType);
                dtRet.Columns.Add(rfcEMD.Name, RfcTypeConvertor.RfcTypeToSystemType(rfcEMD.DataType));
            }
            foreach (IRfcStructure row in rfcTable)
            {
                DataRow dr = dtRet.NewRow();
                for (int liElement = 0; liElement < rfcTable.ElementCount; liElement++)
                {
                    RfcElementMetadata rfcEMD = rfcTable.GetElementMetadata(liElement);
                    //Console.WriteLine("Name:" + rfcEMD.Name);
                    //Console.WriteLine("DatType:" + rfcEMD.DataType);
                    //Console.WriteLine("Object:" + row.GetValue(liElement));
                    Object o = Converts.RfcToDoNetValue(row.GetValue(liElement), rfcEMD.DataType);
                    if (String.IsNullOrWhiteSpace(o.ToString()))
                    {
                        o = "";
                    }
                    //Console.WriteLine("ConvertedValue:  " + o);
                    //Console.WriteLine("");
                    dr[rfcEMD.Name] = o;
                }
                dtRet.Rows.Add(dr);
            }
            return(dtRet);
        }
예제 #2
0
        /// <summary>
        /// 转换SAP类型为NET类型。
        /// </summary>
        /// <param name="dt"></param>
        private static void _TransFormDataTypeForDt(DataTable dt)
        {
            bool has_inttype_column    = false;
            bool has_dotnettype_column = false;
            bool has_dbtype_column     = false;
            bool has_sqltype_column    = false;

            if (dt.Columns.Contains("INTTYPE"))
            {
                has_inttype_column = true;
            }
            if (dt.Columns.Contains("DOTNETTYPE"))
            {
                has_dotnettype_column = true;
            }
            if (dt.Columns.Contains("DBTYPE"))
            {
                has_dbtype_column = true;
            }
            if (dt.Columns.Contains("SQLTYPE"))
            {
                has_sqltype_column = true;
            }

            foreach (DataRow row in dt.Rows)
            {
                if (has_inttype_column && has_dotnettype_column)
                {
                    row["DOTNETTYPE"] = RfcTypeConvertor.AbapInnerTypeToSystemType(row["INTTYPE"].ToString()).ToString();
                    Type e = Type.GetType(row["DOTNETTYPE"].ToString());

                    row["DOTNETTYPE"] = row["DOTNETTYPE"].ToString().Replace("System.", "");
                    if (row["DOTNETTYPE"].ToString().Contains("Int"))
                    {
                        row["DOTNETTYPE"] = "int";
                    }


                    if (has_dbtype_column)
                    {
                        row["DBTYPE"] = SAPINT.DbHelper.DbTypeConvertor.ToDbType(e).ToString();
                    }
                    if (has_sqltype_column)
                    {
                        row["SQLTYPE"] = SAPINT.DbHelper.DbTypeConvertor.ToSqlDbType(e).ToString();
                    }
                }
            }
        }
예제 #3
0
 /// <summary>
 /// 把SAP类型转换成对应的NET类型。
 /// </summary>
 public void TransformDataType()
 {
     if (Fields == null)
     {
         return;
     }
     Fields.ForEach(row =>
     {
         row.DOTNETTYPE = RfcTypeConvertor.AbapInnerTypeToSystemType(row.INTTYPE).ToString();
         Type e         = Type.GetType(row.DOTNETTYPE);
         row.DOTNETTYPE.Replace("System.", "");
         if (row.DOTNETTYPE.Contains("Int"))
         {
             row.DOTNETTYPE = "int";
         }
         row.DBTYPE  = SAPINT.DbHelper.DbTypeConvertor.ToDbType(e).ToString();
         row.SQLTYPE = SAPINT.DbHelper.DbTypeConvertor.ToSqlDbType(e).ToString();
     });
 }