*----------------------------------------------------------------------*
* Form:  OUTPUT_INTERNAL_TABLE                                         *
* Used for printing contents of any internal table without knowing the *
* table name or the structure before runtime.                          *
*----------------------------------------------------------------------*
form output_internal_table tables Itab using table_name.

data:  begin of struct_tab occurs 50.
         include structure dfies.
data:  end of struct_tab.
data: ix type i.

field-symbols <output>.

* Get information about table structure for the table to output
  call function 'GET_FIELDTAB'
       exporting  tabname        = table_name
                  langu          = sy-langu
       tables     fieldtab       = struct_tab
       exceptions no_texts_found = 1
                  others         = 2.
  loop at itab. "loop through the internal table with the data
    write sy-uline.
    new-line.
    do. "loop through the structure table
      read table struct_tab index sy-index.
      assign component sy-index of structure itab to <output>.
      if sy-subrc <> 0. exit. endif.
      if <output> <> space.
        write: / struct_tab-fieldtext(20), ': ', 30 <output>.
      endif.
    enddo.
  endloop.
endform.