Meine Anwendung sendet viele, viele Daten an SAP. Dazu baut sie ein SAP-Tabellenobjekt auf und sendet es weiter. Ich bekomme diesen Fehler einigermaßen regelmäßig, aber nicht zuverlässig:
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)
Seltsam ist, dass dies nicht jedes Mal passiert. Außerdem ist der .NET-Typ, über den es sich beschwert, "20081219", die Daten Ich passe (ein Datum) - kein Typ. Ich denke, der Typ dieses Feldes ist RFCTYPE.RFCTYPE_TIME
.
Gibt es Vorschläge zur Behebung dieses intermittierenden Fehlers? Gibt es eine Art Status, den ich zwischen den Aufrufen der SAP-RFCs löschen sollte?
Aktualisierung:
Wie gewünscht, hier ist der Code, der SAP aufruft:
Using sapConnection As New MySapProxy(ConnectionString)
sapConnection.Connection.Open()
sapConnection.TheSapRfcICall(SapOpCode, Nothing, Nothing, sapTable, ResultTable)
End Using
Ich denke, dass vielleicht mehrere Threads irgendwie dieselbe Verbindung verwenden. Mit SAP.Connector.GetNewConnection
stattdessen hat sich nichts geändert.
Aktualisierung:
Es scheint, dass dieses Problem auch dann auftritt, wenn ich einen einzelnen Thread laufen lasse! Woran liegt das?
Gibt es eine Möglichkeit, den Verbindungspool zu deaktivieren, um zu sehen, ob das Problem dadurch behoben wird?
Aktualisierung:
Die Antwort von @Igal Serban scheint bei mir zu funktionieren. Ich werde morgen früh die Logs überprüfen und (hoffentlich) die Prämie vergeben! Vielen Dank!
Aktualisierung:
Wie gewünscht, lautet meine Version von librfc32.dll 6403.3.78.4732.