
1. Concepto de Unidad de Procesamiento Lógico (LUW) Cuando ejecutamos sentencias como INSERT, UPDATE, MODIFY o DELETE en un programa ABAP, los cambios no se graban físicamente en la base de datos de inmediato. Estos cambios permanecen en un estado temporal hasta que se cierra la "Unidad de Procesamiento Lógico" (LUW). Esto permite asegurar la integridad de los datos: o se graban todos los cambios de un proceso, o no se graba ninguno.
2. La Sentencia COMMIT WORK (Confirmación) Es la sentencia utilizada para confirmar los cambios realizados.
- Función: Realiza la actualización física en la base de datos, haciendo que cualquier modificación sea irrevocable.
- Visibilidad: Hasta que no se ejecuta el COMMIT, los cambios no son visibles para otros usuarios ni en el browser de datos (SE16).
- Ejecución Automática: Cuando un programa ABAP finaliza su ejecución normalmente, el sistema ejecuta un COMMIT WORK de manera automática.
3. La Sentencia ROLLBACK WORK (Recuperación/Deshacer) Es la sentencia utilizada para deshacer los cambios realizados dentro de la LUW actual.
- Función: Restaura la base de datos al estado en que se encontraba antes del último COMMIT. Deshace todas las operaciones de inserción, modificación o borrado pendientes.
- Limitación: El ROLLBACK no puede deshacer cambios que ya hayan sido confirmados previamente con un COMMIT WORK.
4. Metodología de Trabajo (Buenas Prácticas) Para garantizar la consistencia de los datos, se debe seguir una estructura lógica después de ejecutar cualquier sentencia SQL de modificación (INSERT, UPDATE, etc.):
- Verificar SY-SUBRC: Inmediatamente después de la sentencia SQL, se evalúa esta variable del sistema.
- Si es exitoso (SY-SUBRC = 0): Se ejecuta COMMIT WORK para guardar los cambios.
- Si hay error (SY-SUBRC <> 0): Se ejecuta ROLLBACK WORK para dejar todo como estaba y evitar inconsistencias.
Ejemplo de lógica:
INSERT ztabla_usuarios FROM wa_usuarios. IF sy-subrc EQ 0. COMMIT WORK. ELSE. ROLLBACK WORK. ENDIF.
Analogía: Imagina que estás escribiendo un documento importante en Word:
- Las sentencias SQL (INSERT, UPDATE) son como escribir párrafos nuevos o corregir faltas de ortografía. Los ves en tu pantalla, pero el archivo en el disco duro aún no ha cambiado.
- COMMIT WORK es presionar el botón "Guardar" (Save). Ahora los cambios son permanentes en el archivo. Si se corta la luz después de esto, el texto sigue ahí.
- ROLLBACK WORK es presionar "Cerrar sin guardar". Todo lo que escribiste desde la última vez que guardaste se pierde y el documento vuelve a su versión original.