最近遇到一个棘手问题,子屏幕包含一个OO ALV,TOOLBAR的筛选键、排序键、总计等按钮使用时获取不到选择列,点击筛选出现以下情况。
找问题发现是REFRESH事件刷新的问题,给了稳定刷新参数但是没有生效。
ls_stable-row ='X'.
ls_stable-col ='X'.
CALL METHOD ic_alv_grid->refresh_table_display
EXPORTING
is_stable = ls_stable
EXCEPTIONS
finished = 1
OTHERS = 2.
之后通过尝试各种方法,通过在刷新前获取选中列,刷新后设置选中列来解决问题。
CALL METHOD ic_alv_grid->get_selected_columns
IMPORTING
et_index_columns = lt_col.
ls_stable-row ='X'.
ls_stable-col ='X'.
CALL METHOD ic_alv_grid->refresh_table_display
EXPORTING
is_stable = ls_stable
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL METHOD ic_alv_grid->set_selected_columns
EXPORTING
it_col_table = lt_col.
CALL METHOD cl_gui_cfw=>flush.
修改代码后问题解决!