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'.即存在 单击敏感,页面所有已设置为可编辑的列将无法转化为不可编辑状态。
posted @ 2012-10-16 13:42  icybady  阅读(736)  评论(0)    收藏  举报