1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
DATA: ls_header TYPE header_fb, lt_import TYPE rsfb_para. ls_header-name = 'BAL_LOG_MSG_ADD'. cl_fb_parameter_db=>read( IMPORTING import = lt_import CHANGING header = ls_header EXCEPTIONS cancelled = 1 OTHERS = 2 ). |
6 способов найти место вызова сообщений
Задачу определения места в программе, из которого было вызвано сообщение, можно решить несколькими способами. Ниже будут рассмотрены основные из них.
Поиск транзакции к ракурсу ведения
Концепция блокировок в SAP
Если несколько программ конкурируют за доступ к одним и тем же данным, Вам необходимо обеспечить синхронизацию обращения к этим данным чтобы они оставались корректными и работа логики приложений не была нарушена.
К примеру, если в системе резервирования билетов необходимо оформить билет на рейс, необходимо защитить данные в таблице хранящей записи о рейсах, чтобы во время оформления другая программа не успела зарезервировать место раньше.
Подсветка синтаксиса ABAP для Notepad++
Скачать можно по ссылке.
Установка: Синтаксис -> Задать свой язык -> Импортировать -> Выбрать Xml файл из архива.
Под наблюдением
Все разработчики когда-либо сталкивались с необходимостью поменять значение какой-либо переменной в отладчике, но мало кто знает, что подобные действия попадают в системный журнал, доступ к которому можно получить через транзакцию SM21.
В тестовой программе изменили значение переменной на новое — 999:
Результат, который будет отражен в журнале (в подробной информации можно увидеть имя терминала, с которого это совершалось):
Так же в журнал попадает трюк с переходом по коду в отладчике через SHIFT+F12:
Чтение подробного текста из класса сообщений
Пример использования ФМ, который позволяет считывать подробные тексты из класса сообщений (транзакция SE91):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
DATA: lt_lines TYPE STANDARD TABLE OF tline. CALL FUNCTION 'DOCU_GET' EXPORTING id = 'NA' object = 'ZTEST001' typ = '' langu = sy-langu TABLES line = lt_lines EXCEPTIONS no_docu_on_screen = 1 no_docu_self_def = 2 no_docu_temp = 3 ret_code = 4 OTHERS = 5. BREAK-POINT. |
Результат:
Альтернативный способ, с возможностью передачи параметров:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
DATA: go_t100_message TYPE REF TO CL_T100_MESSAGE, gt_parameters TYPE NAME2VALUE_TABLE, gv_text TYPE string. FIELD-SYMBOLS: <fs_parameter> TYPE NAME2VALUE. APPEND INITIAL LINE TO gt_parameters ASSIGNING <fs_parameter>. <fs_parameter>-name = '1'. <fs_parameter>-value = 'Значение'. CREATE OBJECT go_t100_message EXPORTING the_msg_class = 'ZTEST' the_msg_number = '001'. go_t100_message->set_substitution_table( gt_parameters ). gv_text = go_t100_message->get_longtext( ). |
Параметры, в подробном тексте, указываются следующим образом (а параметры передаваемые через оператор MESSAGE: &V1& — &V4&):
Файловый интерфейс — операции с файлами
Поскольку содержимое файлов отражает структуру данных, обрабатываемую в памяти, файловый интерфейс в юникодных системах должен позволять следующее:
- Должна быть возможность обмена данными между юникодными и не юникодными системами (т.к. отображение данных в памяти отличается);
- Должна быть возможность обмена данными между различными юникодными системами;
- Должна быть возможность обмена данными между разными не юникодными системами, в которых используются различные кодировки.
Файловый интерфейс ABAP – контроль доступа и блокировки
При работе с файлами, на стороне сервера приложений, срабатывает множество неявных проверок на полномочия:
- Проверка со стороны ОС
- Проверка на обработку директорий
- Проверка на обработку файлов
- Прочие системные проверки
Далее более подробно о каждой из них.