首先定义两种宏,一种是可编辑,一种是不可编辑
FIELDCAT-EDIT = ‘X’. “编辑ALV
其次在内表中加上个定义个结构
FIELD_STYLE TYPE LVC_T_STYL
然后写控制逻辑
DATA LS_STYLEROW TYPE LVC_S_STYL .
DATA LT_STYLETAB TYPE LVC_T_STYL .
LOOP AT T_ITAB.
CLEAR LT_STYLETAB[].
“此处写控制逻辑”
LS_STYLEROW-FIELDNAME = ‘ZZ_XHRQ’.这个是要控制的字段名
LS_STYLEROW-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.这个方法是控制style是否可用,与之对应的有个 MC_STYLE_ENABLED,根据不同的逻辑替换
INSERT LS_STYLEROW INTO TABLE LT_STYLETAB.
T_ITAB-FIELD_STYLE[] = LT_STYLETAB[].
MODIFY T_ITAB.
ENDLOOP.
HOUT2 ZZ_XHRQ ‘销毁日期’ 8 CHAR . 根据不同的逻辑用不同的宏
最后在定义alv属性的时候加上 PS_LAYOUT-STYLEFNAME = ‘FIELD_STYLE’. 这个名字是前面在内表中定义的结构名字
想让修改的字段保存到内表则需要用edt_cll_cb退出可编辑单元格时回调”。
DATA: I_GRID_SETTINGS TYPE LVC_S_GLAY.
I_GRID_SETTINGS-EDT_CLL_CB = ‘X’.
在那个FUCTION中加一行
I_GRID_SETTINGS = I_GRID_SETTINGS