2013-01-08 52 views
1

我使用RFC_READ_TABLE向我的软件输出数据,但有很多次,当RFC返回和异常时,它不返回描述。例如,搜索不存在的表或查询大量列。它始终返回相同的标题RfcAbapException没有详细信息,也没有InnerException。RFC异常返回空字符串C#

我的项目中引用的SAP dll版本为2.0。

编辑:

所以问题是:为什么不返回一个异常的细节?

+0

要纠正这一点。但问题是:为什么不返回一个异常细节? –

+0

你必须告诉我们代码。 – Hogan

+0

如果在SAP DLL中引发异常,我将如何向您展示代码.... –

回答

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 
} 

参见original source

+0

所有这一切都很好。整个公司没有任何关于此的怪异文件。谢谢,这将拯救我的生命。这真的有帮助。谢谢。 –

+0

@vwegert - 当链接中的'nw'大写时,浏览器是否做了一些不同的事情?我的心被炸毁了。 – Hogan

+0

@AndréSilva - yw,祝你好运! – Hogan

2

请检查系统中是否存在与例外情况相关的短转储(交易ST22)。如果有的话,这是或多或少的设计。正如我在this answer(尽管不详细)中试图解释的那样,短转储使ABAP处理器处于无效状态。它不能将任何类型的消息返回给调用者,或者将任何数据返回给调用者是不明智的,因为它可能是无效的甚至是安全问题。在这种情况下,调用将会失败并显示未指定的错误消息。 Hogan在其他答案中提到的代理异常代码在这种情况下不会有任何帮助,因为它们仅为RFC模块的命名例外生成,而不是基本系统或编程错误。