Oka!
- Creación del objeto de bloqueo: Tx SE11
Dependiendo de la nomenclatura de tu proyecto indica el nombre, el cliente que tenemos usamos: EZT****
- Aparece el nombre del objeto de bloqueo
- Indicas el nombre de la tabla
- Modo de bloqueo: Escritura
Luego haciendo click en
Podemos ver los módulos creados:
- El Código
Para bloquear los registros lo realizamos con el módulo ENQUEUE:
En el reporte por medio de Modelo ingresamos el ENQUEUE_EZT_xxxx.
En el reporte automaticamente se crea el siguiente código, en CLAVES aparecerán las claves de la tabla.
CALL FUNCTION 'ENQUEUE_EZT_xxxx'
EXPORTING
<CLAVES>
_collect = abap_true
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
Si queremos bloquear un registro solo, en las claves correspondientes ponemos los valores del registros a bloquear, como pusimos _collect = abap_true, iremos acumulando los registros, si tenes que bloquear toda la tabla, ingresa el código del módulo dentro de un LOOP y vas bloqueando todos los registros, acumulandolos.
Una vez acumulados procedemos a bloquear todos los registros acumulados con el siguiente código:
CALL FUNCTION 'FLUSH_ENQUEUE'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
A continuación podemos hacer lo que desees con esos registros dentro del reporte.
IMPORTANTE: recuerda que si o si debes desbloquearlos, sino quedan bloqueados hasta proximo aviso ajaja. Por medio del siguiente código realizamos el desbloqueo, ponlo en alguna parte donde siempre el flujo de información pasará.
CALL FUNCTION 'DEQUEUE_ALL'.
También puedes el DEQUEUE creado en la SE11, pero yo directamente uso el que aparece en el código, es un desbloqueo general.
Espero que te haya ayudado, Saludos!