Business Application Log (BAL) позволяет сохранять не только короткие сообщения, но и сообщения произвольной длины. Рассмотрим на примере сохранения информации об авиакомпании.
Создание сообщения
1. Открываем se91 и создаем сообщение как обычно;
2. Возможно, вам хватит обычного подробного описания, как в некоторых видах ошибок. В таком случае снимаем галку "Самообъясняемый" и нажимаем кнопку "Подробный текст";

В открывшемся окне вводим подробный текст.

Теперь при выводе сообщения или в будущем логе можно увидеть данный текст в подобном виде:


3. Подготовим шаблон для длинного текста. Переходим в транзакцию se61 Ведение документов. И выбираем тип документа DT - "Текст в диалоге"

4. Создаем шаблон со своим форматированием и метками для вставки текста:

Создание объектов лога
Если вам необходим новый лог, например, для теста, его можно создать при помощи настроек в транзакции SLG0.
Открываем транзакцию SLG0 Осуществляем ведение объекта и подобъекта. У одного объекта может быть несколько подобъектов. Например: HCM->[OM, PA, ...]


Теперь мы можем использовать эти параметры при инициализации лога.
Код
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
DATA ls_msglog TYPE bal_s_msg. DATA ls_log TYPE bal_s_log. DATA lv_handle TYPE balloghndl. ls_log-object = 'Z_TEST_LOG'. ls_log-subobject = 'AIR_COMP'. ls_log-aldate = sy-datum. ls_log-altime = sy-uzeit. ls_log-aluser = sy-uname. ls_log-altcode = sy-tcode. ls_log-alprog = sy-repid. *создание объекта лога CALL FUNCTION 'BAL_LOG_CREATE' EXPORTING i_s_log = ls_log IMPORTING e_log_handle = lv_handle EXCEPTIONS OTHERS = 1. MESSAGE i001(zvvy_test) WITH 'Continental Airlines' '0017' INTO DATA(lv_dummy). ls_msglog-msgty = sy-msgty. ls_msglog-msgid = sy-msgid. ls_msglog-msgno = sy-msgno. ls_msglog-msgv1 = sy-msgv1. ls_msglog-msgv2 = sy-msgv2. ls_msglog-msgv3 = sy-msgv3. ls_msglog-msgv4 = sy-msgv4. ls_msglog-probclass = 1. ls_msglog-params-altext = 'ZSB_LONGTEXT_TEST'. "#EC NOTEXT " Параметр parvalue ограничен длиной в 75 символов " Для того, чтобы вывести длинный текст, надо в конце задать имя следующей метки ls_msglog-params-t_par = VALUE #( ( PARNAME = 'COMPANYN' parvalue = 'Continental Airlines' ) ( PARNAME = 'DATE_END' parvalue = 'Continental Airlines&DATE_END1&' ) ( PARNAME = 'DATE_END1' parvalue = 'Continental2 Airlines2' ) ( parname = 'COMPANY' parvalue = 'Continental Airlines, Inc., — четвёртая по величине авиаком&COMPANY01&' ) ( parname = 'COMPANY01' parvalue = 'пания Соединённых Штатов Америки со штаб-квартирой в Хьюстон&COMPANY02&' ) ( parname = 'COMPANY02' parvalue = 'е, штат Техас, член глобального авиационного альянса пассажи&COMPANY03&' ) ( parname = 'COMPANY03' parvalue = 'рских перевозок Star Alliance с 2009 года. 1 октября 2010 го&COMPANY04&' ) ( parname = 'COMPANY04' parvalue = 'да, Continental Airlines официально слилась с компанией Unit&COMPANY05&' ) ( parname = 'COMPANY05' parvalue = 'ed Airlines. Новый авиаперевозчик будет работать под брендом&COMPANY06&' ) ( parname = 'COMPANY06' parvalue = ' United Airlines, с использованием логотипа Continental Airlines' ) ). " Добавление сформированного сообщения в лог CALL FUNCTION 'BAL_LOG_MSG_ADD' EXPORTING i_s_msg = ls_msglog EXCEPTIONS LOG_NOT_FOUND = 0 OTHERS = 1. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. " Сохранение лога CALL FUNCTION 'BAL_DB_SAVE' EXPORTING i_t_log_handle = VALUE bal_t_logh( ( lv_handle ) ) EXCEPTIONS numbering_error = 0. |
Результат можно посмотреть в транзакции SLG1.


Пример есть в отчете SBAL_DEMO_02