속성은 하단과 같고요
P_LAYOCAT-EDIT = 'X'.
P_LAYOCAT-SEL_MODE = 'A'.
P_LAYOCAT-NO_ROWMARK = ' '. "(or 'X')
조회화면은 1001번이고 결과화면은 100번 화면입니다.
특정 컬럼만 EDIT 가능하게하고 이외의 컬럼은 DISABLE 시켰습니다.
이를 REFRESH 하려니
자꾸 모든 컬럼이 EDIT 가능하게 바뀌는데
제가 초보라 아직 REFRESH를 제대로 사용을 못하는것 같습니다.
조금 알려주세요^^
댓글 2
-
Giant
2008.12.03 01:14
-
별이고픈구름
2008.12.03 03:51
Giant님이 이야기한 방법은 Cell 단위까지 각각 제어가 가능한 방법입니다.
특정필드단위로 edit를 설정할 때는 field_catalogs에서 필드명과 필드위치등을 줄 때 edit = 'X'. 를 같이 주면 됩니다.
DATA : gt_lvc_fcat TYPE lvc_t_fcat, " Fieldcatalog table
gs_lvc_fcat TYPE lvc_s_fcat. " Fieldcatalog work area
gs_lvc_fcat-fieldname = 'BUKRS'. - 사용할 필드명
gs_lvc_fcat-col_pos = '1'. - 위치할 순서
gs_lvc_fcat-reptext = 'Company code'. - 해당필드 title
gs_lvc_fcat-edit = 'X'. - 해당필드 Edit 모드(ALV control: Ready for input)
append gs_lvc_fcat into gt_lvc_fcat.
ALV에서 LAYOUT-EDIT를 사용하시면 전부가 편집가능 합니다. 그래서 이것을 사용하시면 안됩니다.
아래의 메소드를 사용하면 문제 없을것입니다.
LOOP AT GT_ITAB.
LS_CELLTAB-FIELDNAME = 'SLDST'.
LS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
INSERT LS_CELLTAB INTO TABLE GT_ITAB-CELLTAB.
MODIFY GT_ITAB.
ENDLOOP.
그리고 레이아웃에서 아래와 같이 설정 하여야 합니다.
LAYOUT-STYLEFNAME = 'CELLTAB'.
여기서 'CELLTAB'는 ITAB의 필드 입니다. 이 필드는 ITAB입니다.
테스트 해보십시요!
도움이 되길 바랍니다.