Abap 是否有一个功能提供数据深层结构的格式化显示?

Abap 是否有一个功能提供数据深层结构的格式化显示?,abap,Abap,我有一个很深的结构,我想用每个字段的值显示为一个树(有点像在SE11中可以做的结构的层次显示,但是用值) 是否有一个类或函数为您执行此操作?我真的不想去重新发明轮子。一棵ALV树行得通吗?CL_SALV_TREE好吧,我想说做DIY比搜索一些足够通用的东西来帮助你更快。您可以尝试以下编码作为基础 它通过变量(无论是表还是结构)执行简单的递归,并打印在底部找到的字段 *&------------------------------------------------------------

我有一个很深的结构,我想用每个字段的值显示为一个树(有点像在SE11中可以做的结构的层次显示,但是用值)


是否有一个类或函数为您执行此操作?我真的不想去重新发明轮子。

一棵ALV树行得通吗?CL_SALV_TREE

好吧,我想说做DIY比搜索一些足够通用的东西来帮助你更快。您可以尝试以下编码作为基础

它通过变量(无论是表还是结构)执行简单的递归,并打印在底部找到的字段

*&---------------------------------------------------------------------*
*&      Form  print_structure
*&---------------------------------------------------------------------*
form print_structure using im_data.

  data: lr_typeref   type ref to cl_abap_typedescr,
        lf_ddic_in   type fieldname,
        lt_dfies     type ddfields,
        lf_string    type c length 200.
      field-symbols: <lt_table> type any table,
                 <ls_table> type any,
                 <lf_field> type any,
                 <ls_dfies> like line of lt_dfies.

  lr_typeref = cl_abap_typedescr=>describe_by_data( im_data ).
  case lr_typeref->type_kind.
    when cl_abap_typedescr=>typekind_table. " internal table
      assign im_data to <lt_table>.
      loop at <lt_table> assigning <ls_table>.
        perform print_structure using <ls_table>.
      endloop.
    when cl_abap_typedescr=>typekind_struct1 or
         cl_abap_typedescr=>typekind_struct2. " deep/flat structure
      lf_ddic_in = lr_typeref->get_relative_name( ).
      call function 'DDIF_FIELDINFO_GET'
        exporting
          tabname     = lf_ddic_in
          all_types   = 'X'
        tables
          dfies_tab = lt_dfies
        exceptions
          not_found = 1
          others    = 0.
      check sy-subrc eq 0.
      loop at lt_dfies assigning <ls_dfies>.
        assign component <ls_dfies>-fieldname of structure im_data to <lf_field>.
        perform print_structure using <lf_field>.
      endloop.
    when others. " any field
      write im_data to lf_string.
      write: / lf_string.
  endcase.

endform.                    "print_structure
*&---------------------------------------------------------------------*
*&表单打印结构
*&---------------------------------------------------------------------*
使用im_数据形成打印_结构。
数据:lr_typeref type ref至cl_abap_typedescr,
如果字段名中的类型为ddic,
lt_dfies类型ddfields,
lf_字符串类型c长度200。
字段符号:键入任何表格,
输入any,
输入any,
就像一排排排的中尉。
lr_typeref=cl_abap_typedescr=>按数据(im_数据)描述。
案例lr\U类型参考->类型类型类型。
当cl\u abap\u typedescr=>typekind\u表时。“内部表格
将im_数据分配给。
在分配时循环。
使用执行打印结构。
结束循环。
当cl\u abap\u typedescr=>typekind\u struct1或
cl_abap_typedescr=>typekind_struct2.“深/平结构
lf\u ddic\u in=lr\u typeref->get\u relative\u name()。
调用函数“DDIF\u FIELDINFO\u GET”
出口
tabname=lf\u ddic\u in
所有_类型='X'
桌子
dfies\u选项卡=lt\u dfies
例外情况
未找到=1
其他=0。
检查sy subrc eq 0。
在lt_dfies赋值时循环。
将结构im_数据的组件-字段名分配给。
使用执行打印结构。
结束循环。
当其他人。“任何领域
将im_数据写入lf_字符串。
写入:/lf\u字符串。
尾声。
endform.“打印结构”

我从未见过这样的功能,我认为标准中没有这样的功能。不记得在标准中应该使用这些功能的任何情况。在我看来,实现这一点最合适的方法是使用列树。查看
SAPCOLUMN\u TREE\u CONTROL\u DEMO

您指的是使用节点SFLIGHT、SCARR等的逻辑数据库(LDB)表吗?不,我指的不是逻辑数据库。我说的是深层结构(可能包含其他结构、表、字符串等的结构),谢谢Bryan,但是使用CL_SALV_树需要大量的设置、格式化数据等。我正在寻找一个可以接受(深层)的函数结构作为输入,并以树的形式显示数据结构。我不确定是否存在这样的东西,但我已经有一段时间没有尝试过了。好吧,这有点中途了,因为我希望能产生一个ALV网格,但我接受它。谢谢。所以,在
中,当其他人用内部表替换
write
语句时,它将收集数据(不要忘记通过递归将其作为更改参数传递),最后将此内部表抛出ALV网格。