我想问一下在ALV中分割以下屏幕的正确方法:
使用docker在运行时调整屏幕大小存在问题。我无法提供两个屏幕的比例。 有没有办法在带有标签条控件的屏幕上也使用CL_GUI_SPLITTER_CONTAINER?
谢谢!
答案 0 :(得分:2)
以下代码对窗口高度的变化作出反应。它不会对窗口宽度做出反应,这是Dynpro的限制,因此,大多数情况下,它将对Windows按钮的最小化和还原做出反应,除非窗口恰好在显示器的左半边或右半边(组合键Windows + Left和Windows +右)。当显示dynpro屏幕时,我知道SY-SCOLS和SY-SROWS是获取窗口大小的唯一方法,但是可能还有其他方法。
DATA go_docking TYPE REF TO cl_gui_docking_container.
DATA ok_code TYPE syucomm.
DATA ratio TYPE i VALUE 70.
DATA pixels_by_sy_scol TYPE p DECIMALS 2.
CALL SCREEN 100.
MODULE pbo OUTPUT.
IF go_docking IS INITIAL.
CREATE OBJECT go_docking
EXPORTING
repid = sy-repid
dynnr = sy-dynnr
side = cl_gui_docking_container=>dock_at_left
ratio = ratio.
go_docking->get_extension( IMPORTING extension = DATA(extension) ).
cl_gui_cfw=>flush( ). " to calculate the extension (by default in pixels)
pixels_by_sy_scol = extension * 100 / ratio / sy-scols.
ELSE.
go_docking->set_extension( sy-scols * pixels_by_sy_scol * ratio / 100 ).
ENDIF.
ENDMODULE.