ALV有两种方式实现,一种方式是CALL FUNCTION: REUSE_ALV_GRID_DISPLAY, 标准按钮是包含刷新设置的,但是如果自定义功能,也就是需要设置USER_COMMAND CALL BACK程序的时候,需要对参数SELFIELD-REFRESH值设置为’X',这样ALV的数据就会刷新显示。
第二种方式是Call Screen,防止一个custom container,再添加一个CL_GUI_ALV_GRID控件,这种方式实现的ALV刷新需要CALL METHOD Grid 空间的REFRESH_TABLE_DISPLAY方法,需要注意的是,如果Grid Control所在屏幕没有切换就要显示刷新后的数据,需要再调用 CL_GUI_CFW=>FLUSH方法,才能看到刷新后的结果。原因是REFRESH_TABLE_DISPLAY虽然刷新的界面,但是SAP GUI并不是实时更新,而是将更新的结果放在缓存中,手动调用CL_GUI_CFW=>FLUSH才能触发SAP GUI更新界面,看到刷新的结果。
有人说可以先FREE掉控件,再重新创建,这是完全没有必要的。