RFC异常返回空字符串c#

本文关键字:字符串 返回 异常 RFC | 更新日期: 2023-09-27 17:50:56

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

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

编辑:

那么问题是:为什么不返回一个异常细节呢?

RFC异常返回空字符串c#

据我所知,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)。如果有的话,这或多或少是有意为之。正如我在这个回答中试图解释的那样(尽管没有详细说明),短转储使ABAP处理器处于无效状态。它要么无法将任何类型的消息返回给调用者,要么将任何数据返回给调用者都是不明智的,因为它可能是无效的,甚至可能存在安全问题。在这种情况下,调用将失败,并显示一条未指定的错误消息。Hogan在另一个答案中提到的代理异常代码在这种情况下不会有任何帮助,因为它们仅为RFC模块的命名异常生成,而不是基本的系统或编程错误。