ALV 필드 내에 버튼을 생성하여 사용하는 방법에 대해 알아보겠습니다.
1. 테이블내에 STYLE 필드 추가
DATA : BEGIN OF gt_disp OCCURS 0,
matnr LIKE mara-matnr,
cellstyle TYPE lvc_t_styl,
END OF gt_disp.
2. ALV LAYOUT 선언
GS_LAYOUT-STYLEFNAME = 'CELLSTYLE'. *대문자
3. 셀속성 지정(버튼)
DATA : ls_cellstyle TYPE lvc_s_styl.
*예시: gt_disp-matnr이 ‘TEST’ 일때만 버튼으로 만들기
LOOP AT gt_disp.
IF gt_disp-matnr = ‘TEST’.
CLEAR: ls_cellstyle.
ls_cellstyle-fieldname = ‘MATNR’.
ls_cellstyle-style = cl_gui_alv_grid=>mc_style_button.
INSERT ls_cellstyle INTO TABLE gt_disp_cellstyle.
MODIFY gt_disp TRANSPORTING cellstyle.
ENDIF.
ENDLOOP.
4. 이벤트 선언/구현
PUBLIC SECTION.
CLASS lcl_event_handler DEFINITION
METHODS : handle_button_click FOR EVENT button_click
OF cl_gui_alv_grid
IMPORTING es_col_id
es_row_no.
ENDCLASS.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_button_click.
PERFORM handle_button_click USING es_col_id es_row_no.
ENDMETHOD.
ENDCLASS.
FORM handle_button_click USING ps_col_id TYPE lvc_s_col
ps_row_no TYPE lvc_s_roid.
READ TABLE gt_disp INDEX ps_row_no-row_id
**사용할 로직 추가
ENDFORM.
5. AlV event 추가.
SET HANDLER grf_event->handle_button_click FOR grf_grid.
'ALV GRID' 카테고리의 다른 글
이벤트 MENU_BUTTON (0) | 2022.11.02 |
---|---|
ALV GRID 화면 분리 (CL_GUI_EASY_SPLITTER_CONTAINER) (0) | 2022.01.26 |
ALV Grid Edit 기능 (0) | 2022.01.19 |
ALV GRID 툴바 제거 방법 (0) | 2021.09.09 |
ALV 화면 분리 (CL_GUI_SPLITTER_CONTAINER) (0) | 2021.07.21 |