✒️ABAP / Los objetos de bloqueo en SAP Por Carlos Piles Rosell

Selector Alummnos / Empresas

CVOSOFT UNITED STATES OF AMERICA | 17 años de ingeniería dedicados a formación profesional de Consultores SAP | +info

Los objetos de bloqueo en SAP

Los objetos de bloqueo en SAP

6.1. Concepto de transacción.

6.1.1. Transacción de Base de Datos ( DB LUW )

Una transacción de base de datos es introducida por un punto de sincronización el cual es puesto por la aplicación de la base de datos ( en el caso del sistema R/3).

En el curso de una transacción de base de datos, el sistema realiza actualizaciones de la tabla, en requerimientos hechos por el sistema R/3. Las entradas a la tabla modificada permanecen bloqueadas hasta que la transacción haya terminado.

Después de cada actualización de la base de datos, el sistema de base de datos informa al sistema R/3 que la actualización fue exitosa o no exitosa, en forma de un código de retorno.

Una transacción de base de datos es terminada por otro punto de sincronización puesto por el sistema R/3 el cual envía un COMMIT para confirmar las actualizaciones de las tablas, o un ROLLBACK al sistema de base de datos. En respuesta, el sistema de base de datos realiza un commit para confirmar las actualizaciones de la tabla, o realiza un rollback el cual cancela las actualizaciones realizadas por la transacción de base de datos. En este caso el estado 2 es idéntico al estado 1.

En ambos casos, los bloqueos hechos por la base de datos son liberados.

6.1.2. Transacción SAP.

Una transacción SAP consiste en procesos de dialogo. Un proceso de dialogo comienza cuando el usuario presiona Enter, cuando activa una función presionando alguna tecla función, hace un doble clic o escoge una función de un menú. Esto termina cuando la siguiente pantalla es desplegada.

En el curso de un proceso de dialogo, los módulos PAI pertenecen a la pantalla en ejecución y los módulos PBO pertenecen a la siguiente pantalla que es ejecutada.

Cada proceso de dialogo puede contener requerimientos de actualización (UPDATE, INSERT, DELETE).

6.1.3. Transacción SAP y Transacción DB.

Después de cada proceso de dialogo, el sistema R/3 automáticamente pasa un commit de base de datos al sistema de base de datos. El sistema de base de datos distribuye los requerimientos de actualización de un proceso de dialogo individual pasando por varias transacciones.

Un rollback en un proceso de dialogo no tiene efecto en actualizaciones previamente realizadas a la base de datos en procesos de dialogo previos.

6.1.4. Transacción SAP y Actualizaciones Asíncronas.

Una actualización asíncrona permite combinar un total de actualizaciones realizadas por procesos de dialogo consecutivos de una transacción SAP, en una unidad conocida como Logical Unit of Work (unidad lógica de Trabajo) o SAP LUW.

En el LUW, todas las actualizaciones son realizadas en una sola. Aquí los requerimientos de actualización no son pasados directamente a la base de datos, pero son almacenados en una tabla de registro (log table) para actualizarse.

El comando de ABAP/4 COMMIT WORK concluye el LUW. El sistema R/3 comienza un proceso de actualización especial el cual usa la tabla de registro (log table) para realizar la actualización en la base de datos dentro del contexto de una transacción de base de datos.

Si ocurre un error, el LUW es terminado por el comando ABAP/4 ROLLBACK WORK. Las entradas a la tabla de registro son descartadas y no comienza el proceso de actualización.

El COMMIT WORK termina la tarea del dialogo y continua en la tarea de actualización.

6.2. Concepto de Actualización Asíncrona.

En SAP, la actualización asíncrona para el manejo de requerimientos de bases de datos es dividida entre un programa de dialogo interactivo y un programa de actualización, el cual corre en background.

En SAP, la actualización asíncrona divide el proceso en actualizaciones de tiempos críticos (V1) y actualizaciones de tiempos menos críticos (V2).

6.2.1. Programa de dialogo y módulo de función para actualización.

Para la implementación del concepto de actualización, se requiere de un programa para el proceso de dialogo y uno o más módulos de función para el proceso de actualización.

