[ABAP] 동적 인터널테이블 생성하기(create_dynamic_table)

SAPWISE·2024년 8월 27일

동적 인터널 테이블 생성

  1. DDIF_NAMETAB_GET으로 테이블 정보 가져오기
  2. create_dynamic_table로 테이블 생성
  3. 필드심볼에 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>.
profile
SAP, ERP, ABAP

0개의 댓글