System exception thrown while marshaling .NET type 20081219 to RFCTYPE_BCD
at SAP.Connector.Rfc.RfcMarshal.NetFieldToRfcField(Object src, RFCTYPE type, Encoding encoding, Byte[] dest, Int32 offset, Int32 len, Int32 charSize, Int32 decimals)
at SAP.Connector.Rfc.RfcStructureUtil.ToRfcStructure(Object obj, Byte[] dest, Type t, Encoding encoding, Boolean isUnicode, PropertyInfo[] propinfos, RfcStructInfo structInfo)
at SAP.Connector.Rfc.RfcStructureUtil.GetITabFromList(SAPConnection conn, Object list, Type t, RfcStructInfo structInfo, Int32 itab)
at SAP.Connector.Rfc.RfcClient.PrepareClientParameters(Type classType, MethodInfo m, Boolean isTQRfc, Object[] MethodParamsIn, RFC_PARAMETER[]& paramsIn, RFC_PARAMETER[]& paramsOut, RFC_TABLE[]& tables, ParameterMap[]& paramMaps)
at SAP.Connector.Rfc.RfcClient.RfcInvoke(SAPClient proxy, String method, Object[] methodParamsIn)
at SAP.Connector.SAPClient.SAPInvoke(String method, Object[] methodParamsIn)
奇怪的是,这种情况并不是每次都发生。此外,它抱怨的.NET类型“20081219”是我传递的数据(一个日期)--而不是一种类型。我认为该字段的类型是RFCTYPE.RFCTYPE_TIME
。有关如何排除这个间歇性错误的建议吗?在调用SAP RFC之间是否应该清除某种状态?
更新:
根据要求,这是调用SAP的代码:
Using sapConnection As New MySapProxy(ConnectionString)
sapConnection.Connection.Open()
sapConnection.TheSapRfcICall(SapOpCode, Nothing, Nothing, sapTable, ResultTable)
End Using
我在想可能是多个线程以某种方式使用了同一个连接。但是改用
SAP.Connector.GetNewConnection
并没有改变任何事情。
更新:
看起来即使我只运行一个线程,这个问题仍然会发生!怎么回事?
有没有办法禁用连接池来看看是否能解决这个问题?
更新:
@Igal Serban的回答似乎对我有效。明天早上我会检查日志并(希望能够)颁发奖金!非常感谢。
更新:
根据要求,我使用的librfc32.dll版本是6403.3.78.4732。
RFCTYPE_BCD
是用于压缩二进制编码十进制的。 - Sandra Rossi