Si en el comando CALL FUNCTION en el programa de dialogo tiene además IN UPDATE TASK, la llamada no es ejecutada inmediatamente, pero es agregada en la tabla de registro.

6.2.2. Modulo de Función de Actualización.

Se pueden asignar módulos de función usados en una transacción SAP a diferentes grupos de funciones.

En la sección de administración, se especifica el tipo de función: V1 (ejecución inmediata) o V2 (ejecución posteriormente).

En un módulo de función para actualización, solo los parámetros de entrada (import) y las tablas son tomadas en cuenta. Se especifica los campos de referencia o la estructura según corresponda.

Los parámetros de salida (export parameters) y las excepciones (exceptions), son ignorados en una función de actualización.

Si se desea reglamentar la opción para realizar después una actualización después de un error, con la transacción SM13 seleccione Immediate start, no restart.

6.2.3. Programa de diálogo y tabla de registro.

En el momento que cada CALL FUNCTION ... IN UPDATE TASK es ejecutada en un programa en diálogo, se agrega una entrada en la tabla registro (log table) con el nombre de la función y sus parámetros.

Todas los requerimientos de actualización en un SAP LUW tiene la misma llave (conocida como update key).

Un registro de encabezado (log header) para asociar los registros se genera solo cuando un COMMIT WORK es ejecutado.

6.2.4. Rollback en los programas de Dialogo: Borrando marcas de Actualización.

  1. PROGRAM . . .
  2. MODULE <read ok-code>.
  3. . . .
  4. CASE <ok-code>.
  5. WHEN 'UPDA'.
  6. .
  7. COMMIT WORK.
  8. WHEN 'BACK'.
  9. .
  10. ROLLBACK WORK.
  11. .
  12. ENDCASE.
  13. . . .
  14. ENDMODULE.

En el curso de un dialogo que involucra varios pasos, se puede juntar una serie de actualizaciones y ejecutar el requerimiento asociado con un COMMIT WORK explícito.

Sin embargo, se pueden tener para borrar todas las actualizaciones del SAP LUW en curso con ROLLBACK WORK. El comando ROLLBACK regresa todas las actualizaciones hechas por el LUW en ejecución.

.2.5. Rollback en el Programa de Actualización.

  1. FUNCTION-POOL . . .
  2. . . .
  3. FUNCTION . . .
  4. . . .
  5. UPDATE . . .
  6. IF SY-SUBRC NE 0.
  7. MESSAGE Annn . . .
  8. ENDIF.
  9. INSERT . . .
  10. IF SY-SUBRC NE 0.
  11. MESSAGE Annn . . .
  12. ENDIF.
  13. . . .
  14. ENDFUNCTION.

La función de actualización pasa el requerimiento de actualización a la base de datos y analiza el código de retorno. Si la base de datos no ejecuta correctamente la actualización, en el módulo de función se decide la forma de proceder en estos casos.

Si se desea realizar un Rollback de base de datos en el programa de actualización, es necesario desplegar un mensaje tipo abend.

Los comandos ABAP/4 COMMIT WORK Y ROLLBACK WORK no son permitidos en módulos de función de actualización. Solo pueden ser usados en programas de dialogo.

6.2.6. PERFORM <subrutina> ON COMMIT.

Si se ejecuta una subrutina con PERFORM <subrutina> ON COMMIT, no es ejecutado hasta el siguiente COMMIT WORK.

Con PERFORM ... ON COMMIT no se pueden pasar parámetros.

Con el ROLLBACK WORK, las elementos de la tabla interna son borrados. Las subrutinas que son ejecutadas con PERFORM ... ON COMMIT pueden ellas mismas contener llamadas a módulos de funciones de actualización.

  1. MODULE PAI_100.
  2. . . .
  3. PERFORM F1 ON COMMIT.
  4. . . .
  5. ENDMODULE.
  6. MODULE PAI_200.
  7. . . .
  8. PERFORM F2 ON COMMIT.
  9. . . .
  10. COMMIT WORK.
  11. ENDMODULE.
  12. . . .
  13. FORM F1.
  14. CALL FUNCTION 'UPDATE_LFA1'.
  15. IN UPDATE TASK
  16. EXPORTING . . . .
  17. . . .
  18. ENDFORM.
  19. FORM F2.
  20. CALL FUNCTION 'UPDATE_LFB1'.
  21. IN UPDATE TASK
  22. EXPORTING . . . .
  23. . . .
  24. ENDFORM.

