我使用RFC_READ_TABLE向我的軟件輸出數據,但有很多次,當RFC返回和異常時,它不返回描述。例如,搜索不存在的表或查詢大量列。它始終返回相同的標題RfcAbapException沒有詳細信息,也沒有InnerException。RFC異常返回空字符串C#
我的項目中引用的SAP dll版本爲2.0。
編輯:
所以問題是:爲什麼不返回一個異常的細節?
我使用RFC_READ_TABLE向我的軟件輸出數據,但有很多次,當RFC返回和異常時,它不返回描述。例如,搜索不存在的表或查詢大量列。它始終返回相同的標題RfcAbapException沒有詳細信息,也沒有InnerException。RFC異常返回空字符串C#
我的項目中引用的SAP dll版本爲2.0。
編輯:
所以問題是:爲什麼不返回一個異常的細節?
據我所知,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
}
請檢查系統中是否存在與例外情況相關的短轉儲(交易ST22
)。如果有的話,這是或多或少的設計。正如我在this answer(儘管不詳細)中試圖解釋的那樣,短轉儲使ABAP處理器處於無效狀態。它不能將任何類型的消息返回給調用者,或者將任何數據返回給調用者是不明智的,因爲它可能是無效的甚至是安全問題。在這種情況下,調用將會失敗並顯示未指定的錯誤消息。 Hogan在其他答案中提到的代理異常代碼在這種情況下不會有任何幫助,因爲它們僅爲RFC模塊的命名例外生成,而不是基本系統或編程錯誤。
要糾正這一點。但問題是:爲什麼不返回一個異常細節? –
你必須告訴我們代碼。 – Hogan
如果在SAP DLL中引發異常,我將如何向您展示代碼.... –