alv 에서 선택 버튼을 checkbox로 사용하고 있는데
이 컬럼을 보통 editable되어 있어서 check할수 있는데
어떤 조건에 의해 해당되는 경우
해당 row만 이 컬럼을 check 못하도록 할수 있나요?
메세지를 뿌리는 방법말고 위에 있는 방법으로 해보신분
조언 부탁드립니다.
alv 에서 선택 버튼을 checkbox로 사용하고 있는데
이 컬럼을 보통 editable되어 있어서 check할수 있는데
어떤 조건에 의해 해당되는 경우
해당 row만 이 컬럼을 check 못하도록 할수 있나요?
메세지를 뿌리는 방법말고 위에 있는 방법으로 해보신분
조언 부탁드립니다.
체크박스 비활성화도 일반 필드의 활성화/비활성화 방법과 동일합니다.
디스플레이될 인터널테이블에 lvc_t_styl의 타입을 사용하는 필드는 선언해주셨나요?
안해주셨음 celltab TYPE lvc_t_styl 이라고 선언해주시구요.
DATA : lt_lvc_styl TYPE lvc_t_styl,
l_index TYPE i.
LOOP AT gt_dt.
l_index = sy-tabix.
REFRESH lt_lvc_styl.
PERFORM set_celltab CHANGING lt_lvc_styl.
CLEAR gt_dt-celltab.
INSERT lines of lt_lvc_styl INTO TABLE gt_dt-celltab.
MODIFY gt_dt INDEX l_index.
ENDLOOP.
------------------
FORM set_celltab CHANGING p_t_lvc_styl TYPE lvc_t_styl.
DATA : ls_lvc_styl TYPE lvc_s_styl.
DATA : BEGIN OF ls_fieldcat.
INCLUDE STRUCTURE lvc_s_fcat.
DATA : END OF ls_fieldcat.
LOOP AT gt_lvc_fcat INTO ls_fieldcat.
ls_lvc_styl-fieldname = ls_fieldcat-fieldname.
IF gt_dt-check EQ 'N'. " 이부분에서 조건처리하여 체크박스 필드 활성화여부 제어
CASE ls_lvc_styl-fieldname.
WHEN 'CHECKBOX'.
ls_lvc_styl-style = cl_gui_alv_grid=>mc_style_disabled.
WHEN OTHERS.
ls_lvc_styl-style = cl_gui_alv_grid=>mc_style_enabled.
ENDCASE.
ELSE.
ls_lvc_styl-style = cl_gui_alv_grid=>mc_style_enabled.
ENDIF.
INSERT ls_lvc_styl INTO TABLE p_t_lvc_styl.
ENDLOOP.
ENDFORM. " set_celltab
이렇게 하시면 조건에 맞는 라인의 체크박스만 비활성화를 해줄수 있습니다.
여기서는 gt_dt-check의 값이 'N'인 경우에만 checkbox를 비활성화 해주었는데요..
원하시는 조건대로 제어해 주심 될 것 같네요.