7. Concepto de Bloqueo de SAP.

7.1. Utilización de bloqueos

Si varios usuarios quieren tener acceso a un mismo recurso, éstos deben estar sincronizados para garantizar la consistencia de los datos.

Los bloqueos, constituyen un conveniente método para coordinar los accesos de cada usuario a los recursos. Cada usuario requiere de un bloqueo antes de tener acceso a datos críticos.

7.1.1. Bloqueo de Base de Datos.

Si un programa de diálogo contiene estatutos de actualización, el sistema de base de datos pone los bloqueos apropiados.

Al final de una transacción de base de datos, el sistema de base de datos libera todos los bloqueos puestos durante la transacción.

No obstante, el sistema R/3 realiza un commit implícito a la base de datos en cada cambio de pantalla, el bloqueo de base de datos puesto durante un paso de dialogo, solo es retenido mientras no termine este paso e inicie el siguiente.

7.1.2. Introducción al Concepto de Bloqueo de SAP.

Los bloqueos de base de datos son insuficientes si se desea que el bloqueo tenga una duración de varios cambios de pantalla.

En el contexto de bloqueo de base de datos de SAP, hay una transacción SAP la cual coloca los bloqueos en una tabla (lock table) para que los registros de la tabla sean procesados.

La transacción SAP obtiene información sobre el suceso del bloqueo para retornar un código de retorno.

Al final del proceso, los bloqueos deben ser liberados explícitamente por el programa de diálogo.

Si el usuario termina el programa de dialogo ( tecleando en la línea de comandos /n, o dentro del programa se ejecuta un estatuto LEAVE PROGRAM o LEAVE TO TRANSACTION; o si es desplegado un mensaje tipo A), los bloqueos son liberados automáticamente.

7.1.3. Objetos de Bloqueo SAP.

Para realizar un bloqueo, primeramente se define un objeto de bloqueo en diccionario de ABAP/4. Estos objetos cubren las tablas que van a ser bloqueadas.

Consiste de una tabla primaria, pero también se pueden agregar otras tablas secundarias para usar llaves foráneas dependientes.

Los argumentos del bloqueo son los campos que forman la clave de las tablas.

Por cada tabla se puede definir el modo de bloqueo: Modo E para exclusivo, modo S para compartido.

7.1.4. Modulo de Función Enqueue / Dequeue.

Cuando un objeto bloqueado ha sido activado exitosamente, el sistema genera unos módulos de función ENQUEUE y DEQUEUE.

7.1.5. Llamando Módulos de Bloqueo.

Cuando se llama un módulo de función ENQUEUE, el programa de diálogo coloca un bloqueo.

Los parámetros de exportación que se refieren al bloqueo de argumentos, identifican las entradas de la tabla o las entradas a ser bloqueadas.

Si uno de estos parámetros no contienen un valor, el sistema lo trata como una especificación genérica.

Si se desea borrar todos los bloqueos de la tabla, los cuales han sido puestos en tu programa se puede usar el módulo de función DEQUEUE_ALL.

7.1.6. Tabla de Bloqueos

Los argumentos de los bloqueos, son almacenados en la lock table para casa tabla bloqueada.

| Client | User | Time | Shared | Table |Lock argument |

| 007 | Meyer | 11:00 | | SFLIGHT | LH470 |

| 007 | Miller | 11:01 | | SFLIGHT | UA250 |

| 007 | Miller | 11:01 | | LFB1 |0074712 0815 |

| 007 | Miller | 11:01 | | LFC1 |0074712 08151994|

| 007 | Smith | 11:02 | X | YLFA | LIEF1 |

| 007 | Schultz | 11:03 | X | YLFA | LIEF1 |

| 007 | Balfour | 11:04 | | YLFB1 | 00764715 |

Para desplegar la tabla de bloqueos, elija Tools -> Administration -> Lock entries (Transacción SM12).

7.1.7. Características Especiales con ENQUEUE.

