簡體   English   中英

ALV Grid 不刷新

[英]ALV Grid is not refreshed

我的模塊池程序中有兩個屏幕(屏幕 A 和屏幕 B)。 屏幕 A 顯示 ALV 網格並在工具欄上有 1 個按鈕,屏幕 B 還顯示 ALV 網格和工具欄上的 1 個按鈕。

當我按下屏幕 A 上的“顯示訂單”按鈕時,我被定向到屏幕 B。然后我在屏幕 B 上進行一些編輯操作,單擊工具欄上的“保存”按鈕,然后單擊“返回”按鈕。

當我按下屏幕 A 上不同行的“顯示訂單”按鈕時,我再次被定向到屏幕 B,但 ALV 網格仍然顯示來自第一個材料的數據,即它不顯示新數據,但顯示舊數據.

它是否與 cl_gui_cfw=>flush 方法有關? 如果是,那么我應該在代碼中的哪個位置調用它以顯示正確的數據?

屏幕 B 的 PBO 模塊。

CREATE OBJECT zclmz_pp_md_create=>go_container_charg
  EXPORTING
    parent    = cl_gui_container=>screen0
    side      = cl_gui_docking_container=>dock_at_top
    extension = 800.

CREATE OBJECT zclmz_pp_md_create=>go_alv_charg
  EXPORTING
    i_parent = zclmz_pp_md_create=>go_container_charg.

zclmz_pp_md_create=>go_alv_charg->set_table_for_first_display( EXPORTING 
is_layout  = ls_layout CHANGING  it_outtab  =  zclmz_pp_md_create=>gs_plz- 
charg  it_fieldcatalog  = lt_fieldcat ).

屏幕 B 的 PAI 模塊。

zclmz_pp_md_create=>go_alv_charg->refresh_table_display( EXPORTING is_stable = ls_stable ).

CALL METHOD cl_gui_cfw=>flush.

方法refresh_table_display應該在屏幕 B 的 PBO 中調用,而不是在 PAI 中。

IF zclmz_pp_md_create=>go_alv_charg is NOT BOUND.
    CREATE OBJECT zclmz_pp_md_create=>go_container_charg
    EXPORTING
        parent    = cl_gui_container=>screen0
        side      = cl_gui_docking_container=>dock_at_top
        extension = 800.

    CREATE OBJECT zclmz_pp_md_create=>go_alv_charg
    EXPORTING
        i_parent = zclmz_pp_md_create=>go_container_charg.

    zclmz_pp_md_create=>go_alv_charg->set_table_for_first_display( EXPORTING 
    is_layout  = ls_layout CHANGING  it_outtab  =  zclmz_pp_md_create=>gs_plz- 
    charg  it_fieldcatalog  = lt_fieldcat ).
ELSE.
 zclmz_pp_md_create=>go_alv_charg->refresh_table_display( ).
ENDIF.

這是一個眾所周知的控件問題。 如果您在容器中實例化一個控件(您的 ALV),其中已經有一個尚未釋放的控件,那么舊控件仍會顯示。

兩種解決方案:

  • 要么繼續實例化控件,但隨后必須釋放以前的控件。 為此,您必須使用 FREE 方法,該方法可用於所有類型的控件(甚至容器本身可以被釋放,然后釋放其所有內部控件)。

  • 或者,您只需將控件實例化一次即可更改邏輯,然后刷新其內容,就像 Laurens 所說的那樣。

(順便說一下,問題與 cl_gui_cfw=>flush 無關)

另請參閱此其他答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM