Пример #1
0
        public override RfcPreparedFunction Prepare()
        {
            try
            {
                this.function = this.repository.CreateFunction(this.FunctionName);
                foreach (var parameter in this.Parameters)
                {
                    int idx = this.function.Metadata.TryNameToIndex(parameter.Name);
                    if (idx == -1)
                    {
                        throw new UnknownRfcParameterException(parameter.Name, this.FunctionName);
                    }

                    RfcDataType pType = this.function.Metadata[idx].DataType;
                    switch (pType)
                    {
                    case RfcDataType.STRUCTURE:
                        RfcStructureMetadata structureMetadata = this.function.GetStructure(idx).Metadata;
                        IRfcStructure        structure         = this.structureMapper.CreateStructure(structureMetadata, parameter.Value);
                        this.function.SetValue(parameter.Name, structure);
                        break;

                    case RfcDataType.TABLE:
                        RfcTableMetadata tableMetadata = this.function.GetTable(idx).Metadata;
                        IRfcTable        table         = this.structureMapper.CreateTable(tableMetadata, parameter.Value);
                        this.function.SetValue(parameter.Name, table);
                        break;

                    default:
                        object formattedValue = this.structureMapper.ToRemoteValue(this.function.Metadata[idx].GetAbapDataType(), parameter.Value);
                        this.function.SetValue(parameter.Name, formattedValue);
                        break;
                    }
                }
                return(this);
            }
            catch (Exception ex)
            {
                if (ex.GetBaseException() is SharpRfcException)
                {
                    throw ex;
                }

                throw new SharpRfcCallException(ex.Message, function == null ? this.FunctionName : function.ToString(), ex);
            }
        }
Пример #2
0
 public static Type GetDataType(RfcDataType rfcDataType)
 {
     switch (rfcDataType)
     {
         case RfcDataType.DATE:
             return typeof(string);
         case RfcDataType.CHAR:
             return typeof(string);
         case RfcDataType.STRING:
             return typeof(string);
         case RfcDataType.BCD:
             return typeof(decimal);
         case RfcDataType.INT2:
             return typeof(int);
         case RfcDataType.INT4:
             return typeof(int);
         case RfcDataType.FLOAT:
             return typeof(double);
         default:
             return typeof(string);
     }
 }
 internal static System.Type RfcTypeToSystemType(RfcDataType Type)
 {
     if (Type == RfcDataType.CHAR)
     {
         return System.Type.GetType("System.String");
     }
     if (Type == RfcDataType.BYTE)
     {
         return System.Type.GetType("System.String");
     }
     if (Type == RfcDataType.DATE)
     {
         return System.Type.GetType("System.String");
     }
     if (Type == RfcDataType.TIME)
     {
         return System.Type.GetType("System.String");
     }
     if (Type == RfcDataType.BCD)
     {
         return System.Type.GetType("System.Decimal");
     }
     if (((Type == RfcDataType.INT4) || (Type == RfcDataType.INT1)) || (Type == RfcDataType.INT2))
     {
         return System.Type.GetType("System.Int32");
     }
     if (Type == RfcDataType.NUM)
     {
         return System.Type.GetType("System.Int32");
     }
     if (Type != RfcDataType.FLOAT)
     {
         // throw new ERPException(string.Format(Messages.CannotconvertRFCtype_0_toascalarsystemtype, Type.ToString()));
         throw new Exception(string.Format("Cannot convert RFCtype {0} to a scalar system type", Type.ToString()));
     }
     return System.Type.GetType("System.Double");
 }
Пример #4
0
 internal static System.Type RfcTypeToSystemType(RfcDataType Type)
 {
     if (Type == RfcDataType.CHAR)
     {
         return(System.Type.GetType("System.String"));
     }
     if (Type == RfcDataType.BYTE)
     {
         return(System.Type.GetType("System.String"));
     }
     if (Type == RfcDataType.DATE)
     {
         return(System.Type.GetType("System.String"));
     }
     if (Type == RfcDataType.TIME)
     {
         return(System.Type.GetType("System.String"));
     }
     if (Type == RfcDataType.BCD)
     {
         return(System.Type.GetType("System.Decimal"));
     }
     if (((Type == RfcDataType.INT4) || (Type == RfcDataType.INT1)) || (Type == RfcDataType.INT2))
     {
         return(System.Type.GetType("System.Int32"));
     }
     if (Type == RfcDataType.NUM)
     {
         return(System.Type.GetType("System.Int32"));
     }
     if (Type != RfcDataType.FLOAT)
     {
         // throw new ERPException(string.Format(Messages.CannotconvertRFCtype_0_toascalarsystemtype, Type.ToString()));
         throw new Exception(string.Format("Cannot convert RFCtype {0} to a scalar system type", Type.ToString()));
     }
     return(System.Type.GetType("System.Double"));
 }
