带Alv Grid和Tab条带控件的分屏

时间:2018-11-28 11:59:52

标签: grid sap abap alv

我想问一下在ALV中分割以下屏幕的正确方法:

  1. 第一个类型为CL_GUI_ALV_GRID的屏幕
  2. 第二个屏幕是带有选项卡条控制的子屏幕

使用docker在运行时调整屏幕大小存在问题。我无法提供两个屏幕的比例。 有没有办法在带有标签条控件的屏幕上也使用CL_GUI_SPLITTER_CONTAINER?

谢谢!

1 个答案:

答案 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.