Last active
October 26, 2015 12:40
-
-
Save RiverSongFox/97a5d35920b5300372d7 to your computer and use it in GitHub Desktop.
Find and export SAP Application Logs messages
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
z00_log_header_tab = standard table of z00_log_header | |
LOGNUMBER BALOGNR | |
OBJECT BALOBJ_D | |
SUBOBJECT BALSUBOBJ | |
DATE BALDATE | |
TIME BALTIME | |
USER BALUSER | |
z00_log_message_tab = standard table z00_log_message | |
LOGNUMBER BALOGNR | |
SEQUENCE INTEGER | |
TIMESTAMP BALTIMSTMP | |
TYPE SYMSGTY | |
TEXT STRINGVAL |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FUNCTION z00_extract_logs. | |
*"---------------------------------------------------------------------- | |
*"*"Локальный интерфейс: | |
*" IMPORTING | |
*" VALUE(IV_OBJECT) TYPE BALOBJ_D OPTIONAL | |
*" VALUE(IV_SUBOBJECT) TYPE BALSUBOBJ OPTIONAL | |
*" VALUE(IV_DATE_FROM) TYPE ALDATE | |
*" VALUE(IV_DATE_TO) TYPE ALDATE | |
*" VALUE(IV_TIME_FROM) TYPE ALTIME DEFAULT '000000' | |
*" VALUE(IV_TIME_TO) TYPE ALTIME DEFAULT '235959' | |
*" EXPORTING | |
*" VALUE(ET_HEADER) TYPE Z00_LOG_HEADER_TAB | |
*" VALUE(ET_MESSAGES) TYPE Z00_LOG_MESSAGE_TAB | |
*" EXCEPTIONS | |
*" NOT_FOUND | |
*" NO_MESSAGES | |
*"---------------------------------------------------------------------- | |
DEFINE die. | |
clear: et_header[], | |
et_messages. | |
raise &1. | |
END-OF-DEFINITION. | |
" | |
" Основная логика | |
" | |
DATA: lt_log_headers TYPE balhdr_t, | |
lt_msg_handles TYPE bal_t_msgh. | |
" Поиск заголовков журналов | |
PERFORM find_logs | |
USING | |
iv_object | |
iv_subobject | |
iv_date_from | |
iv_date_to | |
iv_time_from | |
iv_time_to | |
CHANGING | |
lt_log_headers[]. | |
IF lt_log_headers[] IS INITIAL. | |
die not_found. | |
ELSE. | |
" Заполнить выходную таблицу заголовков журналов | |
PERFORM fill_exp_headers | |
USING | |
lt_log_headers[] | |
CHANGING | |
et_header[]. | |
ENDIF. | |
" Выгрузка журналов | |
CALL FUNCTION 'BAL_DB_LOAD' | |
EXPORTING | |
i_t_log_header = lt_log_headers[] | |
IMPORTING | |
e_t_msg_handle = lt_msg_handles[] | |
EXCEPTIONS | |
no_logs_specified = 1 | |
log_not_found = 2 | |
log_already_loaded = 3 | |
OTHERS = 4. | |
CLEAR sy-subrc. | |
IF lt_msg_handles[] IS INITIAL. | |
die no_messages. | |
ELSE. | |
" Заполнить выходную таблицу сообщений журналов | |
PERFORM fill_exp_messages | |
USING | |
lt_log_headers[] | |
lt_msg_handles[] | |
CHANGING | |
et_messages[]. | |
ENDIF. | |
ENDFUNCTION. | |
*&---------------------------------------------------------------------* | |
*& Form FIND_LOGS | |
*&---------------------------------------------------------------------* | |
* Поиск журналов по заданным критериям | |
*----------------------------------------------------------------------* | |
* -->IV_OBJECT Объект журнала | |
* -->IV_SUBOBJECT Подобъект журнала | |
* -->IV_DATE_FROM Начальная дата | |
* -->IV_DATE_TO Конечная дата | |
* -->IV_TIME_FROM Начальное время | |
* -->IV_TIME_TO Конечное время | |
* -->CT_LOG_HEADERS Заголовки найденных журналов | |
*----------------------------------------------------------------------* | |
FORM find_logs USING iv_object TYPE balobj_d | |
iv_subobject TYPE balsubobj | |
iv_date_from TYPE aldate | |
iv_date_to TYPE aldate | |
iv_time_from TYPE altime | |
iv_time_to TYPE altime | |
CHANGING ct_log_headers TYPE balhdr_t. | |
DATA: ls_filter TYPE bal_s_lfil. | |
DEFINE cond_append. | |
if &1 is not initial. | |
append &1 to &2. | |
endif. | |
END-OF-DEFINITION. | |
cond_append iv_object ls_filter-object. | |
cond_append iv_subobject ls_filter-subobject. | |
ls_filter-date_time-date_from = iv_date_from. | |
ls_filter-date_time-date_to = iv_date_to. | |
ls_filter-date_time-time_from = iv_time_from. | |
ls_filter-date_time-time_to = iv_time_to. | |
CALL FUNCTION 'BAL_DB_SEARCH' | |
EXPORTING | |
i_s_log_filter = ls_filter | |
IMPORTING | |
e_t_log_header = ct_log_headers[] | |
EXCEPTIONS | |
log_not_found = 1 | |
no_filter_criteria = 2 | |
OTHERS = 3. | |
IF sy-subrc <> 0. | |
CLEAR: ct_log_headers[]. | |
ENDIF. | |
ENDFORM. "FIND_LOGS | |
*&---------------------------------------------------------------------* | |
*& Form FILL_EXP_HEADERS | |
*&---------------------------------------------------------------------* | |
* Заполнение выходной таблицы заголовков журналов | |
*----------------------------------------------------------------------* | |
* -->IT_HEADERS Данные BAL_DB_SEARCH | |
* -->CT_HEADERS Выходная таблица | |
*----------------------------------------------------------------------* | |
FORM fill_exp_headers USING it_headers TYPE balhdr_t | |
CHANGING ct_headers TYPE z00_log_header_tab. | |
DATA: lr_log_header TYPE REF TO balhdr, | |
lr_exp_header TYPE REF TO z00_log_header. | |
CLEAR: ct_headers[]. | |
LOOP AT it_headers[] REFERENCE INTO lr_log_header. | |
APPEND INITIAL LINE TO ct_headers[] REFERENCE INTO lr_exp_header. | |
IF sy-subrc = 0. | |
lr_exp_header->lognumber = lr_log_header->lognumber. | |
lr_exp_header->object = lr_log_header->object. | |
lr_exp_header->subobject = lr_log_header->subobject. | |
lr_exp_header->date = lr_log_header->aldate. | |
lr_exp_header->time = lr_log_header->altime. | |
lr_exp_header->user = lr_log_header->aluser. | |
ENDIF. | |
ENDLOOP. | |
ENDFORM. "FILL_EXP_HEADERS | |
*&---------------------------------------------------------------------* | |
*& Form FILL_EXP_MESSAGES | |
*&---------------------------------------------------------------------* | |
* Заполнение выходной таблицы сообщений журналов | |
*----------------------------------------------------------------------* | |
* -->IT_LOG_HEADERS Данные BAL_DB_SEARCH | |
* -->IT_MSG_HANDLES Данные BAL_DB_LOAD | |
* -->CT_MESSAGES Выходная таблица с обработанными сообщениями | |
*----------------------------------------------------------------------* | |
FORM fill_exp_messages USING it_log_headers TYPE balhdr_t | |
it_msg_handles TYPE bal_t_msgh | |
CHANGING ct_messages TYPE z00_log_message_tab. | |
DATA: lr_log_header TYPE REF TO balhdr, | |
lr_msg_handle TYPE REF TO balmsghndl, | |
lr_exp_message TYPE REF TO z00_log_message, | |
ls_msg_info TYPE bal_s_msg, | |
lv_msg_text_c TYPE text8192, | |
lv_msg_text TYPE string. | |
LOOP AT it_msg_handles[] REFERENCE INTO lr_msg_handle. | |
APPEND INITIAL LINE TO ct_messages[] REFERENCE INTO lr_exp_message. | |
CALL FUNCTION 'BAL_LOG_MSG_READ' | |
EXPORTING | |
i_s_msg_handle = lr_msg_handle->* | |
IMPORTING | |
e_s_msg = ls_msg_info | |
e_txt_msg = lv_msg_text_c | |
EXCEPTIONS | |
log_not_found = 1 | |
msg_not_found = 2 | |
OTHERS = 3. | |
IF sy-subrc = 0. | |
READ TABLE it_log_headers[] REFERENCE INTO lr_log_header | |
WITH KEY log_handle = lr_msg_handle->log_handle. | |
IF sy-subrc = 0. | |
lr_exp_message->lognumber = lr_log_header->lognumber. | |
lr_exp_message->sequence = lr_msg_handle->msgnumber. | |
lr_exp_message->timestamp = ls_msg_info-time_stmp. | |
lr_exp_message->type = ls_msg_info-msgty. | |
lr_exp_message->text = lv_msg_text_c. | |
CONDENSE lr_exp_message->text. | |
ENDIF. | |
ENDIF. | |
ENDLOOP. | |
ENDFORM. "FILL_EXP_MESSAGES |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment