ABAP-ALV中調用按鈕顯示另外一張ALV報表時候回退到前一ALV


背景: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 .
  DATAREF 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM