Есть ли функция для предоставления отформатированного отображения глубокой структуры с данными? - PullRequest
2 голосов
/ 19 мая 2011

У меня есть глубокая структура, которую я хотел бы отобразить в виде дерева со значениями каждого поля (что-то вроде иерархического отображения структуры, которую вы можете сделать в SE11, но со значениями).

Есть ли класс или функция, которая делает это для вас? Я действительно не хочу изобретать велосипед.

Ответы [ 3 ]

2 голосов
/ 09 июня 2011

Ну, я бы сказал, что быстрее делать 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
2 голосов
/ 19 мая 2011

Будет ли работать дерево ИВЛ?CL_SALV_TREE

0 голосов
/ 10 июня 2011

Я никогда не видел такой функциональности и думаю, что в стандарте никого нет. Не могу вспомнить ни одной ситуации в стандарте, где такая функциональность должна использоваться. На мой взгляд, наиболее подходящий способ реализовать это - использовать Column Tree. Взгляните на SAPCOLUMN_TREE_CONTROL_DEMO

...