Upload
janaina
View
154
Download
16
Embed Size (px)
Citation preview
Criação de LOG de Modificações em SM30
1
– Delivery Center Brazil - 08/2013Ricardo Perrella
Criação de LOG de Modificações em SM30
2
Sumário
1º Passo – Tabela Z ........................................................................................................................ 3
2º Passo – Criação de SM30 .......................................................................................................... 5
3º Passo – Criação do Objeto de Documento de Modificação ..................................................... 6
4º Passo – Alteração de Tela da SM30 ........................................................................................ 11
5º Passo – Criação de Eventos na SM30 ..................................................................................... 16
6º Passo – Criação de Status GUI da Tela de Atualização ........................................................... 22
7º Passo – Definição do Status Gui na SM30 .............................................................................. 25
8º Passo – Codificação de Tela .................................................................................................... 27
9º Passo – Visualizando um LOG de Modificações ..................................................................... 28
Criação de LOG de Modificações em SM30
3
No SAP é possível criar algumas rotinas para que se gere um LOG de modificações de
uma determinada view de atualização (SM30).
Qualquer alteração, inclusão e deleção de registros é gravada em um LOG (CDHDR e
CDPOS) para posterior visualização através de relatório Standard.
1º Passo – Tabela Z
Neste exemplo usaremos a seguinte tabela:
Para que a geração do LOG funcione é preciso que TODOS os Elementos de Dados que compõe
a chave da tabela estejam com o FLAG abaixo marcado:
Criação de LOG de Modificações em SM30
4
Para o exemplo que iremos utilizar, só existe um campo chave com elemento de dados
ZED_MATERIAL.
Caso o elemento de dados que faz parte da chave da tabela já possua esta opção não é
necessário criar um novo Elemento de Dados, caso contrário acesse a transação SE11 e altere
esta informação.
Criação de LOG de Modificações em SM30
5
2º Passo – Criação de SM30
Cria a visão de atualização da tabela normalmente:
Criação de LOG de Modificações em SM30
6
3º Passo – Criação do Objeto de Documento de Modificação
Acesse a transação SCDO (Exibir objetos doc.modificação) e clique no Botão Criar:
Informe o nome do Objeto a ser criado e clique em Avançar:
Nomenclatura: ZOBJMO_*
Caso a mensagem abaixo apareça, clique em SIM:
Criação de LOG de Modificações em SM30
7
Na tela Seguinte, informe os dados conforme figura abaixo:
Certifique-se de marcar as opções destacadas em amarelo na figura acima.
Cliquem em Inserir Entradas.
Na tela a seguir, Vá em Utilitários -> Gerar Prog. Atualiz.
Criação de LOG de Modificações em SM30
8
Caso a mensagem abaixo apareça, clique em SIM:
Preencha o Grupo de Funções e clique em Gerar:
Caso utilize o mesmo grupo de função utilizado na criação da SM30, poderá aparecer a
seguinte mensagem:
Sugiro a utilização de outro grupo de funções.
Criação de LOG de Modificações em SM30
9
Criação de LOG de Modificações em SM30
10
Após Gerar, o seguinte log é mostrado.
Clique em SALVAR e saia da transação.
Nesta etapa foi criado o módulo de função que será responsável por registrar as modificações
efetuadas na tabela.
Criação de LOG de Modificações em SM30
11
4º Passo – Alteração de Tela da SM30
Através da SE54 (Objetos Gerados) acesse a view de atualização da tabela.
Vá em Ambiente->Modificação->Telas de atualização
Posicione o Cursor na Tela e dê Enter:
Criação de LOG de Modificações em SM30
12
Criação de LOG de Modificações em SM30
13
Insira as seguintes linhas nos pontos destacados:
Apenas Salve a Tela.
Criação de LOG de Modificações em SM30
14
Acesse novamente a View através da SE54 só que neste momento em modo EXIBIÇÃO.
Acesse novamente a tela anteriormente acessada através do menu Ambiente->Modificação->Telas de atualização
Dê um duplo clique em um dos módulos inseridos no código fonte da tela para criar os
mesmos.
Sim
Insira o nome da include onde serão criados os novos módulos e dê OK.
Criação de LOG de Modificações em SM30
15
Inclua os seguintes módulos e Ative o Código Fonte:
IMPORTANTE: Certifique-se de ativar, o INCLUDE criado, a TELA alterada e o Grupo de
Funções.
Criação de LOG de Modificações em SM30
16
5º Passo – Criação de Eventos na SM30
Acesse novamente a View através da SE54 em modo de Modificação.
Vá no menu Ambiente->Modificação->Horas
Clique em Entradas Novas e insira as seguintes rotinas:
Clique em salvar e em seguida clique no Botão Editar indicado na figura acima.
Criação de LOG de Modificações em SM30
17
Insira o nome da include onde serão criados as novas rotinas e dê OK.
Inclua as duas novas rotinas conforme abaixo:
Ative o Código fonte.
Clique no Botão “Exibir Lista de Objetos”:
Criação de LOG de Modificações em SM30
18
Acesse a Include TOP para declaração das variáveis necessárias:
Declare as seguintes variáveis:
YZTABELA do exemplo utilizado.
Salve a Ative o include.
Criação de LOG de Modificações em SM30
19
Volte ao include com as duas rotinas criadas (LOG_MODIF e LOG_DEL)
Inclua o código abaixo no FORM LOG_MODIF:
FORM log_modif .
DATA: it_ztabela TYPE STANDARD TABLE OF ztabela , wa_ztabela TYPE ztabela , tabix TYPE sy - tabix . CHECK NOT it_newreg[] IS INITIAL . *Sseleciona tabela com chave completa SELECT * FROM ztabela INTO TABLE it_ztabela FOR ALL ENTRIES IN it_newreg WHERE material EQ it_newreg - material .
* Gera log de modificação. LOOP AT it_newreg INTO wa_newreg . tabix = sy - tabix . *lê tabela com chave completa CLEAR wa_ztabela . READ TABLE it_ztabela INTO wa_ztabela WITH KEY material = wa_newreg- material . IF wa_ztabela IS INITIAL . wa_newreg - kz = 'I' . APPEND wa_newreg TO it_oldreg . ELSE. * Gera chave com registro antigo APPEND wa_ztabela TO it_oldreg . ENDIF. MODIFY it_newreg FROM wa_newreg INDEX tabix .
*Monta Chave da tabela para a variável wa_cdtxt-tei lobjid CONCATENATE wa_newreg - mandt wa_newreg - material INTO wa_cdtxt - teilobjid . wa_cdtxt - updkz = wa_newreg - kz . APPEND wa_cdtxt TO it_cdtxt . ENDLOOP. *Gravação no LOG CLEAR: wacdtxt , waoldreg010 , wanewreg010 .
Criação de LOG de Modificações em SM30
20
user = sy - uname. utime = sy - uzeit . udate = sy - datum . *Função Criada Através do Objeto de Modificação CALL FUNCTION 'ZOBJMO_ZTABELA_WRITE_DOCUMENT' EXPORTING objectid = 'ZTABELA' tcode = sy - tcode utime = utime udate = udate username = user object_change_indicator = <action> upd_icdtxt_zobjmo_ztabela = <action> upd_ztabela = <action> TABLES icdtxt_zobjmo_ztabela = it_cdtxt xztabela = it_newreg yztabela = it_oldreg . REFRESH: it_oldreg , it_newreg , it_cdtxt .
ENDFORM.
Criação de LOG de Modificações em SM30
21
Insira o código abaixo no FORM LOG_DEL:
FORM log_del . CLEAR wa_newreg . ztabela - USER_MODIF = sy - uname. ztabela - DATE_MODIF = sy - datum . ztabela - HOUR_MODIF = sy - uzeit . wa_newreg = ztabela . wa_newreg - kz = 'D' . APPEND wa_newreg TO it_newreg . ENDFORM.
Salve e Ative o Include.
Criação de LOG de Modificações em SM30
22
6º Passo – Criação de Status GUI da Tela de Atualização
Verifique o programa que foi gerado automaticamente pelo grupo de função utilizado na
tabela, neste caso informei o SAPLZGF_ZTABELA.
Acesse a transação SE41, informe o programa SAPLSVIM e clique no botão indicado.
Criação de LOG de Modificações em SM30
23
Informe o programa e dê Enter
,
Após a cópia informe o STATUS default EULG incluindo o botão de visualização do LOG.
Criação de LOG de Modificações em SM30
24
Crie o Botão coforme abaixo.
Criação de LOG de Modificações em SM30
25
Repita a operação para o STATUS GUI ESLG:
Ao inserir o botão HIST e dar Enter, clique no botão para ativar a funcionalidade do mesmo.
7º Passo – Definição do Status Gui na SM30
Acesse novamente a View através da SE54 em modo de Modificação.
Vá no menu Ambiente->Modificação->Horas
Clique em Entradas Novas e insira a seguinte rotina (Programa do Grp de Função):
Criação de LOG de Modificações em SM30
26
Criação de LOG de Modificações em SM30
27
8º Passo – Codificação de Tela
Entre na tela de atualização da View e inclua a lógica abaixo nos Módulos anteriormente
criados: CONST_MODIF e HISTORICO_MODIF
SALVE E ATIVE TUDO.
*&------------------------------------------------- --------------------* *& Module CONST_MODIF INPUT *&------------------------------------------------- --------------------* * text *-------------------------------------------------- --------------------* MODULE const_modif INPUT. CLEAR wa_newreg . ztabela - user_modif = sy - uname. ztabela - date_modif = sy - datum . ztabela - hour_modif = sy - uzeit . wa_newreg = ztabela . wa_newreg - kz = 'U' . APPEND wa_newreg TO it_newreg . ENDMODULE. " CONST_MODIF INPUT
*&------------------------------------------------- --------------------* *& Module HISTORICO_MODIF INPUT *&------------------------------------------------- --------------------* * text *-------------------------------------------------- --------------------* MODULE historico_modif INPUT. CHECK sy - ucomm EQ 'HIST' . SET PARAMETER ID 'CDO' FIELD 'ZOBJMO_ZTABELA'. SET PARAMETER ID 'CDI' FIELD 'ZTABELA' . SUBMIT rsscd100 AND RETURN. ENDMODULE. " HISTORICO_MODIF INPUT
Criação de LOG de Modificações em SM30
28
9º Passo – Visualizando um LOG de Modificações
Todo o log é mostrado em um relatório conforme figura abaixo