Динамические документы являются логическим приемником стандартного в R/3 вывода списков. Они отображаются в виде HTML – документов, обеспечивают поддержку вывода различных графических элементов. Используя классы DD, вы тем самым генерируете HTML код, который будет отображен в ходе выполнения программы. Вам не обязательно знать HTML. Общая схема форматирования гарантирует, что документы во всей системе будут отображены однотипно. Цветовые схемы автоматически добавляются в зависимости от цветов настроенных в GUI.
Интеграция
DD отображаются в R3, используя SAP Control Framework и SAP HTML Viewer. Вы можете отобразить их на любом контейнере: в определенной области экрана, в диалоговом режиме. Справка SAP.
Возможности.
DD поддерживают обработку следующих элементов:
- Тексты
- Ссылки
- Кнопки
- Поля ввода
- Выпадающие списки
- Иконки
- Картинки
- Таблицы
Примеры программ по работе с DD лежат в пакете SDYNAMICDOCUMENTS.
Динамичный документ представлен экземпляр класса cl_dd_document. Вы можете использовать его методы для добавления элементов в документе.
В документе, вы можете создавать формы и таблицы. Формы позволяют включать поля ввода, кнопки, выпадающие списки. Таблицы обеспечивают простой способ отображения данных в структурированном виде.
Прежде чем приступать к созданию DD, убедитесь, что вы знаете основы ABAP Objects и SAP Control Framework.
И так для отображения документа необходимо:
- Создать экран и область на экране для вывода контейнера.
- Создать инстанцию DD определив для него контейнер.
- Создать элементы DD.
Пример простой программы для вывода бегущей строки (100 экран с контейнером HTML, статус PFMAIN с определенными для выхода командами):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
DATA: ok_code TYPE sy-ucomm, go_document TYPE REF TO cl_dd_document. START-OF-SELECTION. CALL SCREEN 100. MODULE pbo OUTPUT. SET PF-STATUS 'PFMAIN'. IF go_document IS NOT BOUND. CREATE OBJECT go_document. go_document->add_static_html( EXPORTING string_with_html = '<body marginheight="0" topmargin="0" borders = "0">' ). go_document->add_static_html( EXPORTING string_with_html = '<marquee>бегущая строка с какой-нибудь фигней</marquee>' ). go_document->display_document( EXPORTING container = 'HTML' ). ENDIF. ENDMODULE. " PBO OUTPUT MODULE pai INPUT. CASE ok_code. WHEN 'EXIT' OR 'BACK'. LEAVE PROGRAM. ENDCASE. ENDMODULE. " PAI INPUT |
Добавление текста
1 2 3 4 5 6 7 8 9 |
go_document->add_text( EXPORTING text = text text_table = text_table fix_lines = fix_lines sap_style = sap_style sap_color = sap_color sap_fontsize = sap_fontsize sap_emphasis = sap_emphasis ). |
Параметр и его тип | Необ. | Описание |
text TYPE SDYDO_TEXT_ ELEMENT |
X | Текст длинной до 255 символов |
text_table TYPE SDYDO_TEXT_ TABLE |
X | Внутренняя таблица с текстами |
fix_lines TYPE SDYDO_FLAG |
X | Индикатор задает, как должна отображаться таблица
|
sap_style TYPE SDYDO_ATTRIBUTE |
X | Стиль вывода текста, может принимать значения: HEADING, KEY SUCCESS, WARNING, TABLE_HEADING |
sap_color TYPE SDYDO_ATTRIBUTE |
X | Цвет вывода: LIST_BACKGROUNDLIST_BACKGROUND_INTLIST_BACKGROUND_INVLIST_GROUPLIST_GROUP_INT
LIST_GROUP_INV LIST_HEADING LIST_HEADING_INT LIST_HEADING_INV LIST_KEY LIST_KEY_INT LIST_KEY_INV LIST_NEGATIVE LIST_NEGATIVE_INT LIST_NEGATIVE_INV LIST_NORMAL LIST_NORMAL_INT LIST_POSITIVE LIST_POSITIVE_INT LIST_POSITIVE_INV LIST_TOTAL LIST_TOTAL_INT LIST_TOTAL_INV |
sap_fontsize TYPE SDYDO_ATTRIBUTE |
X | Размер шрифта. Возможные значения:
|
sap_emphasis TYPE SDYDO_ATTRIBUTE |
X | Выделение текста
|
sap_fontstyle TYPE SDYDO_ATTRIBUTE |
X | SERIF, SANS_SERIF, STANDARD |
Добавление ссылок
Ссылки добавляются в документ с помощью метода add_link. Вы можете определить одно из трех поведений для ссылок: 1. Ссылка на внешний адрес (например: интернет страницу) 2. Ссылка на закладку внутри документа. 3. Ссылку, не имеющую адреса, для навешивания на нее определенного события программно.
Параметр и его тип | Необ. | Описание |
name TYPE SDYDO_ ELEMENT_NAME |
X | Имя ссылки |
URL TYPE STRING |
X | Внешний URL адрес |
Tooltip TYPE STRING |
X | Всплывающая подсказка к ссылке |
text TYPE SDYDO_TEXT_ ELEMENT |
X | Текст ссылки в документе |
destination_in_doc_set TYPE STRING |
X | Определяет закладку на которую будет ссылаться ссылка |
destination_in_doc_pos TYPE STRING |
X | Имя для создания новой закладки |
link TYPE REF TO CL_DD_LINK_ ELEMENT |
Возвращает инстанцию объекта инкапсулирующего ссылку. Необходимо для установки обработчиков событий. См. пример ниже. |
Для того чтобы установить ссылку на закладку в документе необходимо вызвать параметр с заполненным полем destination_in_doc_set. Для создания новой закладки необходимо вызвать метод с заполненным параметром destination_in_doc_pos.
Пример части программы, добавляющей ссылку в документ и обработки ее щелчка.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
CLASS lcl_event_handler DEFINITION. PUBLIC SECTION. METHODS: clicked FOR EVENT CLICKED OF CL_DD_LINK_ELEMENT. ENDCLASS. CLASS lcl_event_handler IMPLEMENTATION. METHOD clicked. MESSAGE 'Clicked' TYPE 'S'. ENDMETHOD. ENDCLASS. DATA: go_handler TYPE REF TO lcl_event_handler, go_link TYPE REF TO CL_DD_LINK_ELEMENT. MODULE pbo OUTPUT. SET PF-STATUS 'PFMAIN'. IF go_document IS NOT BOUND. CREATE OBJECT go_document. CREATE OBJECT go_handler. go_document->add_link( EXPORTING text = 'Ссылка' IMPORTING link = go_link ). SET HANDLER go_handler->clicked FOR go_link. go_document->display_document( EXPORTING container = 'HTML' ). ENDIF. ENDMODULE. " PBO OUTPUT |
Добавление иконок
Для добавления иконок в DD служит метод add_icon. Описание его параметров:
Параметр и его тип | Необ. | Описание |
sap_icon TYPE ICONNAME |
Имя иконки, зачем то в текстовом формате не совместимом с пулом типов <icon>. | |
sap_size TYPE SDYDO_ATTRIBUTE |
X | Размер иконки: LARGE (20х20), EXTRALARGE (30×30) |
sap_style TYPE SDYDO_ATTRIBUTE |
X | См. описание выше |
sap_color TYPE SDYDO_ATTRIBUTE |
X | См. описание выше |
alternative_text TYPE STRING |
X | Подсказка к иконке |
Добавление картинок
Картинки добавляются с помощью метода add_picture. Основной параметр picture_id – ключ бизнес документа с типом OT и классом PICTURES см. тр. OAOR.
Дополнительные методы работы с документом:
Вставка пустых строк:
1 |
go_document->NEW_LINE( REPEAT = 2 ). "Где repeat – количество пустых строк. |
Подчёркивание:
1 |
go_document->UNDERLINE( ). |
Для того чтобы все вновь добавляемые в документ элементы находились в одной линии, необходимо перед их добавлением вызвать метод:
1 |
go_document->line_with_layout( START = 'X' ). |
После их добавления:
1 |
go_document->line_with_layout( END = 'X' ). |
Пропуск позиций в документе, добавить пробелы:
go_document->add_gap( WIDTH = 10 width_like = ‘____’ ). Где width – длинна в пикселях, width_like – задает вместо пробела другой шаблон, т.е. вместо длинны пробела, будет использована длинна заданного символа (набора символов).
Добавление HTML кода к документу, хоть и написано что для внутреннего использования, но применять можно:
1 |
go_document->add_static_html( string_with_html = '<p>Тест</p>' ). |
Где table_with_html – таблица с HTML кодом, string_with_html – строка с html кодом. HTML_FROM_DYNAMIC_DOCUMENT — означает, что html код из table_with_html получен из другого дд. bds_pictures – таблица с BDS изображениями (см. описание add_picture).
1 комментарий