VinceCoder
3/22/2019 - 2:58 PM

FIELDCAT DINAMICO

Il codice permette di creare un fieldcat dinamico.

  FIELD-SYMBOLS: <gfst_dyntable> TYPE INDEX TABLE,
                 <gfs_dyntable>  TYPE any.

    TYPES:BEGIN OF ty_dynst,
            fname TYPE char10,
          END OF ty_dynst.

    DATA: lt_fcat1   TYPE TABLE OF lvc_s_fcat,
          ls_fcat1   TYPE lvc_s_fcat,
          lv_lines   TYPE char2,
          lv_index   TYPE char2,
          ls_dynst   TYPE ty_dynst,
          t_newtable TYPE REF TO data,
          t_newline  TYPE REF TO data,
          lv_tabix   TYPE sy-tabix,
          ls_var     LIKE LINE OF s_var.

    FIELD-SYMBOLS: <lfs_fieldcat> LIKE LINE OF gt_fieldcat.

    ls_fcat1-fieldname = 'MATNR'.
    APPEND ls_fcat1 TO lt_fcat1.
    CLEAR ls_fcat1.

    lv_index = sy-index.
    LOOP AT s_var INTO ls_var.
      ls_fcat1-fieldname = ls_var-low.
      APPEND ls_fcat1 TO lt_fcat1.
      CLEAR: ls_fcat1.
    ENDLOOP.

    CLEAR ls_dynst.
    CLEAR lv_index.

    CALL METHOD cl_alv_table_create=>create_dynamic_table     "Here creates the internal table dynamcally
      EXPORTING
        it_fieldcatalog = lt_fcat1
      IMPORTING
        ep_table        = t_newtable.

    ASSIGN t_newtable->* TO <gfst_dyntable>.

    CREATE DATA t_newline LIKE LINE OF <gfst_dyntable>.
    ASSIGN t_newline->* TO <gfs_dyntable>.

    gt_fieldcat = lt_fcat1.