将ALV输出网格中的复选框标记为已选中

时间:2017-09-25 12:47:30

标签: object abap alv

我正在使用类cl_gui_alv_grid创建一个ALV输出网格。输出表的其中一列通过使用fieldcatalog的相应记录定义为复选框:

ls_fcat-checkbox = 'X'.
ls_fcat-edit = 'X'.

enter image description here

对于包含复选框的列的所有记录,它们都设置为未选中。我的问题是我可以实现什么逻辑,以便对于某些行,在显示ALV时将复选框设置为选中。

1 个答案:

答案 0 :(得分:4)

如果要根据alv网格中最初显示的数据设置复选框,只需在条件匹配时用abap_true(=' X')填充outtab复选框字段。如果你使用fieldcatalog的checkbox参数,你会看到' X'检查和' '没检查。

如果要根据用户输入设置复选框,在编辑alv网格中的某些字段后,使用以下alv网格事件更改outtab:

METHODS:
      handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
        IMPORTING er_data_changed,

      handle_data_changed_finished FOR EVENT data_changed_finished OF cl_gui_alv_grid, "executed only if no errors, outtab holds changed data

当我不得不处理这些事件时,我也发现了一些评论

*&---------------------------------------------------------------------*
*&      Method  handle_data_changed
*&---------------------------------------------------------------------*
*      raised when at least one cell is modified in the ALV
*     - modified entries are not stored in gt_outtab yet, but er_data_changed object
*     - mt_good_cells holds every changed field thats valid according to type declaration
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Method  handle_data_changed_finished
*&---------------------------------------------------------------------*
*      - raised when data validation is valid
*      - NOW outtab holds valid changed data
*----------------------------------------------------------------------*