[英]Return dynamically-typed table rows via RFC?
我需要通过RFC返回一些表的行,这些表的名称在执行之前是未知的。
我有一个循环执行的语句:
SELECT *
up to iv_max_count rows
into table <lt_result>
FROM (iv_table_name) AS ltab
WHERE (SQL_WHERE).
如何将<lt_result>
结果连接到一个列表/表格并通过 RFC 返回?
当然,所有的表都可以有不同的结构。 创建一个包含所有行的大表无济于事。
您不能在 RFC 中返回一个或多个任意结构,它们必须被预定义。
我能想到的最好的方法是模仿 SAP 处理数据库中 idoc 的方式。 您的表至少需要两个字段,第一个是描述符字段,告诉调用者表结构是什么,第二个字段是一个很长的字符类型字段,所有数据都连接在一起,固定宽度或分隔. 这样,您可以从多个表中以相同的返回结构传递数据。
如果您的调用程序确实对 SAP 数据集一无所知,您可能还需要从表 DD02l 中获取元数据。
简而言之,这不是 ABAP 和功能模块的工作方式。
您必须准确定义您的输入是什么以及您的输出结构/表格是什么样的。 你可以返回一个包含多个深层嵌套表的结构,只有一个返回结构,但不是动态的!
使这一切动态化会使事情变得更加复杂。 主要是不必要的。
一种可能的方式:
另一种方式:在调用者程序的循环中使用功能模块RFC_READ_TABLE
在没有连接的循环中动态读取多个单表听起来不像 ABAP 编程,更像是“我需要第三方工具中的 SAP 数据”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.