В предыдущей статье были рассмотрены основы работы с динамическими документами, в этой части я рассмотрю работу с таблицами и формами.
Добавление таблиц
Для добавления таблиц в DD необходимо воспользоваться методом add_table.
1 2 3 4 5 6 7 8 9 10 |
dd_document->add_table( EXPORTING no_of_columns = 3 with_heading = 'X' cell_background_transparent = 'X' border = '1' WIDTH = '100%' IMPORTING TABLE = TABLE tablearea = tablearea ). |
Параметр | Необ. | Описание |
no_of_columns | Количество столбцов в таблице | |
with_heading | X | Если Х – будет отображен заголовок таблицы |
cell_background_transparent | X | Если Х – фон ячеек таблицы прозрачный |
border | X | Если ‘’ – рамку не выводить |
width | X | Размер в html формате (100px, 100%..) |
table | X | Возвращает класс инкапсулирующий таблицу — cl_dd_table_element |
tablearea | X | Возвращает класс инкапсулирующий таблицу – cl_dd_table_area. Различия с предыдущим в том, что данный класс более упрощает работу с таблицей. См. пример. |
Пример создания стандартной DD таблицы:
1 2 3 4 5 6 7 8 9 |
.... dd_document->add_table( EXPORTING no_of_columns = 2 WIDTH = '100%' IMPORTING TABLE = TABLE ). table->add_column( EXPORTING WIDTH = '50%' IMPORTING COLUMN = column1 ). table->add_column( EXPORTING WIDTH = '50%' IMPORTING COLUMN = column2 ). column1->add_text( text = 'Ячейка 1' ). column2->add_text( text = 'Ячейка 2' ). table->new_row( ). column1->add_text( text = 'Ячейка 3' ). column2->add_text( text = 'Ячейка 4' ). |
Пример упрощённой работы с DD таблицей:
1 2 3 4 5 6 7 |
dd_document->add_table( EXPORTING no_of_columns = 2 WIDTH = '100%' IMPORTING tablearea = table_area ). table_area->add_text( text = 'Ячейка 1' ). table_area->add_text( text = 'Ячейка 2' ). table_area->new_row( ). table_area->add_text( text = 'Ячейка 3' ). table_area->add_text( text = 'Ячейка 4' ). table_area->new_row( ). |
Работа с формами
Формы DD позволяют размещать на них такие элементы как: поля ввода — cl_dd_input_element, списки – cl_dd_select_element, кнопки – cl_dd_button_element.
Пример создания формы и кнопки на ней:
1 2 3 4 5 |
DATA: lo_btn TYPE REF TO cl_dd_button_element, lo_form TYPE REF TO cl_dd_form_area. ... dd_document->add_form( IMPORTING formarea = lo_form ). lo_form->add_button( EXPORTING sap_icon = 'ICON_EXECUTE_OBJECT' NAME = 'BUT1' IMPORTING button = lo_btn ). |
Элементы формы имеют свои события, на которые можно повесить обработчики. Например, у кнопки событие щелчка – CLICKED, для поля ввода можно обработать события нажатия на F1,F4 и т.д. Самый частый пример формы DD который вы видите это выбор типа объекта в SE80.