1

RFC_READ_TABLEを使用してソフトウェアにデータを出力しますが、RFCが例外を返したときに、説明が返されないことがよくあります。たとえば、存在しないテーブルを検索したり、大量の列をクエリしたりします。常に同じタイトルのRfcAbapExceptionを返しますが、詳細もInnerExceptionもありません。

私のプロジェクトで参照されているSAPdllはバージョン2.0です。

編集:

だから問題は:なぜ例外の詳細を返さないのですか?

4

2 に答える 2

2

ST22例外に関連するショートダンプ(トランザクション)がシステムにあるかどうかを確認してください。もしあれば、これは多かれ少なかれ設計によるものです。この回答で説明しようとしましたが(詳細ではありませんが)、ショートダンプによりABAPプロセッサが無効な状態になります。発信者にいかなる種類のメッセージも返すことができないか、データが無効であるかセキュリティ上の問題である可能性があるため、発信者にデータを返すことは賢明ではありません。この場合、呼び出しは単に不特定のエラーメッセージで失敗します。Hoganによる他の回答で言及されているプロキシ例外コードは、基本的なシステムやプログラミングの障害ではなく、RFCモジ​​ュールの名前付き例外に対してのみ生成されるため、この場合は役に立ちません。

于 2013-01-08T16:04:11.337 に答える
1

私が知る限り、RfcAbapExceptionに含まれる説明はありません。代わりに、デコード可能なコードが返されます。このような:

catch (RfcAbapException ex)
   {
   switch (ex.AbapException)
     {
   case (SAPProxy1.No_Function_Found):
      MessageBox.Show("abap call failed because no function found");
      break;
   case(SAPProxy1.Nothing_Specified):
      MessageBox.Show("abap call failed because nothing specified");
      break;
   default:
      MessageBox.Show("Some unknown abap error occurred (" 
                       +ex.AbapException.ToString()+")");
      break;
     } //switch
}

元のソースを参照してください。

于 2013-01-08T15:51:22.117 に答える