Yi.*_*Yi. 9 sap abap jco saprfc
我的java/groovy程序中的要求是这样的:允许用户输入表名和表字段作为查询输入参数,并期望从SAP获得一些查询结果.从用户输入,我得到表名[CDPOS]和[CDHDR].在阅读了SAP文档和谷歌搜索后,我发现这些是存储更改文档日志的表.但是我没有找到任何可以在java中用来执行这种查询的远程调用函数.然后我使用了已弃用的RFC"RFC_READ_TABLE",并尝试仅根据此RFC构建自定义查询.但是,我发现如果我传递给这个RFC的所需字段的数量超过2,即使我限制了最大行,我总是得到DATA_BUFFER_EXCEED错误.
我无权成为sap系统中的ABAP开发人员,无法将FM添加到现有系统,因此我只能编写代码来完成JAVA中的此要求.
难道我做错了什么?你能否就这个问题给我一些提示?
提前谢谢了!
vwe*_*ert 14
DATA_BUFFER_EXCEEDED仅在您要读取的字段的总宽度超过DATA参数的宽度时发生,这可能因SAP版本而异 - 当前系统为512个字符.它与行数无关,而与单个数据集的大小无关.所以问题是:FIELDS参数的内容是什么?如果它为空,则表示"读取所有字段".CDHDR的宽度为192个字符,因此我假设问题是CDPOS,宽度为774个字符.主要问题是字段VALUE_OLD和VALUE_NEW,都是245个字符.即使您没有获得开发人员访问权限,也应该促使某人获得只读字典访问权限,以便能够详细检查结构.
无耻插件:RCER包含RFC_READ_TABLE的包装类,它负责字段处理并确保所选字段的总宽度低于功能模块强加的限制.
还要注意,这些表在生产环境中可能很大 - 想想数十亿条目.通过对这些表执行过多的读取操作,您可以轻松地将数据库停止.
| 归档时间: |
|
| 查看次数: |
14203 次 |
| 最近记录: |