ENQUEUE – Bloqueio e desbloqueio de registro no dado mestre
Na elaboração de especificações funcionais ou manuais para treinamento ou até mesmo procurando a solução de problema precisamos ter os dados mestre inalterados afim evitar mudanças de cenários inesperados.
Neste artigo vamos demonstrar a utilização do bloqueio/desbloqueio dos objetos relacionados a tabela ANLA para os cenários de imobilizados FI-AA, as funções bloqueio/desbloqueio pode ser estendido para demais objetos do SAP.
A SAP prove um conjunto de funções com a habilidade de restringir o acesso aos dados de uma tabela para ser atualizada, dentre as formas de bloqueio temos as funções ENQUEUE, DEQUEUE.
Abaixo uma pequena demonstração utilizando a transação SE37 para pesquisar as função de bloquear (ENQUEUE) ou desbloquear (DEQUEUE) objetos do sistemas.
Pesquisando um objeto de bloqueio na transação SE37
Onde a função ENQUEUE* realiza o bloqueio e a função DEQUEUE* o desbloqueio do registro na tabela.
Cenário do caso uso
A seguir serão demonstrados os passos para o uso desta função em um cenário do FI-AA, onde a tabela ANLA terá o registro bloqueado. Ao final o registro será liberado.
Pesquisando um objeto de bloqueio para a função ENQUEUE
Transação: SE11
Informe a tabela para o bloqueio do registro.
Selecione a opção ‘Objetos de bloqueio’.
A seguir é retornada a função ENQUEUE_EANLA.
Bloquear registro (dado mestre)
Tabela: ANLA
Função (SE37): ENQUEUE_EANLA
O parâmetro MODE_ANLA = E também pode conter:
Valor |
Descrição |
E |
Bloqueio de escrita |
S |
Bloqueio de leitura |
V |
Só verificação colisão bloqueio escrita, como em ‘E’ |
W |
Só verificação colisão bloqueio leitura, como em’S’ |
Informe empresa (BUKRS), imobilizado (ANLN1) e subitem (ANLN2).
Atribua _SCOPE =2 como valor default.
Após o bloqueio no registro da ANLA as modificações no dado mestre não serão possíveis. Utilize a transação AS02 e tente modificar o dado mestre.
Será exibida a mensagem de erro abaixo.
O bloqueio também pode ser verificado na transação SM12.
A lista dos registros bloqueados na ANLA será exibida.
Desbloquear registro (dado mestre) de FI-AA.
Tabela: ANLA
Função (SE37):DEQUEUE_EANLA
O desbloqueio também pode ser eliminado pela SM12.
O dado mestre foi desbloqueado, acesse-o utilizando a transação AS02.
Volte à transação SM12 e observe que o bloqueio foi retirado da lista.
Solicitamos a gentileza de apontarem neste documento, para o conhecimento de todos, possíveis
divergências ou informações complementares necessárias.
Artur Paulino da Silva Cardoso
[editado pela moderação]
Ola Claudio,
Voce deu uma explicacao simples e efetiva de uma caracteristica basica porem muito importante mas mal sub-utilizada no sistema.
Gostaria ede fazer uma correcao, ou sugestao, no metodo utilizado para encontrar qual o objeto de bloqueio para a tabela. Na transacao SE11, digite o nome da tabela e clique em "where used list":
Em seguida, desmarque todos os checkboxes e marque somente o "lock objects/objetos de bloqueio":
Dessa maneira o retorno sera mais preciso e mais rapido:
Abraco.
Custodio
@zcust01
Custódio,
como sempre excelente sua colaboração. Documento ajustado.
Abs.
Oi Claudio,
Gostei da ideia. Apesar de conhecer bem objetos de bloqueio, nunca tinha pensado em usar isso para bloquear os dados mestres/transacionais para evitar modificações por terceiros 🙂
Gostaria de adicionar um ponto: se não tiver certeza de qual FM faz o dequeue, pode eliminar o bloqueio diretamente na SM12.
Abraços,
Eduardo Hartmann
Eduardo,
documento atualizado, contendo sua dica (simples e fácil).
Obrigado.
Olá
Muito bom pessoal o conhecimento sendo disseminado!
Um Abraço
Artur
Muito bom Cláudio. A documentação está bem clara e objetiva.
Bom também que estamos tendo muitas outras formas de sugestões para executar esse mesmo processamento.
Abraço