在我工作的地方,我们有两个使用 SAP 的系统,一个使用 Delphi,另一个使用 c#。我正在实现 c# 并且两者都有同样的问题,当我使用 查询大量列RFC_READ_TABLE
时,根据表(通常为 60+),它返回一个没有描述和内部异常的 Rfcabapexception,只是一个标题。是什么导致了这个异常,我能做些什么来防止它?
问问题
1468 次
1 回答
5
功能模块RFC_READ_TABLE
必须将数据转换为通用格式,因为“真正的通用类型”喜欢DATA
或STANDARD TABLE
不支持 RFC 通信。因此,输出以一系列表格行的形式传输,每行都是一个字符字段,最长可达 512 个字符。
这有几个后果:
- 如果您请求的所有字段的总大小超过 512 个字符,您将得到一个简短的转储(检查事务
ST22
)和您提到的异常。 - 如果您尝试读取无法转换为字符字段的字段和/或确实具有固定长度 (!)字符表示,则会发生不好的事情。最有可能的是,
RFC_READ_TABLE
将在您的输出数据中出现一个简短的转储或 barf 中止。
您可以通过垂直切片表并按顺序读取列组来绕过第一个问题。请注意,RFC_READ_TABLE
当再次将结果拼接在一起时,不能保证始终以相同的顺序返回数据。另请注意,您可能会遇到违反事务隔离的情况,具体取决于您读取的数据更改的频率。
于 2013-01-03T09:55:34.880 回答