在查询了很多列之后,RFC_READ_TABLE抛出了Rfcabapexception

时间:2013-01-02 16:42:11

标签: c# exception sap abap saprfc

在我工作的地方,我们有两个使用SAP的系统,一个使用Delphi,另一个使用c#。我正在实现c#并且两者都有相同的问题,当我使用RFC_READ_TABLE查询大量列时,根据表(通常为60+),它返回一个没有描述且没有内部异常的Rfcabapexception ,只是一个标题。导致此异常的原因是什么,我该怎么做才能阻止它?

1 个答案:

答案 0 :(得分:5)

功能模块RFC_READ_TABLE必须将数据转换为通用格式,因为RFC通信不支持DATASTANDARD TABLE等“真正的通用类型”。因此,outout作为一系列表格行传输,每个表格字段的长度最多为512个字符。

enter image description here

这有几个后果:

  • 如果您请求的所有字段的总大小超过512个字符,您将获得一个简短的转储(检查事务ST22)和您提到的异常。
  • 如果您尝试读取无法转换为字符字段的字段和/或热点有固定长度(!)字符表示,则会发生错误。最有可能的是,RFC_READ_TABLE将通过输出数据的短转储或barf中止。

您可以通过垂直切片并按顺序读取列组来绕过第一个问题。请注意,在将结果重新拼接在一起时,RFC_READ_TABLE无法保证始终以相同的顺序返回数据。另请注意,您可能会遇到违反事务隔离的情况,具体取决于您读取的数据更改的频率。