FORM FRM_ALV_3USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD.
"判断按钮
CASE I_UCOMM.
WHEN 'ZSALL'.
PERFORM FRM_ALV_SALL USING ABAP_TRUE.
WHEN 'ZDALL'.
PERFORM FRM_ALV_SALL USING ABAP_FALSE.
WHEN OTHERS.
ENDCASE.
"刷新ALV
DATA(LS_STABLE) = VALUE LVC_S_STBL( ROW = 'X' COL = 'X' ).
DATA: LO_GRID TYPE REF TO CL_GUI_ALV_GRID.
"ALV OBJECT
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = LO_GRID.
CALL METHOD LO_GRID->REFRESH_TABLE_DISPLAY( IS_STABLE = LS_STABLE I_SOFT_REFRESH = 'X' ).
ENDFORM.
FORM FRM_ALV_SALL USING I_SELX.
""""""""""" 获取当前筛选grid
DATA: LO_GRID TYPE REF TO CL_GUI_ALV_GRID.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = LO_GRID.
""""""""""" 获取当前筛选过滤器
DATA: LT_FILTER TYPE LVC_T_FIDX,
LS_FILTER TYPE INT4.
CALL METHOD LO_GRID->GET_FILTERED_ENTRIES
IMPORTING
ET_FILTERED_ENTRIES = LT_FILTER.
""""""""""" 数据筛选
LOOP AT GT_ALV_9000 ASSIGNING FIELD-SYMBOL(<FS_ALV1>).
IF LT_FILTER[] IS INITIAL.
<FS_ALV1>-SEL = I_SELX.
ELSE.
READ TABLE LT_FILTER INTO LS_FILTER WITH KEY TABLE_LINE = SY-TABIX.
IF SY-SUBRC EQ 0.
ELSE.
<FS_ALV1>-SEL = I_SELX.
ENDIF.
ENDIF.
CLEAR LS_FILTER.
ENDLOOP.
ENDFORM.