MODULE alv_display OUTPUT.
에서 PERFORM set_style.을 지정해서 해당조건(가)의 체크박스인 것들은 disable 됩니다.
그런데 alv 리스트에서 건건이 인터페이스로 데이터를 전송하고 리프레쉬를 하면
체크박스의 데이터가 해당조건(가)의 disable로 변해야하는데
CALL METHOD ty_alv_grid->refresh_table_display를 하기전에 set_style을 설정하면
에러가 발생합니다.
화면을 다시 초기화면으로 이동했다 와야지만 해당조건(가)의 체크박스인 것이 disable
처리되어있는데 리프레쉬를 하면서 set_style를 설정하는 방법이 없을까요?
set stype 하실 때 그냥 insert 하시나요?
코드를 봐야 알겠지만 느낌상 duplicate 에러가 날 것 같은데요.
해당 유형인 lvc_t_styl 은 sorted table 입니다. key 는 fieldname이구요
아래처럼 field이름과 값을 비교해서 없을 경우 새로입력하고
있을 경우 현재 지정하려는 값과 다른 경우 바꿔주는 로직이 필요할 것 같습니다.
form set_style using fieldname type any " 대상필드
fieldstyle type any " 대상스타일
changing ty_styl type any table. " 스타일테이블
data ls_style type lvc_s_styl.
clear ls_styl.
read table ty_style into ls_styl
with key fieldname = fieldname.
if sy-subrc is initial.
if fieldstyle = ls_styl-style.
exit. " 동일함 : 변경할 필요없음
else.
" 값만 변경
ls_styl-stype = fieldstyle.
modify ty_style from ls_styl.
endif.
else.
" 새로운 스타일 등록
ls_style-fieldname = fieldname.
ls_style-style = fieldstype.
insert ls_stype into table ty_style.
endif.
endform.