最近做了这样的一个屏幕在下面的屏幕里通过批量维护调出上面的屏幕,录入要更改的数据,通过点击保存来动态改变下面屏幕的内容,开始得时候是在上面的屏幕中的保存按钮中调用alv grid control的刷新方法,发现只有第一次点保存的时候才能修改alv grid中的内容,后来在下面的屏幕的PBO中添加了如下代码,功能好使了:
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container EXPORTING
container_name = 'CONT01'.
CREATE OBJECT alv_grid EXPORTING
i_parent = g_custom_container.
CREATE OBJECT alv_dbclick.
SET HANDLER alv_dbclick->on_dbclick FOR alv_grid.
PERFORM frm_set_layout.
PERFORM frm_transfer_data.
ELSE.
PERFORM frm_refresh_alv.
ENDIF.
*&---------------------------------------------------------------------*
*& Form frm_refresh_alv
*&---------------------------------------------------------------------*
* 刷新ALV数据
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
FORM frm_refresh_alv.
CALL METHOD alv_grid->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
FINISHED = 1
others = 2.
CALL METHOD cl_gui_control=>set_focus EXPORTING control = alv_grid.
CALL METHOD cl_gui_cfw=>flush.
* CALL METHOD alv_grid->set_table_for_first_display
* EXPORTING is_layout = gs_layout
* i_structure_name = 'ZSTYGINFO'
* CHANGING it_outtab = it_yginfo.
IF SY-SUBRC <> 0.
ENDIF.
ENDFORM.