![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️SAP BASIS El proceso de bloqueo
SAP BASIS El proceso de bloqueo
![SAP BASIS El proceso de bloqueo SAP BASIS El proceso de bloqueo](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/211.jpg)
El principio de bloqueo de SAP (lock management), sirve para asegurar la consistencia de datos en el sistema asegurando que los registros no puedan ser accedidos y cambiados por más de un usuario al mismo tiempo.
1.- Las transacciones de base de datos
Recordemos que una transacción de base de datos es un paso de dialogo que forma una unidad física y lógica, la capa de la base de datos en el sistema SAP coordina estas transacciones.
2.- Las transacciones SAP
Para SAP no es suficiente el proceso que realiza la base de datos con las transacciones, las transacciones SAP se forman por secuencias lógicas de pasos de trabajo relacionadas, los cuales se forman generalmente de varios pasos de dialogo.
SAP utiliza el work process enqueue (encolado) para administrar su propio concepto de bloqueo y asegurar la independencia de plataforma utilizada para el sistema.
3.- El sistema de bloqueo en SAP
Su principio de bloqueo de SAP consiste en que los programas van realizando entradas de registros en la tabla de bloqueo (lock table), y solo se pueden generar nuevas entradas en la tabla si no existen otras para el objeto que intenta bloquearse.
4.- El enqueue worl process
Este maneja los procesos de bloqueo lógicos de las transacciones SAP en la tabla de bloqueo, esta tabla está en la memoria principal.
- El D-WP que se ejecuta en la misma instancia que el WP enqueue accede a la tabla de bloqueo en la memoria principal para checar si se puede generar un bloqueo para evitar conflicto con un bloqueo ya establecido.
- Si se puede crear un bloqueo, el WP crea una entrada en la tabla de bloqueo y se le asigna una key (llave) al usuario la cual se mantiene en memoria de contexto de usuario.
- Si el D-WP y el E-WP se encuentran en diferentes instancias, se comunicarán a través del MS. La solicitud de bloqueo se reenvía desde el D-WP al E-WP mediante el dispatcher y el MS.
El E-WP es quien se encarga de revisar si pueden crearse un bloqueo en tabla y al ser posible el bloqueo se realiza y la key generada se envía mediante el dispatcher y el message server.
5.- Los modos de bloqueos
Cuando se solicita un bloqueo, el sistema verifica si no hay conflicto con las entradas en tabla que puedan existir, si esto pasa la solicitud se cancela y se informa al usuario que la operación no puede realizarse.
Los desarrolladores son quienes deciden el modo de bloqueo:
- Bloqueo de Escritura Exclusivo (Exclusive write lock): Representado por la letra “E” en la tabla. Estos datos bloqueados solo pueden ser editador por un usuario, el cual rechaza otro tipo de bloqueo por otra transacción.
Solo se pueden acumular otros bloqueos E por el usuario.
- Bloqueo de Lectura Compartido (Shared Lock Mode): Representado por la letra “S” en la tabla. Acepta solicitudes de lecturas adicionales.
Las solicitudes de escritura son rechazadas.
- Bloqueo de Escritura Mejorado (Exclusive Noncumulative Write Lock): Representados por la letra “X” en la tabla. Solo se pueden solicitar una vez.
Las demás solicitudes se rechazan.
- Bloqueo Optimístico (Optimistic Lock): Representados por la letra “O” en la tabla. Inician como bloqueos de lectura y luego pueden transformarse en bloqueos de escritura.
Permite bloqueos adicionales del mismo tipo sobre un objeto.
Cuando un usuario pasa al modo de modificación en una transacción, el bloqueo pasa al tipo “E”.
Si otros bloqueos de tipo “O” existen sobre el objeto esos se eliminan de la tabla.
La transacción SM12 se utiliza para revisar los bloqueos, en esta misma podemos liberarlos, pero se debe utilizar con precaución ya que SAP realiza los bloqueos cuando un dato se encuentra dentro de un evento transaccional (se ejecuta todo o nada) y si lo liberamos puede crear inconsistencia.
En la práctica muchas veces los usuarios notifican que no pueden trabajar ya que están siendo bloqueados.
Un caso se da cuando el bloqueo este siendo realizado por el usuario, para lo cual debemos preguntarle o revisar desde la transacción SM04 si realmente no ejecuta en paralelo las mismas tareas.
Esto a veces puede que el usuario perdió conexión con el sistema y se quedan los bloqueos sin liberar, así que podemos liberarlos desde la SM12 filtrando por el nombre de usuario.
El segundo caso se da cuando un tercero esta realizando los bloqueos y para liberar debemos asegurar que el usuario no se encuentre trabajando, una vez que ya no esté trabajando podemos eliminar el bloqueo.
Debemos estar seguros porque si existe un bloqueo significa que hay un proceso transaccional y podemos generar inconsistencias.
 
 
 
Sobre el autor
Publicación académica de Sayil Emanuel López Valencia, en su ámbito de estudios para la Carrera Consultor Basis NetWeaver.
Sayil Emanuel López Valencia
Profesión: Sistemas Computacionales - Mexico - Legajo: WA24Q
✒️Autor de: 45 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP Fiori
- Carrera Consultor Basis NetWeaver Nivel Avanzado
- Carrera Consultor Basis NetWeaver Nivel Inicial