ALV稳定刷新
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的,所以當使用穩定刷新以后,不能再用該語句了
總結