Logali Training
¿Cómo solicitar/liberar la actualización de una tabla en SAP utilizando un objeto de bloqueo?

¿Cómo solicitar/liberar la actualización de una tabla en SAP utilizando un objeto de bloqueo?

Para esta lección utilizamos el objeto de bloqueo EZ_FACT_LOGALI creado en el tutorial ¿Cómo crear un objeto de bloqueo en SAP?

Cada objeto de bloqueo lleva asociado dos módulos de funciones con la nomenclatura DEQUEUE_NOMBRE_OBJETO_BLOQUEO y ENQUEUE_NOMBRE_OBJETO_BLOQUEO que nos permiten solicitar y liberar el bloqueo sobre la tabla.

  1. Para ver los módulos de funciones creados entramos en el diccionario de datos, transacción SE11, visualizando el objeto de bloqueo y navegamos en el menú en Pasar a Módulo bloqueo.

  1. En la transacción SE38 – Editor ABAP creamos un programa ejecutable donde implementamos la lógica que solicita/libera el bloqueo.

3. Primero solicitamos el bloque llamando al módulo de funciones.

Existen los siguientes tipos de bloqueo que se pueden pasar al primer parámetro del módulo de funciones:

  • E Bloqueo escritura
  • S Bloqueo lectura
  • X Bloqueo escrit.ampliado
  • O Fijar bloqueo optimista
  • R Promover bloqueo optimista, conversión de «O» a «E»
  • U Sólo verif.colisión, bloqueo escritura ampliado, como en «X»
  • V Sólo verif.colisión, bloqueo de escritura, como en «E»
  • W Sólo verificación colisión, bloqueo de lectura, como en «S»
  • C Sólo verificación promoción, bloqueo optimista, como en «R»
  • T Reservado
  • + Reservado

Con el segundo parámetro MANDT podemos bloquear la inserción de registros por mandante, porque la tabla es dependiente de mandante y contiene el campo MANDT.

Dependiendo de los campos que forman la clave de la tabla de base de datos (el objeto que se bloquea), el módulo de funciones contendrá tantos parámetros que los campos clave. En este caso el único campo clave FACTURA (sin contar el campo MANDT que también es clave). Con esto podemos bloquear la tabla a nivel de registro y no permitimos crear una inserción con el mismo número de factura.

  1. Después de haber solicitado el bloqueo implementamos toda la lógica de la aplicación que se va ejecutar mientras tenemos la tabla bloqueada en modo escritura. Para este ejemplo insertamos sólo un registro en la tabla, normalmente la lógica que se implementa es mucha más amplia con navegación entre varias pantallas, etc.

  1. Cuando terminamos con la lógica tenemos que liberar el bloqueo. Es un paso muy importante, no podemos dejar bloqueada la tabla cuando el usuario termina de utilizar la aplicación. Por eso llamamos al módulo de funciones que nos permite liberar el bloqueo.

  1. El código entero del programa es:

Añadir comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Cursos Destacados

Síguenos

Si desea estar informado de nuestros nuevos cursos, obtener promociones o desea recibir algún tipo de información.