
Los objetos de bloqueo en SAP
En una transacción de diálogo, reporte o cualquier tipo de programa en donde cabe la posibilidad que varios usuarios tengan acceso a modificar una misma tabla base de datos, estos deben estar sincronizados para garantizar la consistencia de los datos almacenados en la tabla base de datos.
Para sincronizar estos accesos en SAP utilizamos los Objetos de bloqueo.
Los objetos de bloqueo son un método conveniente para coordinar los accesos de cada uno de los usuarios de la aplicación a los recursos del sistema.
Antes de acceder a los datos críticos cada usuario realizará un bloqueo de los mismos de modo que ningún otro usuario pueda hacerlo al mismo tiempo.
Los objetos de bloqueo se crean en el Diccionario de datos a través de la transacción SE11.
“Los nombres de los objetos de bloqueo deben comenzar con la letra E”
Creación del objeto de bloqueo:
En la TX SE11, seleccionamos Objeto de bloqueo, introducimos un nombre que será por ejemplo EZTABLA_USUARIOS y luego hacemos clic en el botón Crear. Introducimos una descripción breve para el objeto de bloqueo. Luego en la solapa Tablas introducimos en el campo Nombre, el nombre de la tabla base de datos que es ZTABLA_USUARIOS y en el campo Modo de bloqueo seleccionamos la opción Bloqueo Escritura. En la solapa Parámetros bloqueo podemos ver los campos por los cuales se realizará el bloqueo en la tabla que no son ni más ni menos que los campos clave de la tabla. Finalmente activamos el objeto de bloqueo.
Una vez que generamos el objeto de bloqueo, si vamos al menú Pasar a / Módulo bloqueo. Entonces veremos los dos módulos de funciones que se han generado para visualizar el bloqueo y desbloqueo de la tabla base de datos ZTABLA_USUARIOS, que son ENQUEUE_EZTABLA_USUARIOS para bloquear y DEQUEUE_EZTABLA_USUARIOS para desbloquear.
Para utilizar los dos módulos de funciones vamos a crear un nuevo programa ABAP con el nombre ZTEST_OB.
Para llamar al módulo de funciones que bloquea hacemos clic en Modelo, dentro de lcampo CALL FUNCTION escribimos el nombre del módulo de funciones de bloqueo que es ENQUEUE_EZTABLA_USUARIOS y hacemos clic en continuar.
Para bloquear un registro en particular de la tabla, deberemos completar sus campos claves que son el MANDT y el DNI.
Todo el mismo procedimiento de llamado de la función y de completar los campos claves, se hace para el desbloqueo de la tabla base de datos con la función DEQUEUE_EZTABLA_USUARIOS.
Por último, a través de la transacción estándar SM12 podemos visualizar un listado de todas las tablas bloqueadas actualmente en el sistema SAP.