我使用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中引发异常,我将如何向您展示代码.... –