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

And*_*lva 2 c# sap abap exception saprfc

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

vwe*_*ert 5

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

在此输入图像描述

这有几个后果:

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

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