Olá
Os objetos de bloqueio são usados no SAP para evitar inconsistências ao inserir/alterar dados no banco de dados.
O SAP fornece três tipos de objetos de bloqueio.
- Bloqueio de leitura (bloqueio compartilhado)
protege o acesso de leitura a um objeto. O bloqueio de leitura permite que outras transações tenham acesso de leitura, mas não acesso de escrita à
área bloqueada da tabela.
- Bloqueio de escrita (bloqueio exclusivo)
protege o acesso de escrita a um objeto. O bloqueio de escrita não permite que outras transações tenham acesso de leitura ou acesso de escrita à
área bloqueada da tabela.
- Bloqueio de escrita aprimorado (bloqueio exclusivo sem acumulação)
funciona como um bloqueio de escrita, exceto que o bloqueio de escrita aprimorado também protege contra acessos adicionais da mesma transação.
Você pode criar um bloqueio em um objeto SAP através da transação SE11 e inserir um nome significativo que comece com EZ, por exemplo, EZTEST_LOCK.
Uso: quase em todas as transações, quando você abre um objeto em modo de alteração, o SAP não permite que nenhum outro usuário abra o mesmo objeto em modo de alteração.
Exemplo: em Recursos Humanos, quando você insere um número pessoal na tela de manutenção de dados mestres, o SAP não permite que nenhum outro usuário use o mesmo número pessoal para fazer alterações.
Tecnicamente:
Ao criar um objeto de bloqueio, o sistema cria automaticamente dois módulos de função.
1. ENQUEUE_. para inserir o objeto em uma fila.
2. DEQUEUE_. Para remover o objeto que está na fila através do FM anterior.
Você deve usar esses módulos de função em seu programa.
Verifique este link para um exemplo.
http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
tables:vbak.
call function 'ENQUEUE_EZLOCK3'
exporting
mode_vbak = 'E'
mandt = sy-mandt
vbeln = vbak-vbeln
-
X_VBELN = ' '
-
_SCOPE = '2'
-
_WAIT = ' '
-
_COLLECT = ' '
-
EXCEPTIONS
-
FOREIGN_LOCK = 1
-
SYSTEM_FAILURE = 2
-
OTHERS = 3
.
if sy-subrc <> 0.
endif.
Normalmente, os ABAPers criarão os objetos de bloqueio, porque sabemos quando bloquear, como bloquear e onde bloquear o objeto e depois de completar nossas atualizações, desbloqueamos os objetos nas tabelas.
http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
Propósito: Se vários usuários tentarem acessar um objeto de banco de dados, pode ocorrer inconsistência. Para evitar essa inconsistência e permitir que vários usuários tenham acessibilidade aos objetos do banco de dados, é utilizado o mecanismo de bloqueio.
Passos: primeiro criamos um objeto de bloqueio em se11. Vamos supor para uma tabela mara. Criaremos dois módulos funcionais.:
1. enque_lockobject
1. deque_lockobject
antes de atualizar qualquer tabela, primeiro bloqueamos a tabela chamando o fm enque_lockobject e depois da atualização liberamos o bloqueio com deque_lockobject.
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019