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 |
댓글