Журнал сообщений ABAP

Часто возникает необходимость вывода списка сообщений пользователю. Результаты выполнения программы или как случается чаще журнал ошибок. На протяжении работы программы глобально определённая переменная заполняется необходимыми сообщениями после чего, например, вызывается метод вывода журнала сообщений. В ABAP это реализуется достаточно просто.
Шаблон для вывода журнала сообщений:

 								
	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.  	


Готово. В результате мы получаем на экране журнал сообщений с индикаторами в зависимости от типа сообщения с текстом и возможностью просмотреть подробности каждого сообщения. Необходимость глобальную переменную в которой хранятся сообщения может не быть, если, например, есть необходимость до выхода из программы иметь доступ ко всем сообщениям за её время работы.

Так же много интересных примеров можно найти в SBAL_DEMO*.