Пример #5
0
 /// <summary>
 /// convert SAP .net connector datatypes to c# datatypes
 /// </summary>
 /// <param name="rfcDataType"></param>
 /// <returns></returns>
 private Type ConvertDataType(RfcDataType rfcDataType)
 {
     Type systemType = null;
     try
     {
         switch (rfcDataType)
         {
             case RfcDataType.NUM:
                 systemType = typeof(double);
                 break;
             case RfcDataType.DATE:
                 systemType = typeof(DateTime);
                 break;
             default:
                 systemType = typeof(String);
                 break;
         }
     }
     catch (Exception)
     {
         systemType = typeof(String);
     }
     return systemType;
 }
Пример #6
0
 //public static byte[] Int32ToRawBytes(int src, int Length)
 //{
 //    byte[] destination = new byte[Length];
 //    CopyBytes(BitConverter.GetBytes(src), destination, 0, 0, Length);
 //    return destination;
 //}
 //public static byte[] Int64ToRawBytes(long src, int Length)
 //{
 //    byte[] destination = new byte[Length];
 //    CopyBytes(BitConverter.GetBytes(src), destination, 0, 0, Length);
 //    return destination;
 //}
 internal static string NETToSoap(object NetValue, RfcDataType Type)
 {
     string str;
     if (Type == RfcDataType.CHAR)
     {
         str = NetValue.ToString();
     }
     else if (Type == RfcDataType.DATE)
     {
         if (NetValue.ToString().Length == 8)
         {
             str = NetValue.ToString().Substring(0, 4) + "-" + NetValue.ToString().Substring(4, 2) + "-" + NetValue.ToString().Substring(6, 2);
         }
         else
         {
             str = NetValue.ToString();
         }
     }
     else if (Type == RfcDataType.BCD)
     {
         NumberFormatInfo provider = new NumberFormatInfo
         {
             NumberDecimalSeparator = ".",
             NumberGroupSeparator = ""
         };
         str = Convert.ToString((decimal)NetValue, provider);
     }
     else if (Type == RfcDataType.FLOAT)
     {
         NumberFormatInfo info2 = new NumberFormatInfo
         {
             NumberDecimalSeparator = ".",
             NumberGroupSeparator = ""
         };
         str = Convert.ToString((double)NetValue, info2);
     }
     else if (((Type == RfcDataType.INT4) || (Type == RfcDataType.INT2)) || (Type == RfcDataType.INT1))
     {
         NumberFormatInfo info3 = new NumberFormatInfo
         {
             NumberDecimalSeparator = ".",
             NumberGroupSeparator = ""
         };
         str = Convert.ToString((int)NetValue, info3);
     }
     else if (Type == RfcDataType.NUM)
     {
         str = NetValue.ToString();
     }
     else if (Type == RfcDataType.STRING)
     {
         str = NetValue.ToString();
     }
     else if (Type == RfcDataType.TIME)
     {
         string str2 = NetValue.ToString();
         if (str2.Length == 4)
         {
             str = str2.Substring(0, 2) + ":" + str2.Substring(2, 2) + ":00";
         }
         else if (str2.Length == 6)
         {
             str = str2.Substring(0, 2) + ":" + str2.Substring(2, 2) + ":" + str2.Substring(4, 2);
         }
         else
         {
             str = str2;
         }
     }
     else
     {
         if ((Type == RfcDataType.XSTRING) || (Type == RfcDataType.BYTE))
         {
             return Convert.ToBase64String((byte[])NetValue);
         }
         if (Type == RfcDataType.TABLE)
         {
             IRfcTable table = NetValue as IRfcTable;
             if (table == null)
             {
                 return "";
             }
             StringBuilder builder = new StringBuilder();
             foreach (IRfcStructure structure in table.ToList())
             {
                 builder.Append("<item>");
                 if (table.Metadata.LineType.FieldCount == 1)
                 {
                     builder.Append(NETToSoap(structure[table.Metadata.LineType[0].Name].GetValue(), table.Metadata.LineType[0].DataType));
                 }
                 else
                 {
                     for (var i = 1; i < table.Metadata.LineType.FieldCount; i++)
                     {
                         string str3 = table.Metadata.LineType[i].Name.Replace("/", "_-");
                         builder.Append("<" + str3 + ">");
                         builder.Append(NETToSoap(structure[i].GetValue(), structure[i].Metadata.DataType));
                         builder.Append("</" + str3 + ">");
                     }
                 }
                 builder.Append("</item>");
             }
             return builder.ToString();
         }
         if (Type != RfcDataType.STRUCTURE)
         {
             //throw new ERPException(string.Format(Messages.Type_0_notsupportedinthiscontext, Type.ToString()));
             throw new Exception(string.Format("Type{0} not supported in this context", Type.ToString()));
         }
         IRfcStructure structure2 = NetValue as IRfcStructure;
         if (structure2 == null)
         {
             return "";
         }
         StringBuilder builder2 = new StringBuilder();
         foreach (IRfcField column2 in structure2.ToList())
         {
             string str4 = column2.Metadata.Name.Replace("/", "_-");
             builder2.Append("<" + str4 + ">");
             builder2.Append(NETToSoap(structure2[column2.Metadata.Name], column2.Metadata.DataType));
             builder2.Append("</" + str4 + ">");
         }
         return builder2.ToString();
     }
     return StringToXMLString(str);
 }
