본문 바로가기
ABAP

Dynamic table test

by clode 2023. 2. 24.
728x90
반응형

TOP

PARAMETERS : p_table(30) TYPE c OBLIGATORY.

"입력받을 abap dictionary 테이블을 위한 파라미터

FIELD-SYMBOLS <fs_table> TYPE STANDARD TABLE.

DATA : gv_tabname TYPE dd02t-ddtext, "테이블 텍스트
       ok_code TYPE sy-ucomm.

"ALV

DATA : gt_fieldcat TYPE lvc_t_fcat,

       gs_fieldcat TYPE lvc_s_fcat.


DATA : gs_variant TYPE disvariant,

       gs_layout TYPE lvc_s_layo.

GET DATA

FORM get_data .

DATA gv_data TYPE REF TO data.

CLEAR gv_tabname.


SELECT SINGLE ddtext

  INTO gv_tabname

  FROM dd02t

    WHERE tabname = p_table

    AND ddlanguage = sy-langu.

"파라미터와 동일한 이름의 테이블과 시스템 언어


IF sy-subrc <> 0.

MESSAGE '존재하지 않는 테이블 입니다' TYPE 'A' DISPLAY LIKE 'E'.

ELSE.


"입력받은 테이블형태의 동적 internal table 생성
CREATE DATA gv_data TYPE TABLE OF (p_table). 
"파라미터로 입력받은 테이블 이름
ASSIGN gv_data->* TO <fs_table>.


"입력받은 테이블로부터 데이터 SELECT
SELECT * FROM (p_table) INTO TABLE <fs_table> UP TO 100 ROWS.

ENDIF.

ENDFORM.
FORM set_fieldcat .


DATA : lt_fieldcat TYPE slis_t_fieldcat_alv,

      lv_tabname TYPE dd02l-tabname. "SAP 테이블 이름


FIELD-SYMBOLS <fs_fcat> TYPE lvc_s_fcat.

lv_tabname = p_table. "파라미터 값을 넣어줌

CLEAR gt_fieldcat.


CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-repid

i_structure_name = lv_tabname "파라미터로 넘겨받은 테이블 이름

i_inclname = sy-repid

CHANGING

ct_fieldcat = lt_fieldcat[].


CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'

EXPORTING

it_fieldcat_alv = lt_fieldcat

IMPORTING

et_fieldcat_lvc = gt_fieldcat

TABLES

it_data = <fs_table>.


ENDFORM.
FORM display_alv .

CALL METHOD go_grid->set_table_for_first_display
EXPORTING
i_save = 'A'
i_default = 'X'
is_layout = gs_layout
CHANGING
it_outtab = <fs_table>
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
others = 4.

ENDFORM.
728x90
반응형

'ABAP' 카테고리의 다른 글

SELECTION SCREEN Search Help F4  (0) 2023.02.24
SELECTION SCREEN 라디오 버튼으로 파라미터 제어하기  (0) 2023.02.24
강제로 PBO PAI 태우기  (0) 2023.02.24
Pop up Message  (0) 2023.02.24
ALV All select  (0) 2023.02.24

댓글