Зачастую программисту проще создать новый элемент данных, структуру или тип диапазона данных, чем найти уже существующий объект. Это связано с отсутствием удобного инструмента поиска объектов в ABAP-словаре. В связи с этим, в разработках образуется избыточное количество словарных объектов, дублирующие друг друга. Для сокращения времени поиска нужных объектов, представляю вам свою утилиту.
Древовидное представления данных на примерах
Ниже представлены различные варианты реализации древовидного представления данных.
Чтение текстов
Для чтения текстов из 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. Синтаксис -> Задать свой синтаксис -> Импортировать
Конфигурация SELECT-OPTIONS
Функциональный модуль SELECT_OPTIONS_RESTRICT позволяет настраивать параметры типа SELECT-OPTIONS на экране выбора, ограничивая параметры SIGN и OPTION.
Например, можно ограничить выбор счёта, допустив указание фиксированного значения либо по маске.
![]() |
![]() |
Автоматический пересчет данных в разрезе выбранных полей ALV Grid
ALV Grid позволяет пользователю отображать отчет в желаемом виде. Пользователю доступны такие операции как: отображение или скрытие указанных полей, изменение порядка вывода столбцов. Зачастую, при изменении списка отображаемых полей, заказчик хочет видеть пересчет данных в разрезе отображаемых столбцов. Ниже описан способ автоматического пересчета данных в таблице, на основе каталога полей ALV Grid.
Читать дальше…
Получение доступа к таблице с данными в ALV Grid
Иногда возникает необходимость необходимость получить доступ к таблице с данными в ALV Grid (класс CL_GUI_ALV_GRID). Ссылка на таблицу с данными лежит в атрибуте MT_OUTTAB. Спецификатор доступа Protected запрещает использование данного атрибута за пределами класса, но разрешает его использование потомкам. Чтобы получить значение данного атрибута, необходимо создать вспомогательный класс, наследованный от CL_GUI_ALV_GRID, и определить в нем статичный метод, извлекающий необходимые данные.
Читать дальше…