2017-09-25 89 views
2

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

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

enter image description here

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

回答

4

如果您希望根据alv网格中最初显示的数据设置复选框,只需在条件匹配的情况下使用abap_true(='X')填充outtab复选框字段。如果你想而不是使用fieldcatalog的复选框参数,你会看到'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 
*----------------------------------------------------------------------* 
+0

是的,我想显示一些行显示ALV时第一时间被检查。我填写了outtab,现在可以。谢谢 –

相关问题