На этапе создания экземпляра объекта (фабричным методом) мы определяем, как мы хотим использовать объект ALV таблицы, будет ли это полноэкранный режим, либо мы хотим поместить объект в подготовленный заранее контейнер. Данный выбор влияет на способ установки GUI статуса для ALV таблицы.
Рубрика: Основы ABAP
Введение в основные понятия необходимые для понимания процессов разработки на языке ABAP
SALV Table — Введение
Начиная с версии Netweaver 04 SAP предоставляет разработчикам новую модель для построения ALV таблиц. Новая модель описывается классами семейства CL_SALV*.
Шаблон прокси
Шаблон Proxy (определяет объект-заместитель англ. surrogate иначе -заменитель англ. placeholder) — шаблон проектирования, который предоставляет объект, который контролирует доступ к другому объекту, перехватывая все вызовы (выполняет функцию контейнера).
Не очевидная особенность расширения таблиц в Oracle
Когда таблица расширяется (например предусмотренной для расширения структурой — для стандартных таблиц или новым полем для своих), если база управляется СУБД Oracle (в других не проверял), в том случае если в таблице уже существовали записи, новые поля не устанавливаются в Initial значения по этим записям. Таким образом следующий запрос не вернет результатов:
1 |
SELECT ... FROM Таблица WHERE ДобавленноеПоле = ''. |
По умолчанию Oracle ставит данное поле в NULL значение (для всех старых записей в таблице), NULL — означает что данному полю никогда не присваивалось значение. Для обхода этой ситуации необходимо либо проверять поле на NULL
1 |
... WHERE ( ДобавленноеПоле = '' OR ДобавленноеПоле IS NULL ) |
либо поставить галочку напротив «НачЗнач» в определении структуры (при активации таблицы значения всех старых записей по новым полям будут перезаписаны в Initial (значения по умолчанию).
Вывод Enjoy элементов во write отчётах
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 27 28 29 30 31 32 33 34 35 36 37 38 39 |
REPORT zwrite_container NO STANDARD PAGE HEADING. DATA: go_container TYPE REF TO cl_gui_custom_container, gt_data TYPE spfli_tab, go_alv TYPE REF TO cl_salv_table. LOAD-OF-PROGRAM. START-OF-SELECTION. SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_data. WRITE: / 'Тест вывода в GUI контейнер во WRITE отчёте'. SKIP 20. CREATE OBJECT go_container EXPORTING container_name = '' repid = 'SAPMSSY0' dynnr = '0120'. go_container->set_top( 10 ). go_container->set_left( 10 ). go_container->set_width( 980 ). go_container->set_height( 120 ). TRY. cl_salv_table=>factory( EXPORTING r_container = go_container IMPORTING r_salv_table = go_alv CHANGING t_table = gt_data ). CATCH cx_salv_msg . MESSAGE 'Ошибка при создании ALV' TYPE 'E'. ENDTRY. go_alv->display( ). WRITE 'Вывод после ALV'. |
Работа с кодировками
SAP предоставляет разработчикам возможность преобразовывать наборы символов из одной кодовой страницы в другую, из внутреннего представления SAP системы в необходимую кодировку. Кодовая страница представлена четырехзначным номером. Для того чтобы получить описание по номеру кодовой страницы можно воспользоваться ФМ: SCP_CODEPAGE_BY_EXTERNAL_NAME или посмотреть содержимое таблицы TCP00A. Для того чтобы получить кодовую страницу используемую на сервере приложений в настоящий момент, можно воспользоваться статическим методом GET_APPSERVER_CODEPAGE из класса CL_ABAP_CONV_UC_NUMBER.Читать далее
Паттерны ООП в метафорах
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Просмотр файла в шестнадцатеричном виде
Ниже пример того как можно посмотреть шестнадцатеричное представление файла с помощью текстового редактора реализованного через класс cl_gui_textedit. Обратите внимание что в качестве контейнера для редактора служит экран выбора программы, а ссылку на него можно получить через статическую переменную screen0 класса cl_gui_container.Читать далее
Глобальные макросы
Для определения глобальных макросов, доступных во всех программах создана таблица TRMAC. Ее структура и порядок добавления описаны ниже
Шаблон компоновщик
Компоновщик (англ. Composite pattern) — шаблон проектирования, относится к структурным паттернам, объединяет объекты в древовидную структуру для представления иерархии от частного к целому. Компоновщик позволяет клиентам обращаться к отдельным объектам и к группам объектов одинаково.