Para asegurar la consistencia de datos dentro de nuestro sistema SAP, debemos asegurarnos que los registros de datos no pueden ser cambiados por más de un usuario a la vez.
El sistema SAP tiene su propio concepto de administración de bloqueos (lock management).
1. Transacciones de base de datos
Desde la perspectiva de la base de datos, cada paso de diálogo forma una unidad física y lógica: la transaccion de base de datos. El sistema de BD sobre el que corre nuestro sistema SAP puede coordinar este tipo de transacciones de base de datos.
2. Transacciones SAP
El sistema SAP necesita administrar su propio concepto de bloqueo. Eso se logra utilizando el work process de enqueue (encolado). Esto tambien asegura la independecia de plataforma utilizada para el sistema.
3. Sistema de bloqueo en SAP
El concepto de bloqueo de SAP funciona sobre el principio de que los programas SAP realizan entrada de registros en la tabla de bloqueo (lock table). Solo pueden generarse nuevas entrada en esta tabla si no existen otras.
4. Enqueue Work Process
El enqueue work process maneja los bloqueos logicos de las transacciones SAP en la tabla de bloqueo. Esta table se situa en la memoria principal de la instancia donde el proceso corre.
Un work process de dialogo que corre en la misma instancia que el enqueue work process puede acceder directamente a la tabla de bloque en la memoria principal para chequear si un nuevo bloqueo puede generarse, esto es, sino ocurrira un conflicto con un bloqueo ya establecido.
Si el bloqueo puede crearse, entonces el work process de dialogo crea la entrada en la tabla y se le entrega una llave al usuario, la cual se mantiene en la memoria de contexto de usuario.
Si el work process de dialogo y el enqueue work process corren en diferentes instancias se comunicarán a través del message server. En este caso la solicitud de bloqueo se reenvía desde el work process de dialogo al enqueue work process a través de los respectivos dispatchers y el message server.
Ahora el enqueue work process es quien se encarga de chequear si se puede crearse un bloqueo en la tabla. Si esto es posible, el bloqueo se realiza y la key generada se envía a través del dispatcher y el message server.
5. Modos de bloqueos
Cuando se solicita el bloqueo, el sistema verifica si el bloqueo generará un conflicto con alguna de las entradas. Si esto ocurre, la solicitud es rechazada.
Los desarrolladores son quienes deciden el modo de bloqueo para la aplicación:
- Bloqueo de escritura exclusivo ( Exclusive write lock) se denomina con la letra "E" solo pueden ser editados por un solo usuario.
- Bloqueo de lectura compartido (Shared lock mode) se indentifica con la letra "S", se acepta solicitudes adicionales de lectura.
- Bloqueo de escritura mejorado (Exclusive noncumulative write lock) se identifica con la letra "X" la cual puede ser solicitado solo una vez.
- Bloqueo optimístico (Optimistic lock) denomimados con la letra "O" se establece como bloqueo de lectura y luego pasa a escritura.
La transacción SM12 muestra los bloqueos que actualmente hay en el sistema SAP.