abap - ALV 网格未刷新
问题描述
我的模块池程序中有两个屏幕(屏幕 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.
推荐阅读
- c++ - C++ 问题:为什么用大括号括起来的初始化器列表不能在类中工作?
- javascript - Firebase 云函数返回内部错误
- java - 我如何将代码放入循环中,因为它不再接受输入
- selenium - Selenium 无效参数
- java - Android Studio 解析 JSON 对象不起作用
- c++ - 使用 realloc 增加大小与创建更大的动态数组
- r - 来自导入包的“已覆盖注册的 S3 方法”消息
- api-gateway - 如何在微服务中实现 API 网关
- android-studio - 已指定命名参数“child”的参数
- face-recognition - 如何防止这种人脸识别错误?