欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 在 ALV 报表中使用 CL_SALV 类时,如何处理多行?

在 ALV 报表中使用 CL_SALV 类时,如何处理多行?

2024/11/14 12:30:28 来源:https://blog.csdn.net/SAP_yu/article/details/143712587  浏览:    关键词:在 ALV 报表中使用 CL_SALV 类时,如何处理多行?

举个例子: 我设置了显示 “全选按钮”。

需要选择几行,在这种情况下,已经选择了 2 行,并使用这 2 行执行了一个调用事务。但还有其他事情要做,因为 ALV 报告中的所有行都执行了调用事务。
我找到了以下内容:

layout-box_fname = “字段名”。
layout-sel_mode = 'A'。

但这种功能要在 CL_GUI_ALV_GRID 中使用。

CL_SALV 类中,也可以设置选择模式:

lo_selections = lo_salv->get_selections( ).* set selection mode
lo_selections->set_selection_mode( if_salv_c_selection_mode=>row_column ). " 支持行列选择

然后在对应的行进行选中,支持获取选中的行做处理:

DATA: lt_rows TYPE salv_t_row,ls_rows TYPE i.DATA: lo_selections TYPE REF TO cl_salv_selections       lo_selections = lo_salv->get_selections( ).
lt_rows = lo_selections->get_selected_rows( ).IF lt_rows IS INITIAL.MESSAGE '请选中行再进行保存' TYPE 'S' DISPLAY LIKE 'E'.RETURN.
ENDIF.FIELD-SYMBOLS: <fs_out> TYPE LINE OF lo_report->gt_out.
LOOP AT lt_rows INTO ls_rows.READ TABLE lo_report->gt_out ASSIGNING <fs_out> INDEX ls_rows.IF sy-subrc = 0." 你的选择逻辑ENDIF.
ENDLOOP.

也可以看官方 Demo 报表:SALV_TEST_TABLE_SELECTIONS,在 FORM form get_selections 中有类似的逻辑。

*&---------------------------------------------------------------------*
*&      Form  get_selections
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form get_selections .data: lr_selections type ref to cl_salv_selections.data: lt_rows   type salv_t_row,lt_cols   type salv_t_column,ls_cell   type salv_s_cell.data: l_row        type i,l_col        type lvc_fname,l_row_string type char128,l_col_string type char128,l_row_info   type char128,l_col_info   type char128.lr_selections = gr_table->get_selections( ).lt_rows = lr_selections->get_selected_rows( ).lt_cols = lr_selections->get_selected_columns( ).ls_cell = lr_selections->get_current_cell( ).*... 行clear l_row_info.loop at lt_rows into l_row.write l_row to l_row_string left-justified.concatenate l_row_info l_row_string into l_row_info separated by space.endloop.if sy-subrc eq 0.message i000(0k) with text-i02 l_row_info.endif.*... 列clear l_col_info.loop at lt_cols into l_col.write l_col to l_col_string left-justified.concatenate l_col_info l_col_string into l_col_info separated by space.endloop.if sy-subrc eq 0.message i000(0k) with text-i03 l_col_info.endif.*... 单元格if ls_cell is not initial.message i000(0k) with text-i02 ls_cell-row text-i03 ls_cell-columnname.endif.endform.                    " get_selections

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com