El parámetro MODE_<table> maneja el modo de bloqueo definido por el bloqueo del objeto (‘S’ = shared / compartido, ‘E’ = Exclusivo).

El parámetro _SCOPE define la duración del bloqueo y los libera cuando no se necesitan más.

_SCOPE = 1 : El Bloqueo permanece en el programa de dialogo.

_SCOPE = 2 (default) : El bloque es retenido por el programa de actualización.

_SCOPE = 3 : El programa de dialogo y actualización son dueños de los bloqueos y hay dos entradas por objeto.

El parámetro _WAIT define donde un bloqueo deberá repetirse después de un error. Se pueden especificar la duración de las repeticiones con el parámetro ENQUEUE / DELAY.

Si un argumento de bloqueo no contiene valor o tiene un espacio, se establece un bloqueo genérico. Si se desea bloquear el valor inicial, se debe marcar el parámetro

X_<lock argument>.


 

Escanear / Compartir

 

 


Sobre el autor

Publicación académica de Carlos Piles Rosell, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Avanzado.

SAP Senior

Carlos Piles Rosell

Profesión: Analista de Sistemas y Programador - España - Legajo: GZ57B

✒️Autor de: 24 Publicaciones Académicas

🎓Egresado de los módulos:

Disponibilidad Laboral: PartTime

Certificación Académica de Carlos Piles

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "Los objetos de bloqueo en SAP" de la mano de nuestros alumnos.

SAP Expert


1. Concepto y Propósito En SAP, los objetos de bloqueo son el método principal para coordinar el acceso de los usuarios a los recursos del sistema. Su función primordial es sincronizar las modificaciones en las tablas de la base de datos, asegurando que un registro no sea editado por dos personas al mismo tiempo, lo que garantiza la consistencia de los datos almacenados. 2. Creación y Configuración Estos objetos se administran a través del Diccionario de Datos utilizando la transacción SE11. • Nomenclatura: Por estándar de SAP, el nombre de un objeto de bloqueo debe comenzar obligatoriamente con la letra "E". En desarrollos personalizados (Z), es habitual seguir la convención...

Acceder a esta publicación

Creado y Compartido por: Gabriel José Luces González

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master


Los objetos de bloqueo en SAP Introducción a los objetos de bloqueo en SAP Explicación inicial sobre la importancia de los objetos de bloqueo para sincronizar el acceso concurrente a tablas de base de datos en SAP. Resaltada la necesidad de bloquear datos críticos para garantizar la consistencia y evitar modificaciones simultáneas por diferentes usuarios. Creación de un objeto de bloqueo en SE11 Los objetos de bloqueo se crean en el diccionario de datos usando la transacción SE11. Se ejemplifica la creación para la tabla "ZTabla_usuarios", usando el nombre "EZTabla_usuarios" siguiendo la convención de iniciar...

Acceder a esta publicación

Creado y Compartido por: Juan Ignacio Romero

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Introducción Los objetos de bloqueo en SAP son mecanismos esenciales para garantizar la consistencia de datos cuando múltiples usuarios acceden concurrentemente a las mismas tablas. Evitan conflictos al coordinar el acceso a recursos críticos mediante operaciones de bloqueo (ENQUEUE) y desbloqueo (DEQUEUE). 1. Creación de un Objeto de Bloqueo (Transacción SE11) Pasos clave: Abrir SE11 → Seleccionar Objeto de bloqueo → Ingresar nombre que comience con E (ej: EZTABLA_USUARIOS). Definir atributos: Descripción breve: Propósito del bloqueo. Tabla asociada: Nombre de la tabla a proteger (ej: ZTABLA_USUARIOS). ...

Acceder a esta publicación

Creado y Compartido por: Oscar Aravena Muller / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert



¿Qué es un objeto de bloqueo (Lock Object) en SAP? Un objeto de bloqueo es una definición en el Diccionario ABAP (SE11) que permite controlar el acceso concurrente a los mismos datos de una o varias tablas lógicas. Su objetivo es garantizar la consistencia durante una SAP LUW (Logical Unit of Work), de modo que dos usuarios o procesos no modifiquen simultáneamente el mismo registro y provoquen datos inconsistentes. Modos de bloqueo SAP define varios modos que determinan la compatibilidad entre bloqueos: E – Exclusive lock: impide que otros lean o modifiquen la misma clave con bloqueos incompatibles. Es el más usado al actualizar. S – Shared lock: permite múltiples...

