동적 인터널 테이블 생성
- DDIF_NAMETAB_GET으로 테이블 정보 가져오기
- create_dynamic_table로 테이블 생성
- 필드심볼에 assign
DATA : d_tab TYPE REF TO data,
d_line TYPE REF TO data,
lt_fcat TYPE TABLE OF lvc_s_fcat,
ls_fcat LIKE LINE OF lt_fcat.
DATA : tdd02l LIKE dd02l.
FIELD-SYMBOLS : <new_tab> TYPE table,
<new_line> TYPE any.
PARAMETERS : p_tname LIKE dd03l-tabname OBLIGATORY.
AT SELECTION-SCREEN.
START-OF-SELECTION .
DATA : dfies_tab TYPE STANDARD TABLE OF dfies,
dfies TYPE dfies.
CALL FUNCTION 'DDIF_NAMETAB_GET'
EXPORTING
tabname = p_tname
TABLES
dfies_tab = dfies_tab
EXCEPTIONS
not_found = 1
OTHERS = 2.
LOOP AT dfies_tab INTO dfies.
ls_fcat-fieldname = dfies-fieldname.
ls_fcat-ref_table = dfies-tabname.
ls_fcat-ref_field = dfies-fieldname.
APPEND ls_fcat TO lt_fcat.
ENDLOOP.
CHECK lt_fcat IS NOT INITIAL.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fcat
IMPORTING
ep_table = d_tab
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.
ASSIGN d_tab->* TO <new_tab>.
CREATE DATA d_line LIKE LINE OF <new_tab>.
ASSIGN d_line->* TO <new_line>.
SELECT *
FROM (p_tname)
INTO TABLE <new_tab>.