ALV OO单元格编辑状态设计 .
(注意:若 hotspot = 'X'.即存在 单击敏感,页面所有已设置为可编辑的列将无法转化为不可编辑状态。)
ALV函数只能实现对整列的编辑状态控制,单元格的编辑状态控制只能通过ALV OO实现。
1.单元格状态控制和单元格颜色控制类似,在LIST DATA TABLE中定义一个字段cellstyle TYPE lvc_t_styl
eg:
*--- Internal table holding list data
DATA BEGIN OF gt_list OCCURS 0 .
INCLUDE STRUCTURE SFLIGHT .
DATA rowcolor(4) TYPE c .
DATA cellstyle TYPE lvc_t_styl . list data table中的cellstyle字段将被用来存储单元格样式信息,单元格编辑状态就是通过表中的内容来控制
2.根据相关条件调整list data table中的cellstyle字段内容
eg:
FORM adjust_table .
DATA: wa_gt_list LIKE LINE OF gt_list.
DATA ls_stylerow TYPE lvc_s_styl .
DATA lt_styletab TYPE lvc_t_styl .
LOOP AT gt_list INTO wa_ gt_list.
CLEAR:ls_stylerow.
REFRESH:lt_styletab.
IF wa_gt_list -isuse EQ 'X'. “如果ISUSE标志有值,那么该行的ZRESON字段为不可输入,ISUSE字段为可输入
ls_stylerow-fieldname = 'ZRESON'.
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_stylerow INTO TABLE lt_styletab. “lt_styletab 为sorted table只能通过INSERT语句插入值
ls_stylerow-fieldname = 'ISUSE'.
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
INSERT ls_stylerow INTO TABLE lt_styletab.
ENDIF.
wa_gt_list-cellstyle = lt_styletab.
MODIFY gt_list FROM wa_gt_list.
ENDLOOP.
ENDFORM. " adjust_table
3.设置样式输出控制结构的stylename字段内容为单元格状态控制字段名
eg:
DATA:is_layout TYPE lvc_s_layo.
is_layout-stylefname = 'CELLSTYLE'.
注意:若 hotspot = 'X'.即存在 单击敏感,页面所有已设置为可编辑的列将无法转化为不可编辑状态。
eg:
DATA:is_layout TYPE lvc_s_layo.
is_layout-stylefname = 'CELLSTYLE'.
浙公网安备 33010602011771号