我正在使用类cl_gui_alv_grid
创建一个ALV输出网格。输出表的其中一列通过使用fieldcatalog的相应记录定义为复选框:
ls_fcat-checkbox = 'X'.
ls_fcat-edit = 'X'.
对于包含复选框的列的所有记录,它们都设置为未选中。我的问题是我可以实现什么逻辑,以便对于某些行,在显示ALV时将复选框设置为选中。
答案 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
*----------------------------------------------------------------------*