ABAP-ALV自定义全选
在ALV报表中,我们可以通过设置布局LVC_S_LAYO的SEL_MODE和BOX_FNAME属性,来使用系统标准的选择功能。但出于用户需求,开发人员有时需要提供自定义选择按钮,文章给出了考虑过滤器的全选按钮示例。
DEMO
如果是函数式的ALV,首先要定义全局对象GO_ALV,类型为CL_GUI_ALV_GRID,然后通过以下子例程获取ALV对象。
FORM get_alv_object .
CHECK sy-batch = abap_false. "后台执行无法获取ALV对象
IF go_alv IS NOT BOUND.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = go_alv.
ENDIF.
ENDFORM.
获取ALV对象后,通过以下子例程实现全选或者取消全选。
FORM frm_sel_line USING p_sel TYPE abap_bool.
MODIFY gt_alv FROM VALUE #( sel = p_sel ) TRANSPORTING sel WHERE sel <> p_sel.
"过滤条目不选择
IF p_sel = abap_true.
CALL METHOD go_alv->get_filtered_entries
IMPORTING
et_filtered_entries = DATA(lt_filterf).
LOOP AT lt_filterf INTO DATA(ls_filterf).
READ TABLE gt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>) INDEX ls_filterf.
IF <ls_alv> IS ASSIGNED.
<ls_alv>-sel = abap_false.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
ABAPALV自定义全选实现
文章介绍了如何在ABAP的ALV报表中创建自定义全选功能,包括通过设置LVC_S_LAYO布局属性实现标准选择,以及通过定义全局ALV对象和使用GET_GLOBALS_FROM_SLVC_FULLSCR函数获取ALV对象。文章提供了自定义全选和取消全选的代码示例,特别是考虑了过滤器条件下的全选操作。

被折叠的 条评论
为什么被折叠?



