Dynamic 如何在只有数据引用的表中循环

Dynamic 如何在只有数据引用的表中循环,dynamic,abap,internal-tables,sap-query,Dynamic,Abap,Internal Tables,Sap Query,我正在使用功能模块RSAQ\u QUERY\u CALL,返回一个表: DATA: gr_data TYPE REF TO data. CALL FUNCTION 'RSAQ_QUERY_CALL' EXPORTING query = 'ZXXXXXXXX' usergroup = 'XXX' VARIANT = 'TEST' SKIP_SELSCREEN = 'X' DA

我正在使用功能模块
RSAQ\u QUERY\u CALL
,返回一个表:

DATA: gr_data TYPE REF TO data.

CALL FUNCTION 'RSAQ_QUERY_CALL'
     EXPORTING
       query          = 'ZXXXXXXXX'
       usergroup      = 'XXX'
       VARIANT        = 'TEST'
       SKIP_SELSCREEN = 'X'
       DATA_TO_MEMORY = 'X'
     IMPORTING
       ref_to_ldata   = gr_data
     EXCEPTIONS
       OTHERS         = 11.
现在我如何在那张桌子上循环?

我尝试的是:

  • 指定给字段符号
  • 传递字段符号而不是dref
两者都不起作用。

我找到了解决方案(在询问高级开发人员之后…)

字段符号:类型表,
键入任何。
将gr_数据->*分配给。
在分配时循环。
做
将结构的组件sy索引指定给。
如果sy subrc为0。
出口“行的最后一个字段
恩迪夫。
写入:/'字段',sy索引':'。
恩多。
结束循环。
我找到了解决方案(在询问高级开发人员之后…)

字段符号:类型表,
键入任何。
将gr_数据->*分配给。
在分配时循环。
做
将结构的组件sy索引指定给。
如果sy subrc为0。
退出。”行的最后一个字段
恩迪夫。
写入:/'字段',sy索引':'。
恩多。
结束循环。
请参阅以下代码:

    FIELD-SYMBOLS: <gt_data> type table,
                   <fs_value> type any.
    ASSIGN gref_data->* to <gt_data>.
    LOOP AT <gt_data> ASSIGNING <fs_value>.
         write:<fs_value>.                 "Here you will get row by row
    ENDLOOP.
字段符号:类型表,
键入任何。
将gref_数据->*分配给。
在分配时循环。
写入:。“在这里,你可以一排一排地拿到
结束循环。
请参阅以下代码:

    FIELD-SYMBOLS: <gt_data> type table,
                   <fs_value> type any.
    ASSIGN gref_data->* to <gt_data>.
    LOOP AT <gt_data> ASSIGNING <fs_value>.
         write:<fs_value>.                 "Here you will get row by row
    ENDLOOP.
字段符号:类型表,
键入任何。
将gref_数据->*分配给。
在分配时循环。
写:“在这里,你可以一行一行地拿到
结束循环。

您尝试了哪种代码,出现了哪些问题/错误消息?我的尝试非常失败,出现了语法错误和类型不兼容的消息。我删除了这些尝试,搜索了其他可能性,但没有发现,因为表的结构不固定。您尝试了哪些代码,出现了哪些问题/错误消息?我的尝试非常失败,我得到了语法错误和类型不兼容的消息。我删除了这些尝试,搜索了其他可能性,但没有发现任何可能性,因为表的结构不固定。如果要实现类型安全,可以使用ABAP RTTS类方法,它的工作方式类似于工厂。这张桌子可以检查。然后您可以接收表的类型,在下一步中,您可以基于表的结构类型创建结构或fieldsymbol。如果你想做到类型安全,你可以使用ABAP RTTS类方法,它就像工厂一样工作。这张桌子可以检查。然后您可以接收表的类型,在下一步中,您可以基于表的结构类型创建结构或fieldsymbol。很好的通用的东西可以这样做。