Está en la página 1de 7

[Año]

DOCUMENTACIÓN – CONFIRMAR ANULAR


MODIFICACIONES EN BASES DE DATOS

Curso – ABAP Open SQL


LOGALISAP
1

Contents
1. SAP LUW – Logical Unit Work .............................................................................................................................2
2. COMMIT WORK ...................................................................................................................................................2
2.1. Sintaxis .........................................................................................................................................................2
2.2. Efecto ...........................................................................................................................................................2
2.3. Comportamiento de la variable de sistema SY-SUBRC ............................................................................4
2.4. Consideraciones ..........................................................................................................................................4
3. ROLLBACK WORK .................................................................................................................................................5
3.1. Sintaxis .........................................................................................................................................................5
3.2. Efecto ...........................................................................................................................................................5

ABAP Open SQL logalisap.com


2

1. SAP LUW – Logical Unit Work

Una unidad lógica de trabajo es una secuencia relacionada de varias unidades


de programación, cuya ejecución, por ejemplo, en pasos de diálogo o en
llamadas de función remota, puede distribuirse a través de varios procesos de
trabajo, pero sus cambios en la base de datos se actualizan dentro de una
única base de datos LUW. Las SAP LUW se implementan mediante técnicas de
agrupación, en las que las unidades de programación, como módulos de
función de actualización o subrutinas, se registran en diferentes procesos de
trabajo, pero se ejecutan mediante un único proceso de trabajo.
Generalmente se inicia un SAP LUW abriendo una nueva sesión interna y
termina cuando se ejecuta la sentencia Open SQL COMMIT WORK.

2. COMMIT WORK

2.1. Sintaxis

COMMIT WORK [AND WAIT].

2.2. Efecto

La instrucción COMMIT WORK cierra el LUW SAP actual y abre uno


nuevo. Todas las solicitudes de cambio de la LUW SAP actual se
confirman. En este caso, COMMIT WORK realiza las siguientes
acciones:

• Ejecuta todas las subrutinas registradas usando PERFORM ON


COMMIT. Las siguientes sentencias no se pueden ejecutar en
una subrutina de este tipo:

- PERFORM ... ON COMMIT|ROLLBACK


- COMMIT WORK
- ROLLBACK WORK

ABAP Open SQL logalisap.com


3

Se puede ejecutar la sentencia CALL FUNCTION ... IN


UPDATE TASK.

• Se activa un evento interno para el servicio de persistencia de los


servicios de objetos.
• Se desencadena el procesamiento de todos los módulos de
función de actualización registrados utilizando CALL FUNCTION ...
IN UPDATE TASK en el proceso de trabajo de actualización.
Dentro de un módulo de función de actualización que comenzó a
utilizar COMMIT WORK, las sentencias que provocan un COMMIT
en base de datos no se pueden ejecutar. En particular, se
prohíben:

- COMMIT WORK
- ROLLBACK WORK
- SUBMIT
- CALL TRANSACTION
- LEAVE TO TRANSACTION
- CALL DIALOG
- CALL SCREEN

• Maneja todos los bloqueos SAP establecidos en el programa


actual de acuerdo con el valor del parámetro formal _SCOPE de
los módulos de función de bloqueo correspondientes.
• Se desencadena un COMMIT en base de datos que también
termina la base de datos actual LUW y cierra todos los cursores de
base de datos.
• Activa el evento TRANSACTION_FINISHED de la clase de sistema
CL_SYSTEM_TRANSACTION_STATE. El parámetro KIND se
establece en el valor de la constante
CL_SYSTEM_TRANSACTION_STATE=>COMMIT_WORK.

ABAP Open SQL logalisap.com


4

2.3. Comportamiento de la variable de sistema SY-SUBRC

El COMMIT WORK siempre se actualiza con 0 cuando no se especifica


AND WAIT.
Cuando se especifica AND WAIT:
- 0 cuando la actualización de la función de actualización se
ejecutó con existo
- 4 cuando la actualización de la función de actualización no se
ejecutó con existo

2.4. Consideraciones

Puntos para tener en cuenta cuando se ejecuta la sentencia COMMIT


WORK:
- Si el programa se ejecuta con batch input o si se ha llamado al
programa utilizando la sentencia CALL TRANSACTION USING, el
COMMIT WORK termina el proceso back input. Es su
comportamiento por defecto.
- En un programa llamado con CALL DIALOG el COMMIT WORK no
inicializa el proceso para las subrutinas con PERFORM ON
COMMIT o para los módulos de funciones CALL FUNCTION …..IN
UPDATE TASK.
- La sentencia COMMIT WORK no puede ser ejecutada en
actualizaciones o durante la ejecución de las subrutinas
registradas con PERFORM……COMMIT|ROLLBACK.
- La sentencia COMMIT WORK no debe ser ejecutada en unidades
LUW que son manejadas de llamadas transaccionales tipo RFC –
Remote Function Calls.

ABAP Open SQL logalisap.com


5

3. ROLLBACK WORK

3.1. Sintaxis

ROLLBACK WORK.
Los cambios dentro de un SAP LUW pueden ser deshechos por la sentencia
Open SQL - ROLLBACK WORK.

3.2. Efecto

La sentencia ROLLBACK WORK cierra el SAP LUW actual y abre uno nuevo.
Esto cancela todas las solicitudes de cambios hechas por el SAP LUW actual.
Para ello, ROLLBACK WORK realiza las siguientes acciones:

- Ejecuta todas las subrutinas registradas con PERFORM ON ROLLBACK.


- Elimina los registros de todas las subrutinas registradas con PERFORM
ON COMMIT.
- Inicia un evento interno en los Objetos de servicio que garantiza que los
atributos de los objetos persistentes se inicialicen.
- Elimina todos los módulos de función de actualización registrados con
CALL FUNCTION ... IN UPDATE TASK de las tablas de base de datos y
elimina todas las llamadas de función remotas transaccionales
registradas con CALL FUNCTION ... IN BACKGROUND TASK | UNIT de las
tablas de base de datos de las tablas ARFCSSTATE y ARFCSDATA.
- Elimina todos los bloqueos SAP establecidos en el programa actual para
los que el parámetro formal _SCOPE del módulo de función de bloqueo
se estableció en el valor 2.
- Lanza un ROLL BACK en base de datos que también termina el LUW
actual de base de datos.
- Después de completar la instrucción ROLLBACK WORK, se activa el
evento TRANSACTION_FINISHED de la clase de sistema
CL_SYSTEM_TRANSACTION_STATE, con lo que el parámetro KIND tiene

ABAP Open SQL logalisap.com


6

el valor de la constante CL_SYSTEM_TRANSACTION_STATE


=>ROLLBACK_WORK.

ABAP Open SQL logalisap.com

También podría gustarte