有时候实现更加复杂的屏幕设计时,需要用到很多子屏幕和CONTAINER来实更丰富的功能,假如屏幕有多
个子屏幕,子屏幕上有多个CONTAINER的时候,在某种情况下,如果想知道,用户操作的事件来自哪个子屏幕
号,便可以从事件源来找其所在子屏幕,得到它的屏幕号,同时也可以CONTAINER的名字,这个问题折腾了我
很多时间,也请教过别人,最终还是没得到想要的答案,今天总结一下,就拿OO ALV来说明一下如何取到子屏
幕号。
(1) 首先, 在创建GRID的时候可以先用其SET_NAME的方法把屏幕号保存起来
......
" "保存屏幕号到GRID的NAME中
DATA: FRM_DYNNR TYPE STRING.
FRM_DYNNR = SY-DYNNR.
CALL METHOD P_GRID->SET_NAME
EXPORTING
NAME = FRM_DYNNR
EXCEPTIONS
CNTL_ERROR = 1
PARENT_NO_NAME = 2
ILLEGAL_NAME = 3
OTHERS = 4.
......
(2) 在需要获取屏幕号号的地方加入以下代码
"获得事件对象
DATA: FRM_EVENT TYPE REF TO CL_GUI_EVENT.
CALL METHOD CL_GUI_CFW=>GE