SAPに計上されています。ネコネクタ:システム例外がスローされながらの総力を結集.ネットタイプ

StackOverflow https://stackoverflow.com/questions/381760

質問

私のアプリに送ると、たくさんのデータが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"は、 データ 私通(日)--りません。と思うのタイプの分野は RFCTYPE.RFCTYPE_TIME.

他の方法についてはトラブルシューティングこの間欠的なエラー?あのような状態にいるべき清算と通話の強化?


更新:

るとともに、要求があればこちらのコードが呼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.

役に立ちましたか?

解決

更新4: 第二思想いとは思わないが、librfc版が重要になります。のうのコンポーネントです。オプションとして私が考えられることはい:

  • 利用するようにしてデバッガのシングルネジ付きバージョン。
  • の魔法です。ものが見つからずにバグを修正(はsapやコードとします。直方法を変えるビジネスすることができるよう、そうもない。その醜いもうけられることがあります。とにかくそうすることによって自のシナリオが用接続プール、新しいプロキシオブジェクトきます。でもこのような(未審査)コードを使用することができます:

MySapProxy proxy = new MySapProxy(); // do this only once.

// and in you main loop:
using (proxy.Connection = Connection.GetConnection(connectionString))
{
    proxy.TheSapRfcICall(SapOpCode, Nothing, Nothing, sapTable, ResultTable)
}

このサンプルを暗黙のうちには、接続プールがあります。利用できる制御からコンフィグファイルです。

更新3: きを確認してくださいlibrfc32.dll 版のでしょうか?そのあるべきsystem32ディレクトリまたはお申し込みでディレクトリはどこかにご%path%.

更新2: Sap記のようなkbします。わからない場合は無料アクセスにありますのでご注意sdn.sap.com って送信されます。

更新1: SAP注1000057国:

下下記からダウンロードできま荷重、例外のタイプRfcMarshalExceptionを参照します。形式をサポートしています。Xsl.XsltExceptionとして内部例外が発生します。

ないものの例外ます。そり、試してみる価値がある。

パッチとして添付します。

**更新0:**のみのようですね。でいるのを見てスレッド問題です。このすべてのスタック?ですが、一部のコードが呼び出すのsapコードについて教えてください。

他のヒント

編集:

たなければならないと思いものにマッピングしました。ていると思いRFCTYPE_BCDタイプは小数点(ビジネスコネクタの小数点、そのままでは困難となっていますが押して日付の値でやる恐れのある作業時には?).私はあなたが再生のプロキシでログイン中のデータの整列化時にエラーとなります。このようになっせた独自の代理層だけではないことを身近なビジネスコネクタ):

きの翻訳は以下の入VB(とどのような形式のsapTable構造):

Using sapConnection As New MySapProxy(ConnectionString)
  sapConnection.Connection.Open()
  try {
    sapConnection.TheSapRfcICall(SapOpCode, Nothing, Nothing, sapTable, ResultTable)
  } catch (Exception e) {
    StringBuilder sb = new StringBuilder();
    foreach (Field f in sapTable.Fields) {
      sb.AppendLine(f.Name + "=" f.Value);
    }
    sb.AppendLine(e.StackTrace);
    File.AppendAllText("C:\\Exception_" + DateTime.Now.ToString("u") + ".txt", sb.ToString());
  }
End Using

この痛みがだい速や汚れを取得したデータには吐き出時にエラーが発生します。

========

からの説明まで、エクスペディアのキャンセができるでしょうmarshalの日付値(20081219)へのフィールド?

でラップする電話try/catchでログインの価値をテーブルに搬送されるようになSAPおよびもしくは地方公共団体又はその。今度はあの手がかりのデータです。

かかるwebサービスへの投稿のSAPによるSAPは、特定の形式の日付時刻値。

うしように変換する整数または文字列(エえによりToString())を BCD (バイナリコード数)のタイプです。

だっても役立っています。

更新:

思います。

複数のスレッドと同じ。それはどのように変動するという非常に良いアイデアを使用しない限りロックしながら、スレッドの意味が無い。思SAP対応接続プールでの接続が自身のスレッド間のスしてはなりません。

この商品につけられた日付フォーマットしますか?すいませんが起こります。
でき20081202で'12'として日部02として、月ます。でOKです。
でき20081219ようとする構文解析19として月例外をスローし?
チェックしSAP管理者が行います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top