背景:ALV報表查詢時候在展示的界面再根據某個條件去過濾或者匯總時候,點擊按鈕再展示出新的ALV結果,后退可以回到原明細表。可以有如下2種做法。
1、定義兩張內表(這個很重要,不然實現不了后退功能)。
定義兩個ALV展示函數,分別展示兩張內表。
在例程種調用一個REUSE_ALV_GRID_DISPLAY_LVC函數展示一張內表,在這個函數里的command事件里調用另外一個REUSE_ALV_GRID_DISPLAY_LVC函數展示另外一張內表,
這樣點擊標准后退按鈕時候可以繼續調用前一張內表展示。
2、定義兩張內表(這個很重要,不然實現不了后退功能)。
定義一個ALV展示函數(如果需要展示的字段不一樣,這個要綜合考慮),采用傳入參數形式,分別展示兩張內表。
在例程種調用一個REUSE_ALV_GRID_DISPLAY_LVC函數展示一張內表(使用參數傳入),在這個函數里的command事件里仍舊調用前面的函數展示另外一張內表,使用參數傳入,
這樣點擊標准后退按鈕時候可以繼續調用前一張內表展示。
START-OF-SELECTION.
PERFORM GET_DETAIL.
PERFORM PRINT_ALV2 USING IT_ZTSD035[]. “將表作為參數傳入
FORM FRM_USER_COMMAND1 USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD .
DATA: REF TYPE REF TO CL_GUI_ALV_GRID.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_REPID = SY-CPROG "網上代碼沒有這個,這個是必須的!!!!*
E_GRID = REF.
CALL METHOD REF->CHECK_CHANGED_DATA.
RS_SELFIELD-REFRESH = 'X'.
"響應事件
CASE R_UCOMM.
WHEN '&COMPLETE'."只查OA審批完成的
REFRESH IT_035ALV_SUM.
IT_035ALV_SUM = IT_035ALV.
* REFRESH IT_035ALV.
LOOP AT IT_035ALV_SUM INTO DATA(LS_035).
“這里可以處理內表
ENDLOOP.
PERFORM PRINT_ALV2 USING IT_035ALV_SUM[]."這里調用ALV時使用參數,並且不清空兩個內表的值
* WHEN '&F03'.
* LEAVE TO SCREEN 0.
ENDCASE.
"刷新ALV
RS_SELFIELD-ROW_STABLE = 'X'.
RS_SELFIELD-COL_STABLE = 'X'.
RS_SELFIELD-REFRESH = 'X'.
ENDFORM. "FRM_USER_COMMAND
