Depois de alguns anos
e muita chatice tenho ficado cada vez mais resistente quando alguem me pede para fazer uma Tabela de Log para um processo X. Minha resposta sempre é: você sabia que o SAP tem seu proprio controle de Log sem a necessidade de criar tabelas novas?
Resolvi fazer minha implementação do Maravilhos mundo do Application log. Existem varias utilizações do Application Log (ou mais conhecido como Bal Log), ate mesmo no wiki scn tem alguns exemplos bem exemplicaficados de como utilizar. Para mais exemplos implementados, pode acessar ate na Transação SE38
com o filtro SBAL_DEMO_*
que tem uma grande quantidade de aplicações para a solução.
Fiz uma implementação para que pudesse usar a solução das duas formas possiveis:
- 1- Salvando log de forma que fique acessivel pela transação
SLG1
; - 2- Armazenando o log e exbindo ao final do processo sem a necessidade de salvar
A diferença de implementação é bem simples, então, resolvi fazer de forma a deixar dinamico. Fiz um a classe zcl_bal_log para melhorar a utilização das funções que contemplam o log. Sendo assim, as utilizações diferente ficam a cargo apenas de usar de forma diferente o método constructor
, como mostrado nos exemplos abaixo.
Antes de qualquer coisa, para que os log's sejam salvos, é necessários criar um objeto (caso ainda não tenha sido criado) e um sub-objeto na transação SLG0
. Esses mesmos objeto e sub-objeto são utilizados para consultor os log's na transação SLG1
. Não tem nesse exemplo, mas a implementação segue abaixo.
data:
app_log type ref to zcl_bal_log.
create object app_log
exporting
title = 'Titulo do Log'
object = 'Z_OBJECT'
subobject = 'Z_SUBOBJECT'
alprog = sy-cprog.
Eu uso, em grande parte das vezes, a utilização sem salvar o log. Um dos pontos mais interessantes para a utilização é a forma variada de exibir essa mensagem. Como é mostrado no post do scn, tem varias forma que as proprias funções do Application Log
podem mostrar as mensagens de acordo com a melhor opção para solução.
Para criação de objeto, deve ser feita da mesma forma que esta no exemplo, conforme modelo abaixo. Ao deixar de informar os valores, a solução ja entende a finalidade de suas mensagens.
data:
app_log type ref to zcl_bal_log.
create object app_log
exporting
title = 'Titulo do Log'
* object =
* subobject =
alprog = sy-cprog.
Simples, objetivo e sem necessidade de ficar criando novas tabelas. 👍