Часто возникает необходимость вывода списка сообщений пользователю SAP. В журнал сообщений ABAP может выводится информация о ходе выполнения программы SAP. Так же он необходим для вывода списка ошибок, возникших в результате её выполнения.
Один из вариантов реализации — это глобальная переменная в программе ABAP или атрибут класса. В ходе выполнения программы в эту переменную сохраняются сообщения. По окончанию выполнения программы может, например, выводится журнал сообщений. Либо происходит сохранение журнала в системе SAP с дальнейшей возможностью просмотра в транзакции SLG1.
Произошла ошибка. Попробуйте ещё раз позднее. |
Шаблон вывода журнала сообщений ABAP:
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 |
DATA: ls_log TYPE bal_s_log, ls_prof TYPE bal_s_prof, lv_log_h TYPE balloghndl. " Заполняем переменную журнала CALL FUNCTION 'BAL_LOG_CREATE' EXPORTING i_s_log = ls_log IMPORTING e_log_handle = lv_log_h EXCEPTIONS OTHERS = 0. " В цикле добавляем сообщения в журнал LOOP AT mt_msg REFERENCE INTO DATA(lr_msg). CALL FUNCTION 'BAL_LOG_MSG_ADD' EXPORTING i_log_handle = lv_log_h i_s_msg = lr_msg->*. ENDLOOP. " Заполняем переменную окна журнала CALL FUNCTION 'BAL_DSP_PROFILE_STANDARD_GET' IMPORTING e_s_display_profile = ls_prof. " Устанавливаем размеры окна ls_prof-start_row = 5. ls_prof-end_row = 25. ls_prof-start_col = 10. ls_prof-end_col = 150. ls_prof-show_all = abap_true. " Передаём данные окна в журнал CALL FUNCTION 'BAL_DSP_LOG_DISPLAY' EXPORTING i_s_display_profile = ls_prof. " Выводим журнал сообщений на экран CALL FUNCTION 'BAL_LOG_REFRESH' EXPORTING i_log_handle = lv_log_h. " Чистим глобальную переменную сообщений CLEAR mt_msg. |
Готово. В результате получаем на экране журнал сообщений. В каждой строке есть индикатор в зависимости от типа сообщения с текстом. Так же есть возможностью просмотреть подробности каждого сообщения. Необходимости в глобальной переменной в которой хранятся сообщения может не быть. Например, мы можем сразу создать объекта сообщений ABAP и сохранять сообщения сразу в журнал. Это подойдёт при фоновом выполнении. Так же на необходимость глобальной переменной влияет нужен полный список сообщений в конце выполнения.
Так же много интересных примеров можно найти в SBAL_DEMO*.