RFC_READ_TABLEを使用してソフトウェアにデータを出力しますが、RFCが例外を返したときに、説明が返されないことがよくあります。たとえば、存在しないテーブルを検索したり、大量の列をクエリしたりします。常に同じタイトルのRfcAbapExceptionを返しますが、詳細もInnerExceptionもありません。
私のプロジェクトで参照されているSAPdllはバージョン2.0です。
編集:
だから問題は:なぜ例外の詳細を返さないのですか?
RFC_READ_TABLEを使用してソフトウェアにデータを出力しますが、RFCが例外を返したときに、説明が返されないことがよくあります。たとえば、存在しないテーブルを検索したり、大量の列をクエリしたりします。常に同じタイトルのRfcAbapExceptionを返しますが、詳細もInnerExceptionもありません。
私のプロジェクトで参照されているSAPdllはバージョン2.0です。
編集:
だから問題は:なぜ例外の詳細を返さないのですか?
ST22
例外に関連するショートダンプ(トランザクション)がシステムにあるかどうかを確認してください。もしあれば、これは多かれ少なかれ設計によるものです。この回答で説明しようとしましたが(詳細ではありませんが)、ショートダンプによりABAPプロセッサが無効な状態になります。発信者にいかなる種類のメッセージも返すことができないか、データが無効であるかセキュリティ上の問題である可能性があるため、発信者にデータを返すことは賢明ではありません。この場合、呼び出しは単に不特定のエラーメッセージで失敗します。Hoganによる他の回答で言及されているプロキシ例外コードは、基本的なシステムやプログラミングの障害ではなく、RFCモジュールの名前付き例外に対してのみ生成されるため、この場合は役に立ちません。
私が知る限り、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
}
元のソースを参照してください。