1

我使用 RFC_READ_TABLE 将数据输出到我的软件,但很多时候当 RFC 返回和异常时,它不会返回描述。例如,搜索不存在的表或查询大量列。它总是返回相同的标题RfcAbapException,没有细节也没有 InnerException。

我的项目中引用的 SAP dll 是 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 回答