Пример #7
0
 //internal static IntPtr StringBytesToPtr(byte[] stringBytes)
 //{
 //    IntPtr destination = RFCAPI.RfcAllocString(stringBytes.Length);
 //    Marshal.Copy(stringBytes, 0, destination, stringBytes.Length);
 //    IntPtr newPointer = GetNewPointer(IntPtr.Size);
 //    Marshal.WriteIntPtr(newPointer, destination);
 //    return newPointer;
 //}
 public static byte[] StringToRawBytes(string src, int Length, RfcDataType type)
 {
     string s = new string(" ".ToCharArray()[0], Length);
     s = src;
     if (((type == RfcDataType.CHAR) || (type == RfcDataType.BYTE)) || (type == RfcDataType.STRING))
     {
         s = s.PadRight(Length);
     }
     else
     {
         if (((type != RfcDataType.DATE) && (type != RfcDataType.TIME)) && (type != RfcDataType.NUM))
         {
             throw new Exception(string.Format("Type:{0}isnotallowedinConvertsStringToRawBytes", type.ToString()));
         }
         if (IsUnicode)
         {
             s = s.PadLeft(Length / 2, "0".ToCharArray()[0]);
         }
         else
         {
             s = s.PadLeft(Length, "0".ToCharArray()[0]);
         }
     }
     if (type == RfcDataType.STRING)
     {
         return enc.GetBytes(s + "\0");
     }
     return enc.GetBytes(s);
 }
