Table Layout

|
*&---------------------------------------------------------------------*
*& Report  YTABLELAYOUT
*&---------------------------------------------------------------------*
REPORT ytablelayout.

*----------------------------------------------------------------------*
*  INTERNAL TABLES                                                     *
*----------------------------------------------------------------------*
DATA: gt_outtab LIKE dd03l OCCURS 0 WITH HEADER LINE.

*----------------------------------------------------------------------*
*  SELECTION-SCREEN                                                    *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK frame1 WITH FRAME.
PARAMETERS: pa_tabnm  LIKE dd03l-tabname OBLIGATORY MEMORY ID dtb.
PARAMETERS: pa_itb1   LIKE dd03l-tabname.
PARAMETERS: pa_itb2   LIKE dd03l-tabname.
PARAMETERS: pa_width  TYPE i OBLIGATORY DEFAULT 10.
PARAMETERS: pa_depth  TYPE i OBLIGATORY DEFAULT 1.
SELECTION-SCREEN END OF BLOCK frame1.

*----------------------------------------------------------------------*
* START-OF-SELECTION                                                   *
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM select_table_layout.

*----------------------------------------------------------------------*
* END-OF-SELECTION                                                     *
*----------------------------------------------------------------------*
END-OF-SELECTION.
  PERFORM display_table_layout.
  PERFORM display_define_tab.
  PERFORM display_field_for_value.

*----------------------------------------------------------------------*
* FORM                                                                 *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  select_table_layout
*&---------------------------------------------------------------------*
* select table layou
*----------------------------------------------------------------------*
FORM select_table_layout.
  CLEAR : gt_outtab, gt_outtab[].

  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE gt_outtab
    FROM dd03l
   WHERE tabname EQ pa_tabnm AND fieldname NE '.INCLUDE'
   ORDER BY position.

  CHECK sy-subrc NE 0.
  MESSAGE s200(s1).
ENDFORM.                    " select_table_layout
*&---------------------------------------------------------------------*
*&      Form  display_table_layout
*&---------------------------------------------------------------------*
* display table layout
*----------------------------------------------------------------------*
FORM display_table_layout.
  DATA : l_count(03) TYPE n.
  DATA : l_depth(03) TYPE n.

  l_depth = 2 * pa_depth.

  LOOP AT gt_outtab.
    ADD 1 TO l_count.

    IF sy-tabix EQ 1.
      WRITE : / pa_tabnm, /, /, AT (l_depth) space NO-GAP, 'SELECT'.
    ENDIF.

    WRITE AT: (pa_width) gt_outtab-fieldname.

    IF l_count+2(1) EQ '0' OR l_count+2(1) EQ '5'.
      NEW-LINE.
      WRITE: AT (l_depth) space NO-GAP, '      '.
    ENDIF.

    AT LAST.
      WRITE : AT /(l_depth) space NO-GAP,
        '  INTO CORRESPONDING FIELDS OF TABLE gt_outtab'.
      WRITE : AT /(l_depth) space NO-GAP,
        '  FROM', pa_tabnm.
    ENDAT.
  ENDLOOP.
ENDFORM.                    " display_table_layout
*&---------------------------------------------------------------------*
*&      Form  display_define_tab
*&---------------------------------------------------------------------*
* display
*----------------------------------------------------------------------*
FORM display_define_tab.
  DATA : l_length TYPE i.
  DATA : l_width  TYPE i.
  l_length = STRLEN( pa_tabnm ).

  LOOP AT gt_outtab.
    AT FIRST.
      WRITE : /, /, / 'DATA : BEGIN OF', AT (l_length) pa_tabnm,
             'OCCURS 0,'.
    ENDAT.

    l_width = STRLEN( gt_outtab-fieldname ).
    WRITE : / '        ', AT (l_width) gt_outtab-fieldname, 'TYPE',
            AT (l_length)  pa_tabnm NO-GAP, '-' NO-GAP,
            AT (l_width) gt_outtab-fieldname NO-GAP, ','.

    AT LAST.
      WRITE : / '       END OF', AT (l_length) pa_tabnm NO-GAP, '.'.
    ENDAT.
  ENDLOOP.
ENDFORM.                    " display_define_tab
*&---------------------------------------------------------------------*
*&      Form  display_field_for_value
*&---------------------------------------------------------------------*
* display
*----------------------------------------------------------------------*
FORM display_field_for_value.
  DATA : l_length1  TYPE i.
  DATA : l_length2 TYPE i.
  DATA : l_length3 TYPE i.
  l_length1 = STRLEN( pa_itb1 ).
  l_length2 = STRLEN( pa_itb2 ).

  LOOP AT gt_outtab.
    l_length3 = STRLEN( gt_outtab-fieldname ).

    WRITE : / '  ' NO-GAP, AT (l_length1) pa_itb1 NO-GAP,
             '-' NO-GAP, gt_outtab-fieldname, '=',
             AT (l_length2) pa_itb2 NO-GAP, '-' NO-GAP,
             AT (l_length3) gt_outtab-fieldname NO-GAP, '.'.
  ENDLOOP.
ENDFORM.                    " display_field_for_value


*Selection texts
*----------------------------------------------------------
* PA_DEPTH         Depth
* PA_ITB1         Internal table name(to)
* PA_ITB2         Internal table name(from)
* PA_TABNM D       .
* PA_WIDTH         Width for display


*Messages
*----------------------------------------------------------
*
* Message class: S1
*200   No data found


And