Acceder a esta publicación

Creado y Compartido por: David Ibarra / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

· lección "Los objetos de bloqueo en SAP": • Los objetos de bloqueo en SAP â—¦ Son un método útil para coordinar el acceso de los usuarios a los recursos del sistema. En una transacción de diálogo o cualquier programa donde varios usuarios puedan modificar la misma tabla de base de datos, estos objetos aseguran la consistencia de los datos al sincronizar los accesos. â—¦ Creación de objetos de bloqueo: Se crean en el Diccionario de datos mediante la transacción SE11. â–ª Nombre: Los nombres de los objetos de bloqueo deben comenzar con la letra "E". â–ª Descripción breve: Se introduce una descripción acorde al propósito...

Acceder a esta publicación

Creado y Compartido por: Roberto Fluder Ahumada

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP SemiSenior

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...

Acceder a esta publicación

Creado y Compartido por: Mauricio Ezequiel Yedro

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Existen tres modos de bloqueo, el bloqueo de lectura este bloqueo permite el acceso de solo lectura al objeto compartido permite que los programas y usuarios lean los datos o el objeto pero no escriban o modifiquen actualicen el mismo, luego tenemos el bloqueo de escritura, este bloqueo no permite acceso de lectura y escritura a objetos compartidos por otras transacciones o usuarios y por ultimo tenemos el bloqueo de escritura ampliado este bloqueo funciona de manera similar al bloqueo de escritura el bloqueo ampliado mejorado incluye funciones adicionales como por ejemplo proteger el objeto o los datos de intentos de accesos adicionales por parte del mismo programa transaccion o usuario. En ocasiones nos puede suceder que trabajando con los...

Acceder a esta publicación

Creado y Compartido por: Jose Medina / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Los objetos de bloqueo en SAP. En donde cabe la posibilidad que varios usuarios tengan acceso a modificar una misma tabla base de datos, esto debe estar sincronizado la consistencia de los datos almacenados en la tabla base de datos. Para sincronizar estos accesos en SAP utilizamos los Objetos de bloqueo. Antes de acceder a los datos críticos cada usuario realizara 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. Vamos a crear un objeto de bloqueo para una tabla base de datos, para ello, en la pantalla inicial de la transacción SE11 seleccionamos Objeto de bloqueo, introducimos...

Acceder a esta publicación

Creado y Compartido por: Javier Miguel Angel Barcelo / Disponibilidad Laboral: PartTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

LOS OBJETOS DE BLOQUEO EN SAP. Son un método conveniente para coordinar los accesos de cada uno de los usuarios de la aplicación a los recursos del sistema. Los objetos de bloqueo que se crean en el Diccionario de datos a través de la transacción se11. Los nombré de los objetos de bloqueo deben comenzar con la letra E. Para llamar al módulo de funciones que bloquea hacemos clic en Modelo, dentro del campo CALL FUNCTION escribimos el nombre del módulo de funciones de bloqueo que es ENQUEUE_E( nombre de la tabla) y continuar. Para bloquear un registro en particular de la tabla base de datos ZTABLA_USUARIOS debemos completar sus campos clave que son el mándate y el DNI. Para llamar al...

Acceder a esta publicación

Creado y Compartido por: Gerardo Jose Campos Tovar / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Locking Mechanisms in SAP When multiple users access the same database table through different programs, these accesses must be synchronized to ensure consistency. Locks are used for this synchronization. Locks are a method that helps coordinate each user's access to resources. Before accessing data, each user will initiate a lock so that no other user can do so at the same time. Creating a Lock for a Database Table Access transaction SE11 Select "Lock Object" and give it a name Click on "CREATE" Provide a description In the "TABLE" tab, specify the table to lock and the lock mode. The "Lock Parameter" tab displays the parameters by which the table will be locked. Save and...

Acceder a esta publicación

Creado y Compartido por: Jaime Eduardo Gomez Arango / Disponibilidad Laboral: FullTime + Carta Presentación

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 99.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

🔎Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!