Разделение экранов с помощью ALV Grid и Tabstrip control - PullRequest
0 голосов
/ 28 ноября 2018

Я хотел бы спросить о правильном способе разделения следующих экранов в ALV:

  1. 1-й экран с типом CL_GUI_ALV_GRID
  2. 2-й экран является подэкраном с управлением вкладкой полосы

При использовании Docker возникают проблемы с изменением размера экрана во время выполнения.Я не могу предоставить соотношение для обоих экранов.Есть ли способ использовать CL_GUI_SPLITTER_CONTAINER также для экрана с управлением вкладками?

Спасибо!

1 Ответ

0 голосов
/ 29 ноября 2018

Следующий код реагирует на изменение высоты окна.Он не реагирует на ширину окна, это ограничение Dynpro, поэтому большую часть времени он будет реагировать на сворачивание и восстановление кнопок Windows, если только окно не является точной половиной левого или половинного правого угла монитора (комбинированные клавиши Windows + Left иWindows + Right).SY-SCOLS и SY-SROWS - единственный известный мне способ получения размера окна при отображении экрана dynpro, но, возможно, существуют и другие способы.

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