Hi
Los objetos de bloqueo se utilizan en SAP para evitar inconsistencias al insertar/cambiar datos en la base de datos.
SAP proporciona tres tipos de objetos de bloqueo.
- Bloqueo de lectura (bloqueo compartido)
protege el acceso de lectura a un objeto. El bloqueo de lectura permite a otras transacciones acceso de lectura pero no acceso de escritura a
el área bloqueada de la tabla.
- Bloqueo de escritura (bloqueo exclusivo)
protege el acceso de escritura a un objeto. El bloqueo de escritura no permite a otras transacciones ni acceso de lectura ni acceso de escritura a
el área bloqueada de la tabla.
- Bloqueo de escritura mejorado (bloqueo exclusivo sin acumulación)
funciona como un bloqueo de escritura excepto que el bloqueo de escritura mejorado también protege de accesos adicionales desde la
misma transacción.
Puedes crear un bloqueo en un objeto de SAP a través de la transacción SE11 e ingresar un nombre significativo que comience con EZ Ejemplo EZTEST_LOCK.
Uso: casi en todas las transacciones, cuando abres un objeto en modo de cambio, SAP no permite que ningún otro usuario abra el mismo objeto en modo de cambio.
Ejemplo: en Recursos Humanos, cuando ingresas un número personal en la pantalla de mantenimiento de datos maestros, SAP no permite que ningún otro usuario use el mismo número personal para realizar cambios.
Técnicamente:
Cuando creas un objeto de bloqueo, el sistema crea automáticamente dos módulos de función.
1. ENQUEUE_<nombre del objeto de bloqueo>. para insertar el objeto en una cola.
2. DEQUEUE_<nombre del objeto de bloqueo>. Para eliminar el objeto que está en cola a través del FM anterior.
Debes utilizar estos módulos de función en tu programa.
Revisa este enlace para un ejemplo.
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 los ABAPers crearán los objetos de bloqueo, porque sabemos cuándo bloquear, cómo bloquear y dónde bloquear el objeto y después de completar nuestras actualizaciones desbloqueamos los objetos en las tablas.
http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
Propósito: Si varios usuarios intentan acceder a un objeto de base de datos, puede producirse inconsistencia. Para evitar esa inconsistencia y permitir que múltiples usuarios tengan accesibilidad a los objetos de la base de datos, se utiliza el mecanismo de bloqueo.
Pasos: primero creamos un objeto de bloqueo en se11. Supongamos para una tabla mara. Creará dos módulos funcionales.:
1. enque_lockobject
1. deque_lockobject
antes de actualizar cualquier tabla, primero bloqueamos la tabla llamando al fm enque_lockobject y luego de la actualización liberamos el bloqueo con deque_lockobject.
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019