私のアプリは、非常に多くのデータを 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)
奇妙なことは、これが毎回起こるわけではないということです。また、「20081219」という.NETタイプは、私が渡しているデータ(日付)であり、タイプではありません。そのフィールドのタイプは だと思います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 です。