在开发Dialog程序时如果运用的是常规的屏幕布局,如普通的OOALV程序,那么重复的实例化OOALV不会有太大的问题,甚至PBO事件的自动实例化可以造成ALV自动刷新LAYOUT的效果。
不过使用DOCKING就不同了,重复的实例化DOCKING会造成巨大的负面效果。
就像这样:
可以看到每一次PBO事件都会生成一个DOCKING
当然,解决的办法也很简单,这种情况下只需要做个判断就可以了
·
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE TREE_AND_DOCKING.
MODULE SCREEN_SETTING_0100.
PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.
*&---------------------------------------------------------------------*
*& Module TREE_AND_DOCKING OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE TREE_AND_DOCKING OUTPUT.
CHECK CONTROLS_CREATED1 IS INITIAL. ”判断是否是首次进入PBO事件
* docking control
PERFORM CREATEDOCKINGCONTROL.
* tree control
PERFORM CREATETREECONTROL.
CONTROLS_CREATED1 = ‘X’.
ENDMODULE.