Зачастую программисту проще создать новый элемент данных, структуру или тип диапазона данных, чем найти уже существующий объект. Это связано с отсутствием удобного инструмента поиска объектов в ABAP-словаре. В связи с этим, в разработках образуется избыточное количество словарных объектов, дублирующие друг друга. Для сокращения времени поиска нужных объектов, представляю вам свою утилиту.
Древовидное представления данных на примерах
Ниже представлены различные варианты реализации древовидного представления данных.
Архитектурные шаблоны в ABAP: MVC, MVP, MVVM, MVA
MVC (Model-View-Controller) — фундаментальный шаблон проектирования, целью которого является отделение логики интерфейса пользователя от логики программирования. MVC имеет множество вариантов реализации. Существуют модификации шаблона, самые известные из них MVP и MVVM.
Ниже описана концепция архитектурного шаблона MVC и его модификаций MVP и MVVM. Приведена концепция шаблона MVA, основанная на паттернах MVC, MVP и MVVM и адаптирована под язык ABAP. Читать дальше…
Определение имени поля по его значению
В функциях (пригодных для повторного применения) анализа и обработки данных во внутренних таблиц необходимо знать лишь часть данных о таблицах: саму таблицу и имена тех полей, которые нужно обрабатывать. Возникает вопросы: «Каким должен быть интерфейс функции?» и «Как типизировать параметры?». Интерфейсы для внутренних таблиц еще не изобрели, поэтому в параметрах функции должна передаваться обрабатываемая таблица и названия полей для обработки.
Передача имена полей через параметры через параметры накладывает ряд ограничений. Любые действия с изменением структуры (переименование или удаление полей) будет требовать особой осторожности, так как в журнале использования поля отображаться не будут. Эта задача является примером, когда требуется определить названия поля структуры.
В общем случае постановка задачи звучит следующим образом: имеется структура LS_STRUCT. Требуется написать функцию, которая по значению поля будет возвращать его имя. То есть, при LS_STRUCT-SOME_FIELD вернет строку с содержимым SOME_FIELD.
Читать дальше…
Чтение текстов
Для чтения текстов из ABAP используется функциональный модуль READ_TEXT. Ниже представлен пример чтения текста заголовка FI документа.
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 |
DATA ls_bkpf TYPE bkpf. DATA lv_name TYPE thead-tdname. DATA lt_lines TYPE TABLE OF tline. DATA lv_string TYPE string. ... CONCATENATE ls_bkpf-bukrs ls_bkpf-belnr ls_bkpf-gjahr INTO lv_name RESPECTING BLANKS. CALL FUNCTION 'READ_TEXT' EXPORTING id = '0001' language = sy-langu name = lv_name object = 'BELEG' TABLES lines = lt_lines EXCEPTIONS id = 1 language = 2 name = 3 not_found = 4 object = 5 reference_check = 6 wrong_access_to_archive = 7 OTHERS = 8. IF sy-subrc EQ 0. CALL FUNCTION 'IDMX_DI_TLINE_INTO_STRING' EXPORTING it_tline = lt_lines IMPORTING ev_text_string = lv_string. WRITE / lv_string. ELSE. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. |
Выбор данных ALV в POPUP окне
Возникают задачи, когда пользователю необходимо отобразить ALV таблицу с возможностью выбора одной или нескольких строк. Данную задачу можно решить используя класс CL_RECA_GUI_F4_POPUP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
DATA lo_f4 TYPE REF TO cl_reca_gui_f4_popup. DATA lt_alv TYPE TABLE OF scarr. DATA lt_sel TYPE TABLE OF scarr. DATA ls_row TYPE scarr. SELECT * INTO TABLE lt_alv FROM scarr. lo_f4 = cl_reca_gui_f4_popup=>factory_grid( lt_alv ). lo_f4->set_title( 'Выбор авиакомпании' ). lo_f4->display( IMPORTING et_result = lt_sel ). LOOP AT lt_sel INTO ls_row. WRITE / ls_row. ENDLOOP. IF sy-subrc NE 0. WRITE / 'Ничего не выбрано'. ENDIF. |
Срытие и отображение фреймов на селекционном экране
Возникают задачи, когда по определенному событию требуется скрыть или отобразить определенные блоки параметров на селекционном экране. Например, при нажатии на Check-Box или Radio-Button требуется отобразить фреймы с дополнительной информацией. Ниже описан способ как можно проводить манипуляции с целыми блоками без привязки к именам параметров. Читать дальше…
RFC модули и параллельная обработка
RFC (Remote Function Call) — протокол обмена данными между системами (подробно о SAP RFC написано в курсе BC415). RFC применяются для интеграции SAP и не SAP систем, обработки данных в новой сессии, параллельной обработки данных и т.п.
Классификация RFC
- Синхронный RFC или sRFC. Определяется с помощью дополнения DESTINATION. При вызове sRFC рабочий процесс приостанавливает свою работу пока вызываемый sRFC модуль не завершит свою работу. Вызов sRFC выполняется в отдельном DB LUW. При вызове sRFC в основном процессе происходит неявный COMMIT.
- Асинхронные RFC – определяются с помощью дополнения STARTING NEW TASK. К ним относятся асинхронные (aRFC) и параллельные (pRFC) RFC вызовы. При асинхронном вызове, вызываемый модуль запускается в новом процессе и работает параллельно с основным рабочим процессом. Результат выполнения ФМ можно получить в функции обратной связи. Вызовы aRFC и pRFC выполняются в отдельных DB LUW.
- Фоновые RFC – определяются с помощью дополнения IN BACKGROUND. К ним относятся транзакционные (tRFC), очередные (qRFC) и фоновые (bgRFC) RFC вызовы. ФМ работают независимо от основного процесса и начинают выполнение после команды COMMIT WORK. На все фоновые RFC создается один DB LUW. Результат фонового RFC нельзя передать в основной процесс.
Подсветка синтаксиса ABAP в Notepad++
В стандартном наборе поддерживаемых языков программирования в Notepad++ нет ABAP. Её можно настроить самостоятельно.
1. Скачиваем XML-файл
2. Синтаксис -> Задать свой синтаксис -> Импортировать
Форматирование ABAP кода
Большинство компаний имеют внутренний регламент форматирования ABAP кода. Не смотря на наличие регламента, оформление кода может сильно отличаться даже в приделах одной программы. Это связано со следующими фактами: многие программы разрабатывались до принятия регламентов; регламентируют в основном только наименования переменных и программных объектов.
Одни из самых сложных конструкций в ABAP — это SELECT и READ TABLE. Ниже предложены правила форматирования данных конструкций, а также средство автоматизированного форматирования для уже имеющегося кода.