首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不刷新ALV网格

不刷新ALV网格
EN

Stack Overflow用户
提问于 2018-12-29 10:55:55
回答 2查看 5.8K关注 0票数 2

我的模块池程序中有两个屏幕(屏幕A和屏幕B)。屏幕A显示ALV网格,工具栏上有1个按钮,屏幕B也显示ALV网格和工具栏上的1个按钮。

当我按下屏幕A上的“显示订单”按钮时,我被指向屏幕B。然后在屏幕B上执行一些编辑操作,然后单击工具栏上的“保存”按钮,然后单击“后退”按钮。

当我按下屏幕A上另一行的“显示订单”按钮时,我再次被定向到屏幕B,但是ALV网格仍然显示来自第一个材料的数据,即它不显示新数据,而是显示旧数据。

它是否与cl_gui_cfw=>flush方法有关?如果是,那么代码中的确切位置应该调用它以显示正确的数据?

屏幕B的PBO模块。

代码语言:javascript
复制
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模块。

代码语言:javascript
复制
zclmz_pp_md_create=>go_alv_charg->refresh_table_display( EXPORTING is_stable = ls_stable ).

CALL METHOD cl_gui_cfw=>flush.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-29 12:55:13

方法refresh_table_display应该在屏幕B的PBO中调用,而不是在PAI中调用。

代码语言:javascript
复制
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.
票数 3
EN

Stack Overflow用户

发布于 2018-12-29 13:09:51

这是一个众所周知的控制问题。如果您在容器中实例化了一个控件( ALV),其中已经有一个尚未释放的控件,那么旧的控件仍然会出现。

有两种解决办法:

  • 您可以继续实例化控件,但是必须释放前面的控件。为此,您必须使用方法空闲,该方法可用于所有类型的控件(即使容器本身也可以被释放,其所有内部控件随后也会被释放)。
  • 或者,只实例化控件一次,从而更改逻辑,然后刷新其内容,就像Laurens说的那样。

(顺便说一下,这个问题与cl_gui_cfw=>flush无关)

还请参阅另一个answer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53968887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档