Попробуйте использовать контейнер класса CL_GUI_SPLITTER_CONTAINER.
В нижеописанном примере изменение производится только по вертикале. Для того чтобы динамически изменялся размер по горизонтали необходимо определить 2 колонки в GO_SPLITTERBOX2.
Code:
* ОБЪЯВЛЕНИЯ ДЛЯ GRID
DATA: GO_GRID1 TYPE REF TO CL_GUI_ALV_GRID,
GO_DOCKINGBOX1 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
GO_DOCKINGBOX2 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
GO_SPLITTERBOX1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
GO_SPLITTERBOX2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
GO_CONTAINERBOX1 TYPE REF TO CL_GUI_CONTAINER,
GO_CONTAINERBOX2 TYPE REF TO CL_GUI_CONTAINER,
GO_TOP_TEXT TYPE REF TO CL_DD_DOCUMENT,
Code:
*-------------------------------------------------------------------------
* MODULE : PBO_1001
* DESCRIPTION : МОДУЛЬ PBO ЭКРАНА 1001
*-------------------------------------------------------------------------
MODULE PBO_1001 OUTPUT.
PERFORM SET_BUTTON_STATU CHANGING GT_FCODE.
SET PF-STATUS 'GUI_ALV' EXCLUDING GT_FCODE.
IF GV_CREATE_GRID1 = 'X'.
DATA LV_POS TYPE I.
* ОПРЕДЕЛЯЕМ ВЕРХНЮЮ ЧАСТЬ ЭКРАНА
* ВЫЧИСЛЯЕМ ПАРАМЕТР EXTENSION (КОЛ-ВО СТРОК НА ЭКРАНЕ * ПРОЦЕНТ ОТ ПОЛНОГО ЭКРАНА * ПОПРАВОЧНЫЙ КОЭФФИЦИЕНТ) / 100
LV_POS = ( SY-SROWS * 20 * 13 ) / 100.
CREATE OBJECT GO_DOCKINGBOX1
EXPORTING REPID = SY-REPID
DYNNR = '1001'
EXTENSION = LV_POS "50
SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_TOP.
* EXTENSION = CL_GUI_DOCKING_CONTAINER=>WS_MAXIMIZEBOX.
CREATE OBJECT GO_SPLITTERBOX1
EXPORTING PARENT = GO_DOCKINGBOX1
LINK_REPID = SY-REPID
LINK_DYNNR = '1001'
ROWS = 1
COLUMNS = 1.
GO_SPLITTERBOX1->GET_CONTAINER( EXPORTING ROW = 1 COLUMN = 1 RECEIVING CONTAINER = GO_CONTAINERBOX1 ).
* ОПРЕДЕЛЯЕМ НИЖНЮЮ ЧАСТЬ ЭКРАНА
LV_POS = ( SY-SROWS * 80 * 13 ) / 100.
CREATE OBJECT GO_DOCKINGBOX2
EXPORTING REPID = SY-REPID
DYNNR = '1001'
EXTENSION = LV_POS "250
SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_TOP.
CREATE OBJECT GO_SPLITTERBOX2
EXPORTING PARENT = GO_DOCKINGBOX2
LINK_REPID = SY-REPID
LINK_DYNNR = '1001'
ROWS = 1
COLUMNS = 1.
* ОПРЕДЕЛЯЕМ НИЖНИЙ КОНТЕЙНЕР
GO_SPLITTERBOX2->GET_CONTAINER( EXPORTING ROW = 1 COLUMN = 1 RECEIVING CONTAINER = GO_CONTAINERBOX2 ).
* СОЗДАЕМ ОБЪЕКТ GRID
CREATE OBJECT GO_GRID1
EXPORTING I_PARENT = GO_CONTAINERBOX2 " РОДИТЕЛЬ
I_APPL_EVENTS = 'X'. " ОБРАБАТЫВАТЬ ВСЕ СОБЫТИЯ
PERFORM CREATE_GRID1 USING GT_FORM CHANGING GV_ER.
* СОЗДАЕМ И УСТАНАВЛИВАЕМ ТЕКСТ
CREATE OBJECT GO_TOP_TEXT EXPORTING STYLE = 'ALV_GRID'.
PERFORM SET_TOP_TEXT USING GO_TOP_TEXT GO_CONTAINERBOX1.
GV_CREATE_GRID1 = ''.
ENDIF.
ENDMODULE.