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 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 permite a otras transacciones ni acceso de lectura ni 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 de 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: puedes ver en casi todas las transacciones que al abrir un objeto en modo de cambio, SAP no permite que otro usuario abra el mismo objeto en modo de cambio.
Ejemplo: en Recursos Humanos, cuando ingresamos un número de personal en la pantalla de mantenimiento de datos maestros, SAP no permite que otro usuario use el mismo número de personal para 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.
verifica este enlace para un ejemplo.
http://help.sap.com/saphelp_nw04s/helpdata/en/cf/21eea5446011d189700000e8322d00/content.htm
tablas: 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.
-
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
-
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
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 luego de completar nuestras actualizaciones desbloqueamos los objetos en las tablas.