我的应用程序向 SAP 发送了大量数据。为此,它构建了一个 SAP 表对象并将其发送过来。我经常收到此错误,但不可靠:
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。