Sei sulla pagina 1di 5

Funo para Gravar LOG na SLG0 e visualizar pela SLG1.

Chamada da funo:
" Gravar log de processamento.
CALL FUNCTION 'Z_CRIA_LOG'
EXPORTING
im_extnumber = 'ZLESI_RODOCRED'
im_subobject = 'ZLESI_RODOCRED'
im_logdata = t_log
EXCEPTIONS
error_create_log = 1
error_save_log = 3
OTHERS = 4.

1) Criar a estrutura:

2) Criar o tipo tabela.

*----------------------------------------------------------------------*
* Tabelas Internas Globais
*----------------------------------------------------------------------*
DATA: t_log TYPE ztlog.
Criar os parmetros de importao

IM_EXTNUMBER TYPE BALNREXT Log de aplicao: identificao externa

IM_SUBOBJECT TYPE BALSUBOBJ Log de aplicao: subobjeto

IM_TESTRUN TYPE CMAP_FLAG Flag (verdade ='X', errado = ' ')

IM_LOGDATA TYPE ZTLOG Tabela para Dados de Log

IM_MSGTAB TYPE ZTMSG Tab. de Mensagens - Log de aplicao: dados de uma mensagem

Criar as Excees:

ERROR_CREATE_LOG Erro ao Criar os Dados de LOG

ERROR_DISPLAY_LOG Erro ao Exibir os Dados de LOG

ERROR_SAVE_LOG Erro ao Salvar os Dados de LOG


Cdigo da funo: (na funo j h o objeto ZCONVERSION criado. Basta somente criar o subobjeto na SLG0 ou poderia ser
ajustada para receber o objeto tambm. Neste caso teriam que ser criados objeto e subobjeto na SLG0. E visualizar o log pela
SLG1.
FUNCTION Z_CRIA_LOG.
*"----------------------------------------------------------------------
*"*"Interface local:
*" IMPORTING
*" VALUE(IM_EXTNUMBER) TYPE BALNREXT
*" VALUE(IM_SUBOBJECT) TYPE BALSUBOBJ
*" VALUE(IM_TESTRUN) TYPE CMAP_FLAG OPTIONAL
*" VALUE(IM_LOGDATA) TYPE ZTLOG OPTIONAL
*" VALUE(IM_MSGTAB) TYPE ZTMSG OPTIONAL
*" EXCEPTIONS
*" ERROR_CREATE_LOG
*" ERROR_DISPLAY_LOG
*" ERROR_SAVE_LOG
*"----------------------------------------------------------------------

DATA: gv_log_handle TYPE balloghndl. "Log de aplicao: handle de um log


DATA: wa_log TYPE bal_s_log. "Log de aplicao: dados do cabealho de log
DATA: i_logdata TYPE ztlog. "Tabela para dados de LOG
DATA: wa_logdata LIKE LINE OF i_logdata.
DATA: wa_msg TYPE bal_s_msg. "Log de aplicao: dados de uma mensagem

i_logdata[] = im_logdata[].

* Define os dados do cabealho do log.


wa_log-extnumber = im_extnumber.
wa_log-object = 'ZCONVERSION'. "Nome do objeto criado na SLG0
wa_log-subobject = im_subobject. "Subobjeto amarrado ao objeto na SLG0
wa_log-aldate = sy-datum.
wa_log-altime = sy-uzeit.
wa_log-aluser = sy-uname.
wa_log-alprog = sy-repid.

CALL FUNCTION 'BAL_LOG_CREATE'


EXPORTING
i_s_log = wa_log
IMPORTING
e_log_handle = gv_log_handle
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2.
IF sy-subrc <> 0.
RAISE error_create_log.
ENDIF.

* Insere no LOG a informao que a execuo em teste - primeira linha.


IF NOT im_testrun IS INITIAL.
CLEAR wa_msg.
wa_msg-msgty = 'W'.
wa_msg-msgid = '00'. "Classe de mensagem 00 - Textos da base geral
wa_msg-msgno = '001'. "Numero da mensagem
wa_msg-msgv1 = 'TESTE DE EXECUO! DADOS NO ALTERADOS '(001).

CALL FUNCTION 'BAL_LOG_MSG_ADD'


EXPORTING
i_log_handle = gv_log_handle
i_s_msg = wa_msg
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
RAISE error_create_log.
ENDIF.
ENDIF.

* Insere na tabela de LOG os dados da interface


LOOP AT im_logdata INTO wa_logdata.

CLEAR wa_msg.
wa_msg-msgty = wa_logdata-msgty.
wa_msg-msgid = '00'.
wa_msg-msgno = '001'.
wa_msg-msgv1 = wa_logdata-msgtxt(50).
wa_msg-msgv2 = wa_logdata-msgtxt+50(50).
wa_msg-msgv3 = wa_logdata-msgtxt+100(50).
wa_msg-msgv4 = wa_logdata-msgtxt+150(50).

IF wa_msg-msgty EQ 'S'.
wa_msg-probclass = 2.
ELSEIF wa_msg-msgty EQ 'E'.
wa_msg-probclass = 1.
ENDIF.

CALL FUNCTION 'BAL_LOG_MSG_ADD'


EXPORTING
i_log_handle = gv_log_handle
i_s_msg = wa_msg
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.

IF sy-subrc <> 0.
RAISE error_create_log.
ENDIF.

ENDLOOP.

* Insere na tabela de LOG os dados da tabela de mensagem


LOOP AT IM_MSGTAB INTO wa_msg.

IF wa_msg-msgty EQ 'S'.
wa_msg-probclass = 2.
ELSEIF wa_msg-msgty EQ 'E'.
wa_msg-probclass = 1.
ENDIF.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = gv_log_handle
i_s_msg = wa_msg
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.

IF sy-subrc <> 0.
RAISE error_create_log.
ENDIF.

CLEAR wa_msg.

ENDLOOP.

* Save Log
CALL FUNCTION 'BAL_DB_SAVE'
EXPORTING
i_save_all = 'X'
EXCEPTIONS
log_not_found = 1
save_not_allowed = 2
numbering_error = 3
OTHERS = 4.

IF sy-subrc <> 0.
RAISE error_save_log.
ENDIF.

ENDFUNCTION.