OOALV:
如果使用"REFRESH_TABLE_DISPLAY"刷新ALV后,记录会跳到第一行,以下代码可以使记录仍然定位在当前行
DATA ls_stable TYPE lvc_s_stbl.
ls_stable-row = 'X'.
ls_stable-col = 'X'.
CALL METHOD gr_alvgrid->refresh_table_display
EXPORTING
is_stable = ls_stable
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
FUNCTION ALV:
使用类似的方法,但是要先把当前ALV网格“对象化”
DATA: l_guid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' “把当前网格赋给对象l_guid
IMPORTING
e_grid = l_guid.
"调用CHECK_CHANGED_DATA可以使被修改的数据自动更新到内表中去
CALL METHOD l_guid->check_changed_data.
DATA stbl TYPE lvc_s_stbl. ”稳定刷新
stbl-row = 'X'." 基于行的稳定刷新
stbl-col = 'X'." 基于列稳定刷新
CALL METHOD l_guid->refresh_table_display
EXPORTING
is_stable = stbl
* i_soft_refresh = 'X'
”使用排序、过滤器等,定位在当前行、列i_soft_refresh这个参数是在排序、过滤的时候保持稳定刷新的,好像is_stable也有这个作用的。
EXCEPTIONS
finished = 1
OTHERS = 2.
注意:FUNCTION ALV 中一般是在frm_user_command中加上rs_selfield-refresh = 'X'.来刷新ALV的,所以当使用稳定刷新以后,不能再用该语句了
如果使用"REFRESH_TABLE_DISPLAY"刷新ALV后,记录会跳到第一行,以下代码可以使记录仍然定位在当前行
DATA ls_stable TYPE lvc_s_stbl.
ls_stable-row = 'X'.
ls_stable-col = 'X'.
CALL METHOD gr_alvgrid->refresh_table_display
EXPORTING
is_stable = ls_stable
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
FUNCTION ALV:
使用类似的方法,但是要先把当前ALV网格“对象化”
DATA: l_guid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' “把当前网格赋给对象l_guid
IMPORTING
e_grid = l_guid.
"调用CHECK_CHANGED_DATA可以使被修改的数据自动更新到内表中去
CALL METHOD l_guid->check_changed_data.
DATA stbl TYPE lvc_s_stbl. ”稳定刷新
stbl-row = 'X'." 基于行的稳定刷新
stbl-col = 'X'." 基于列稳定刷新
CALL METHOD l_guid->refresh_table_display
EXPORTING
is_stable = stbl
* i_soft_refresh = 'X'
”使用排序、过滤器等,定位在当前行、列i_soft_refresh这个参数是在排序、过滤的时候保持稳定刷新的,好像is_stable也有这个作用的。
EXCEPTIONS
finished = 1
OTHERS = 2.
注意:FUNCTION ALV 中一般是在frm_user_command中加上rs_selfield-refresh = 'X'.来刷新ALV的,所以当使用稳定刷新以后,不能再用该语句了