1.单元格可编辑:
首先需要在程序定义的结构中增加 FIELD_STYLE 参考LVC_T_STYL
TYPES :BEGIN OF TYP_RESULTX, BOX TYPE CHAR1, FIELD_STYLE TYPE LVC_T_STYL. "修改模式. INCLUDE TYPE TYP_RESULT. TYPES: END OF TYP_RESULTX.
然后在程序中循环需要输出的内表,条件是被选中的行
FORM FRM_DATA_EDIT USING PV_OPEN TYPE CHAR1. LOOP AT GT_RESULTX ASSIGNING FIELD-SYMBOL(<LFS_ALV>) WHERE BOX = 'X'. IF PV_OPEN = ABAP_ON. PERFORM FRM_OPEN_EDIT CHANGING <LFS_ALV>-FIELD_STYLE. ELSE. PERFORM FRM_CLOSE_EDIT CHANGING <LFS_ALV>-FIELD_STYLE. ENDIF. MODIFY GT_RESULTX FROM <LFS_ALV>. ENDLOOP. ENDFORM.
对被选中行的FIELD_STYLE结构的FIELDNAME 赋值需要变成可编辑的字段
对结构的STYLE 赋值CL_GUI_ALV_GRID=>MC_STYLE_ENABLED. "表示可编辑
" 设置某个单元格为可编辑 ls_cellstyle-fieldname = 'MATNR'. " 列名 ls_cellstyle-style = cl_gui_alv_grid=>mc_style_enabled. APPEND ls_cellstyle TO lt_cellstyles. " 设置某个单元格为不可编辑 ls_cellstyle-fieldname = 'WERKS'. " 列名 ls_cellstyle-style = cl_gui_alv_grid=>mc_style_disabled. APPEND ls_cellstyle TO lt_cellstyles.
最后在GS_LAYOUT中指定STYLEFNAME
GS_LAYOUT-STYLEFNAME = 'FIELD_STYLE'. "layout中指定修改控制字段
另外如果要表单整个可编辑:
LAYOUT-EDIT = 'X'.
列可编辑:
FIELDCAT-EDIT = 'X'.
2.单元格颜色设置
在需要输出的内表的结构中增加字段
COLOR TYPE LVC_T_SCOL
然后对于满足条件,需要输出颜色的行
REFRESH <LFS_ALV3>-COLOR. CLEAR LS_COLOR. LS_COLOR-FNAME = 'ZBQTY'. LS_COLOR-COLOR-COL = 6. " 颜色 LS_COLOR-COLOR-INT = 1. " 是否加重 LS_COLOR-COLOR-INV = 0. "是否反色 0表示底色,1表示字体颜色 APPEND LS_COLOR TO <LFS_ALV3>-COLOR.
颜色参考如下