开发者

Is there a function to provide formatted display of a deep structure with data?

开发者 https://www.devze.com 2023-03-06 19:33 出处:网络
I have a deep structure that I would like to display as a tree with the values of each fie开发者_运维知识库ld (sort of like the hierarchical display of a structure you can do in SE11, but with values)

I have a deep structure that I would like to display as a tree with the values of each fie开发者_运维知识库ld (sort of like the hierarchical display of a structure you can do in SE11, but with values).

Is there a class or function that does this for you? I really don't want to have to go reinvent the wheel.


Well, I would say it is faster to do DIY then to search for something generic enough to help you. You can try following coding as basis.

It does the plain recursion through the variable (be it table or structure) and it prints the fields found at bottom...

*&---------------------------------------------------------------------*
*&      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


Would an ALV Tree work? CL_SALV_TREE


I've never seen such functionality and think there is no one in standard. Can't remeber any situation in standard where such functionality should be used. In my opinion most appropriate way to implement this - to use Column Tree. Take a look into SAPCOLUMN_TREE_CONTROL_DEMO

0

精彩评论

暂无评论...
验证码 换一张
取 消