Abap 通过RFC返回动态类型的表行?

Abap 通过RFC返回动态类型的表行?,abap,saprfc,opensql,function-module,Abap,Saprfc,Opensql,Function Module,我需要通过RFC返回一些表的行,这些表的名称在执行之前是未知的 我有一个循环执行的语句: SELECT * up to iv_max_count rows into table <lt_result> FROM (iv_table_name) AS ltab WHERE (SQL_WHERE). 选择* 最多iv_max_计数行 入席 来自(iv_表_名称)作为ltab WHERE(SQL\u WHERE)。 如何将结果连接到一个列表/表格中,

我需要通过RFC返回一些表的行,这些表的名称在执行之前是未知的

我有一个循环执行的语句:

  SELECT *
    up to iv_max_count rows
    into table <lt_result>
    FROM (iv_table_name) AS ltab
    WHERE (SQL_WHERE).
选择*
最多iv_max_计数行
入席
来自(iv_表_名称)作为ltab
WHERE(SQL\u WHERE)。
如何将
结果连接到一个列表/表格中,并通过RFC返回


当然,所有表都可以有不同的结构。创建一个包含所有行的大表没有帮助。

简而言之,ABAP和功能模块不是这样工作的

您必须准确定义输入和输出结构/表的外观。您可以返回一个包含多个深度嵌套表的结构,以便只有一个返回结构,但不能动态返回

让这一切充满活力会让事情变得更加复杂。大部分是不必要的

一种可能的方式:

  • 您必须分析输入,并为每个输入表结果构建动态结构和表
  • 构建包含所有嵌套表的包装结构
  • 返回数据引用对象,因为无法返回泛型数据类型
  • 您的接收程序需要定义相同的数据结构,这意味着它必须准确地知道要返回什么,以延迟数据
  • 另一种方式: 在调用者程序的循环中使用功能模块
    RFC\u READ\u TABLE


    在一个循环中动态读取多个单表而不进行连接听起来不像是ABAP编程,更像是“我需要第三方工具中的SAP数据”。

    您不能在RFC中返回任意结构,它们必须预定义

    我能想到的最好的方法是模仿SAP处理数据库中IDoc的方式。您的表至少需要两个字段,第一个字段是一个描述符字段,告诉调用者表结构是什么,第二个字段是一个非常长的字符类型字段,所有数据连接在一起,可以是固定宽度的,也可以是分隔的。这样,您就可以在同一个返回结构中传递来自多个表的数据


    如果您的调用程序真的对SAP数据集一无所知,您可能还需要从表DD02l中获取元数据。

    我是ABAP新手。如何定义包含多个表的变量?当然,循环中的每个表都可以有不同的结构。创建一个包含所有行的大表是无济于事的。你可以考虑编辑标题——你不是真的在寻找表的列表,你想把多个表传回,直到运行时才知道。@ BryChanin我更新了标题。它与现在的主题相符吗?我相信这更好地描述了您正在尝试做的事情,是的。为什么不简单地将行序列化为XML或JSON呢?@SandraRossi这就是我们目前正在做的事情。但我想二进制RFC比ascii(臃肿的)JSON更好。