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

Часто возникает необходимость вывода списка сообщений пользователю. В журнале сообщений можно вывести как информацию о ходе выполнения программы, так и список ошибок,возникших в результате.

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

Шаблон для вывода журнала сообщений:

	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*.