ALV GRID 를 EDIT 하는 3가지 방법에 대해 알아보겠습니다.
1. ALV GRID 전체 수정
2. 필드별 수정 (열)
3. 셀별 수정 = 라인별 수정(행)
★ 조회/수정 모드 변경 메소드
0. 전제 조건(변수)
DATA: GS_LAYO TYPE LVC_S_LAYO,
GS_FCAT TYPE LVC_S_FCAT.
DATA: GRF_GRID TYPE CL_GUI_ALV_GRID.
DATA: BEGIN OF GT_DISP OCCURS 0.
INCLUDE STRUCTURE MARA.
DATA: CELLTAB TYPE LVC_T_STYL,
END OF GT_DISP.
* SET TABLE FOR FIRST DISPLAY 사용하여 화면 출력
1. ALV GRID 전체 수정
GS_LAYO-EDIT = 'X'.
*2,3 번 사용할때는 GS_LAYO-EDIT = ' ' . 이어야한다.
2. 필드별 수정 (열)
EDIT 사용할 필드의 EDIT 설정.
EX) GS_FCAT-FIELDNAME = 'MATNR'.
GS_FCAT-EDIT = 'X'.
APPEND GS_FCAT TO GT_FCAT.
3. 셀별 수정 = 라인별 수정(행)
**참조 프로그램 : BCALV_EDIT_02
1) 디스플레이 테이블에 LVC_T_STYL 선언
DATA: BEGIN OF GT_DISP OCCURS 0.
INCLUDE STRUCTURE MARA.
DATA: CELLTAB TYPE LVC_T_STYL, "테이블 형식임
END OF GT_DISP.
2) 테이블 데이터등에 따라서 셀별로 EDIT 활성/비활성 설정
예를 들어 GT_DISP 의 ERDAT(생성일) 가 오늘날짜보다 전일때,
MATNR / MTART를 EDIT 활성화
DATA: LS_CELLTAB TYPE LVC_S_STYL.
LOOP AT GT_DISP.
IF GT_DISP-ERDAT < SY-DATLO.
LS_CELLTAB-FIELDNAME = 'MATNR'.
LS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED. *EDIT활성화
INSERT LS_CELLTAB INTO TABLE GT_DISP-CELLTAB.
CLEAR: LS_CELLTAB.
LS_CELLTAB-FIELDNAME = 'MTART'.
LS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
INSERT LS_CELLTAB INTO TABLE GT_DISP-CELLTAB.
ELSE.
LS_CELLTAB-FIELDNAME = 'MATNR'.
LS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. *EDIT비활성화
INSERT LS_CELLTAB INTO TABLE GT_DISP-CELLTAB.
CLEAR: LS_CELLTAB.
LS_CELLTAB-FIELDNAME = 'MTART'.
LS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
INSERT LS_CELLTAB INTO TABLE GT_DISP-CELLTAB.
ENDIF.
MODIFY GT_DISP.
ENDLOOP.
" 라인별 수정은 따로 있지않고 수정할 라인의 필드 전부를 활성화 시키면 된다
" 활성/비활성화 필드 설정시 GT_FCAT을 사용하여 쉽게 추가할 수 있다.
3) 레이아웃에서 스타일 테이블 설정 ( GT_DISP의 LVC_T_STYL 필드 )
GS_LAYO-STYLEFNAME = 'CELLTAB'. *무조건 대문자
4) 필드 카탈로그의 EDIT 활성화
활성화/ 비활성화 적용한 필드의 GS_FCAT-EDIT 적용
EX) GS_FCAT-FIELDNAME = 'MATNR'.
GS_FCAT-EDIT = 'X'.
APPEND GS_FCAT TO GT_FCAT.
*3번이 적용되지않으면 2번에서 EDIT 활성을 해도 EDIT 적용되지않는다.
★ 조회/수정 모드 변경 메소드
이렇게 EDIT 설정 3가지 방법에 대해 알아봤습니다.
1,2,3 의 방법으로 EDIT 설정을 하면 프로그램 실행시 바로 수정모드로 화면이 출력됩니다.
하지만 다수의 프로그램들은 조회/수정 버튼을 사용하여
프로그램 처음조회시에는 조회모드로, 수정버튼을 클릭시에 수정 모드로 변하게 개발되어있습니다.
프로그램 처음 조회시에는 아래와 같이 조회모드로 출력하고,
CALL METHOD GRF_GRID->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 0 : 조회모드 (EDIT 비활성화)
수정버튼을 클릭했을때 아래와 같이 수정모드로 변경해주면 됩니다.
CALL METHOD GRF_GRID->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 1 : 수정모드 (EDIT 활성화)
'ALV GRID' 카테고리의 다른 글
ALV GRID 화면 분리 (CL_GUI_EASY_SPLITTER_CONTAINER) (0) | 2022.01.26 |
---|---|
ALV : 이벤트 HANDLE_BUTTON_CLICK (0) | 2022.01.26 |
ALV GRID 툴바 제거 방법 (0) | 2021.09.09 |
ALV 화면 분리 (CL_GUI_SPLITTER_CONTAINER) (0) | 2021.07.21 |
ALV GRID에 SEARCH HELP 추가하기 (0) | 2021.07.14 |