在ALV的data_change事件中刷新了ALV,导致每次更改数据时丢失了ALV的选中状态,导致后续
保存的时候使用get_selected_rows方法时丢失数据,导致ALV编辑后更新失败。
解决方法:每次更新后重新用set_selected_rows方法填充选中行。
还有一种方法就是用CHECKBOX,这要看用户使用习惯。
CALL METHOD g_grid->get_selected_rows
IMPORTING
et_index_rows = lt_row
et_row_no = l_roid.
PERFORM frm_refresh_alv USING g_grid.
CALL METHOD g_grid->set_selected_rows
EXPORTING
it_index_rows = lt_row.
*& 刷新ALV页面
*&---------------------------------------------------------------------*
*& --> GV_GRID
*&---------------------------------------------------------------------*
FORM frm_refresh_alv USING pv_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_stable TYPE lvc_s_stbl.
ls_stable-row = 'X'.
ls_stable-col = 'X'.
CALL METHOD pv_grid->refresh_table_display
EXPORTING
is_stable = ls_stable.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.