Пример #8
0
        public static object RfcToDoNetValue(Object output, RfcDataType type)
        {
            try
            {

                Object o = output;
                if (o == null)
                {
                    o = "";
                    output = "";
                }
                int iout = 0;
                switch (type)
                {
                    case RfcDataType.BCD:
                        if (o.ToString() == "")
                        {
                            o = 0;
                            break;
                        }
                        o = double.Parse(output.ToString());
                        break;
                    case RfcDataType.BYTE:
                        if (o.ToString() == "")
                        {
                            o = 0;
                            break;
                        }
                        else
                        {
                            o = o.ToString();
                        }
                        //o = byte.Parse(o.ToString());

                        break;
                    case RfcDataType.CDAY:
                        break;
                    case RfcDataType.CHAR:
                        break;
                    case RfcDataType.CLASS:
                        break;
                    case RfcDataType.DATE:
                        if (o.ToString() == "00000000")
                        {
                            o = "";
                        }
                        else
                        {
                            //  o = o.ToString().Replace("-","");
                            //  o = o.ToString().Substring(0, 4) + "-" + o.ToString().Substring(4, 2) + "-" + o.ToString().Substring(6, 2);
                        }
                        break;
                    case RfcDataType.DECF16:
                        break;
                    case RfcDataType.DECF34:
                        break;
                    case RfcDataType.DTDAY:
                        break;
                    case RfcDataType.DTMONTH:
                        break;
                    case RfcDataType.DTWEEK:
                        break;
                    case RfcDataType.FLOAT:
                        if (o.ToString() == "")
                        {
                            o = 0;
                            break;
                        }
                        o = float.Parse(output.ToString());
                        break;
                    case RfcDataType.INT1:
                        if (o.ToString() == "")
                        {
                            o = 0;
                            break;
                        }
                        o = int.Parse(output.ToString());
                        break;
                    case RfcDataType.INT2:
                        if (o.ToString() == "")
                        {
                            o = 0;
                            break;
                        }
                        o = int.Parse(output.ToString());
                        break;
                    case RfcDataType.INT4:
                        if (o.ToString() == "")
                        {
                            o = 0;
                            break;
                        }
                        o = int.Parse(output.ToString());
                        break;
                    case RfcDataType.INT8:
                        if (o.ToString() == "")
                        {
                            o = 0;
                            break;
                        }
                        o = int.Parse(output.ToString());
                        break;
                    case RfcDataType.NUM:

                        if (output == null)
                        {
                            o = 0;
                        }
                        if (o.ToString().Trim() == "0")
                        {
                            o = 0;
                        }
                        else
                        {
                            int.TryParse(output.ToString(), out iout);
                            o = iout;

                        }

                        break;
                    case RfcDataType.STRING:
                        break;
                    case RfcDataType.STRUCTURE:
                        break;
                    case RfcDataType.TABLE:
                        break;
                    case RfcDataType.TIME:
                        //o = o.ToString().Substring(0, 2) + ":" + o.ToString().Substring(2, 2) + ":" + o.ToString().Substring(4, 2);
                        break;
                    case RfcDataType.TMINUTE:
                        break;
                    case RfcDataType.TSECOND:
                        break;
                    case RfcDataType.UNKNOWN:
                        break;
                    case RfcDataType.UTCLONG:
                        break;
                    case RfcDataType.UTCMINUTE:
                        break;
                    case RfcDataType.UTCSECOND:
                        break;
                    case RfcDataType.XSTRING:
                        break;
                    default:
                        break;
                }
                return o;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
Пример #9
0
 public static object ObjectToRfcValue(Object input, RfcDataType type)
 {
     Object o = input;
     switch (type)
     {
         case RfcDataType.BCD:
             if (input.ToString().Trim() == "")
             {
                 o = 0;
             }
             break;
         case RfcDataType.BYTE:
             break;
         case RfcDataType.CDAY:
             break;
         case RfcDataType.CHAR:
             break;
         case RfcDataType.CLASS:
             break;
         case RfcDataType.DATE:
             input = input.ToString().Replace("-", "");
             input = input.ToString().Replace("/", "");
             if (input.ToString() != "" && input.ToString().Length != 8)
             {
                 throw new SAPException(input.ToString() + " ���ڸ�ʽ����ȷ");
             }
             break;
         case RfcDataType.DECF16:
             break;
         case RfcDataType.DECF34:
             break;
         case RfcDataType.DTDAY:
             break;
         case RfcDataType.DTMONTH:
             break;
         case RfcDataType.DTWEEK:
             break;
         case RfcDataType.FLOAT:
             if (input.ToString().Trim() == "")
             {
                 o = 0;
             }
             break;
         case RfcDataType.INT1:
             if (input.ToString().Trim() == "")
             {
                 o = 0;
             }
             break;
         case RfcDataType.INT2:
             if (input.ToString().Trim() == "")
             {
                 o = 0;
             }
             break;
         case RfcDataType.INT4:
             if (input.ToString().Trim() == "")
             {
                 o = 0;
             }
             break;
         case RfcDataType.INT8:
             if (input.ToString().Trim() == "")
             {
                 o = 0;
             }
             break;
         case RfcDataType.NUM:
             if (input.ToString().Trim() == "")
             {
                 o = 0;
             }
             break;
         case RfcDataType.STRING:
             break;
         case RfcDataType.STRUCTURE:
             break;
         case RfcDataType.TABLE:
             break;
         case RfcDataType.TIME:
             input = input.ToString().Replace(":", "");
             if (input.ToString() != "" && input.ToString().Length != 6)
             {
                 throw new SAPException("ʱ����ʽ����ȷ��");
             }
             break;
         case RfcDataType.TMINUTE:
             break;
         case RfcDataType.TSECOND:
             break;
         case RfcDataType.UNKNOWN:
             break;
         case RfcDataType.UTCLONG:
             break;
         case RfcDataType.UTCMINUTE:
             break;
         case RfcDataType.UTCSECOND:
             break;
         case RfcDataType.XSTRING:
             break;
         default:
             break;
     }
     return o;
 }
Пример #10
0
 internal static object XmlToScalarValue(string value, RfcDataType rfcType)
 {
     switch (rfcType)
     {
         case RfcDataType.CHAR:
         case RfcDataType.NUM:
             return value;
         case RfcDataType.DATE:
             if (value.Length == 10)
             {
                 return value.Remove(4, 1).Remove(6, 1);
             }
             return value;
         case RfcDataType.BCD:
             if (!string.IsNullOrEmpty(value))
             {
                 return Convert.ToDecimal(value, numberFormatInfo);
             }
             return 0M;
         case RfcDataType.TIME:
             if (value.Length != 8)
             {
                 return value;
             }
             return value.Remove(2, 1).Remove(4, 1);
         case RfcDataType.BYTE:
         case RfcDataType.XSTRING:
             if (string.IsNullOrEmpty(value))
             {
                 return new byte[0];
             }
             return Convert.FromBase64String(value);
         case RfcDataType.FLOAT:
             if (!string.IsNullOrEmpty(value))
             {
                 return Convert.ToDouble(value, numberFormatInfo);
             }
             return 0.0;
         case RfcDataType.INT4:
             if (!string.IsNullOrEmpty(value))
             {
                 return Convert.ToInt32(value, numberFormatInfo);
             }
             return 0;
         case RfcDataType.INT2:
             if (!string.IsNullOrEmpty(value))
             {
                 return Convert.ToInt16(value, numberFormatInfo);
             }
             return 0;
         case RfcDataType.INT1:
             if (!string.IsNullOrEmpty(value))
             {
                 return Convert.ToByte(value, numberFormatInfo);
             }
             return 0;
         case RfcDataType.STRING:
             return value;
     }
     //throw new ERPException(string.Format(Messages.Type_0_notsupportedinthiscontext, rfcType.ToString()));
     throw new Exception(string.Format("Cannotconvert_{0}_to an internal RFCtype", rfcType.ToString()));
 }
Пример #11
0
 //internal static string ScalarToXmlPersist(object value, RfcDataType rfcType)
 //{
 //    switch (rfcType)
 //    {
 //        case RfcDataType.CHAR:
 //        case RfcDataType.NUM:
 //        case RfcDataType.STRING:
 //            return value.ToString();
 //        case RfcDataType.DATE:
 //            {
 //                string str = value.ToString();
 //                if (str.Length == 8)
 //                {
 //                    return str.Insert(6, "-").Insert(4, "-");
 //                }
 //                return str;
 //            }
 //        case RfcDataType.BCD:
 //        case RfcDataType.INT4:
 //        case RfcDataType.INT2:
 //        case RfcDataType.INT1:
 //            return Convert.ToString(value, numberFormatInfo);
 //        case RfcDataType.TIME:
 //            {
 //                string str2 = value.ToString();
 //                switch (str2.Length)
 //                {
 //                    case 4:
 //                        return (str2.Insert(2, ":") + ":00");
 //                    case 5:
 //                        return str2;
 //                    case 6:
 //                        return str2.Insert(4, ":").Insert(2, ":");
 //                }
 //                return str2;
 //            }
 //        case RfcDataType.BYTE:
 //        case RfcDataType.XSTRING:
 //            return Convert.ToBase64String((byte[])value);
 //        case RfcDataType.FLOAT:
 //            {
 //                double num = (double)value;
 //                return num.ToString("R", numberFormatInfo);
 //            }
 //    }
 //    throw new ERPException(string.Format(Messages.Type_0_notsupportedinthiscontext, rfcType.ToString()));
 //}
 //internal static string ScalarToXmlValue(object value, RfcDataType rfcType)
 //{
 //    switch (rfcType)
 //    {
 //        case RfcDataType.CHAR:
 //        case RfcDataType.NUM:
 //        case RfcDataType.STRING:
 //            return value.ToString();
 //        case RfcDataType.DATE:
 //            {
 //                string str = value.ToString();
 //                if (str.Length == 8)
 //                {
 //                    return str.Insert(6, "-").Insert(4, "-");
 //                }
 //                return str;
 //            }
 //        case RfcDataType.BCD:
 //        case RfcDataType.INT4:
 //        case RfcDataType.INT2:
 //        case RfcDataType.INT1:
 //            return Convert.ToString(value, numberFormatInfo);
 //        case RfcDataType.TIME:
 //            {
 //                string str2 = value.ToString();
 //                switch (str2.Length)
 //                {
 //                    case 4:
 //                        return (str2.Insert(2, ":") + ":00");
 //                    case 5:
 //                        return str2;
 //                    case 6:
 //                        return str2.Insert(4, ":").Insert(2, ":");
 //                }
 //                return str2;
 //            }
 //        case RfcDataType.BYTE:
 //        case RfcDataType.XSTRING:
 //            return Convert.ToBase64String((byte[])value);
 //        case RfcDataType.FLOAT:
 //            {
 //                double num = (double)value;
 //                return num.ToString("R", numberFormatInfo);
 //            }
 //    }
 //    throw new ERPException(string.Format(Messages.Type_0_notsupportedinthiscontext, rfcType.ToString()));
 //}
 internal static object SOAPToNET(string SOAPValue, RfcDataType Type, bool SOAPValueIsAlreadyDecoded)
 {
     if (!SOAPValueIsAlreadyDecoded)
     {
         SOAPValue = XMLStringToString(SOAPValue);
     }
     if (Type == RfcDataType.CHAR)
     {
         return SOAPValue;
     }
     if (Type == RfcDataType.DATE)
     {
         SOAPValue = SOAPValue.Trim();
         if (SOAPValue.Length == 10)
         {
             return (SOAPValue.Substring(0, 4) + SOAPValue.Substring(5, 2) + SOAPValue.Substring(8, 2));
         }
         return SOAPValue;
     }
     if (Type == RfcDataType.BCD)
     {
         NumberFormatInfo provider = new NumberFormatInfo
         {
             NumberDecimalSeparator = ".",
             NumberGroupSeparator = ","
         };
         return Convert.ToDecimal(SOAPValue, provider);
     }
     if (Type == RfcDataType.FLOAT)
     {
         NumberFormatInfo info2 = new NumberFormatInfo
         {
             NumberDecimalSeparator = ".",
             NumberGroupSeparator = ","
         };
         return Convert.ToDouble(SOAPValue, info2);
     }
     if (((Type == RfcDataType.INT4) || (Type == RfcDataType.INT1)) || (Type == RfcDataType.INT2))
     {
         return Convert.ToInt32(SOAPValue);
     }
     if (Type == RfcDataType.NUM)
     {
         return SOAPValue;
     }
     if (Type == RfcDataType.TIME)
     {
         SOAPValue = SOAPValue.Trim();
         if (SOAPValue.Length == 8)
         {
             return (SOAPValue.Substring(0, 2) + SOAPValue.Substring(3, 2) + SOAPValue.Substring(6, 2));
         }
         return SOAPValue;
     }
     if (Type == RfcDataType.STRING)
     {
         return SOAPValue;
     }
     if ((Type == RfcDataType.XSTRING) || (Type == RfcDataType.BYTE))
     {
         try
         {
             return Convert.FromBase64String(SOAPValue);
         }
         catch
         {
             return new byte[0];
         }
     }
     if (Type != RfcDataType.TABLE)
     {
         //throw new ERPException(string.Format(Messages.Type_0_notsupportedinthiscontext, Type.ToString()));
         throw new Exception(string.Format("Type_{0}_not supported in this context", Type.ToString()));
     }
     return "";
 }
Пример #12
-14
        public static Type GetDataType(RfcDataType rfcDataType)
        {
            switch (rfcDataType)
            {
            case RfcDataType.DATE:
                return(typeof(string));

            case RfcDataType.CHAR:
                return(typeof(string));

            case RfcDataType.STRING:
                return(typeof(string));

            case RfcDataType.BCD:
                return(typeof(decimal));

            case RfcDataType.INT2:
                return(typeof(int));

            case RfcDataType.INT4:
                return(typeof(int));

            case RfcDataType.FLOAT:
                return(typeof(double));

            default:
                return(typeof(string));
            }
        }