✒️ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
Sentencia INSERT
Si quisieramos introducir un nuevo registro en la tabla ZTABLA_USUARIOS haríamos lo siguiente:
* Inserto 1 registro en ZTABLA_USUARIOS
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = '21727679'.
wa_usuarios-nombre_ape = 'Juan Graco'.
wa_usuarios-estado_usu = 'A'.
INSERT into ztabla_usuarios values wa_usuarios.
Siempre después de un INSERT se debe preguntar por el SY-SUBRC.
Si es cero, el registro se insertó correctamente, caso contrario, se produjo un error y el registro no se insertó.
Si quisieramos introducir todos los registros de una tabla interna haríamos lo siguiente:
* Inserto en la ZTABLA_USUARIOS el contenido de TI_USUARIOS
INSERT ztabla_usuarios FROM TABLE ti_usuarios.
Sentencia UPDATE
Si quisieramos actualizar un registro de una tabla base de datos hariamos lo siguiente:
* Actualizo un registro de la tabla ZTABLA_USUARIOS
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = ' 21727679 '.
wa_usuarios-nombre_ape = ' Juan Graco '.
wa_usuarios-estado_usu = ' I '.
UPDATE ztabla_usuarios FROM wa_usuarios.
Siempre despues de un UPDATE se debe preguntar por el SY-SUBRC.
Si es cero, el registro se actualizó correctamente, si no lo es, se produjo un error y el registro no se actualizó.
Si quisieramos actualizar los registros de la tabla ZTABLA_USUARIOS que cumplan determinada condición hariamos lo siguiente:
* Actualizo el nombre y apellido del usuarios con Dni 23547312
UPDATE ztabla_usuarios SET nombre_ape = ' Ezequiel Fernandez '
WHERE dni = ' 23547312 '.
Si quisieramos actualizar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna hariamos lo siguiente:
* Actualizo ZTABLA_USUARIOS con la tabla interna TI_USUARIOS
UPDATE ztabla_usuarios FROM TABLE ti_usuarios.
Sentencia MODIFY
Esta sentencia permite modificar el contenido de uno o varios registros de una tabla base de datos. Por ejemplo, si quisieramos modificar un registro de una tabla base de datos hariamos lo siguiente:
* Modifico un registro en ZTABLA_USUARIOS
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = ' 21727679 '.
wa_usuarios-nombre_ape = ' Juan Graco '.
wa_usuarios-estado_usu = ' N '.
MODIFY ztabla_usuarios FROM wa_usuarios.
Siempre despues de un MODIFY se debe preguntar por el SY-SUBRC-
Si es cero, el registro se modificó correctamente, caso contrario, se produjo un error y el registro no se modificó.
Si quisieramos modificar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna hariamos lo siguiente:
* Modifico los registros de ZTABLA_USUARIOS con TI_USUARIOS
MODIFY ztabla_usuarios FROM TABLE ti_usuarios.
Si el registro que se intenta modificar no existe en la tabla, este se creará.
Al momento de impactar sobre una tabla base de datos no es necesario especificar el mandante ya que ese control es realizado en forma automatica por SAP, siempre se procesará el mandante en uso.
Si quisieramos controlar manualmente el mandante en una actualizacion de una tabla base de datos utilizaremos la cláusula CLIENT SPECIFIED, es decir, si queremos obtener o modificar datos de un mandante diferente al que estamos procesando.
Sentencia DELETE
Si queremos borrar un registro de una tabla base de datos hacemos lo siguiente:
* Borro un registro de la tabla ZTABLA_USUARIOS
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = ' 21786478 '.
wa_usuarios-nombre_ape = ' Juan Graco '.
wa_usuarios-estado_usu = ' N '.
DELETE ztabla_usuarios FROM wa_usuarios.
Siempre despues de un DELETE se debe preguntar por el SY-SUBRC.
Si es cero, el registro se ha borrado correctamente, si no, se produjo un error y el registro no se ha borrado.
La cantidad de registros borrados se guarda en SY-SUBRC.
Si quisieramos borrar los registros de la tabla ZTABLA_USUARIOS que cumplan determinada condición hariamos lo siguiente:
* Borro de ZTABLA_USUARIOS el registro con dni = ' 23547312 '
DELETE FROM ztabla_usuarios WHERE dni = ' 23547312 '.
Si quisieramos borrar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna hariamos lo siguiente:
* Borro ZTABLA_USUARIOS con la tabla interna TI_USUARIOS
DELETE ztabla_usuarios FROM TABLE ti_usuarios.
Es importante tener en cuenta que las instrucciones INSERT, DELETE, MODIFY, UPDATE, deben ser utilizadas lo menos posible, siempre se debe intentar insertar o modificar datos mediante las transacciones estándar de SAP o mediante las tecnicas de BATCH INPUT o BADIs. Esto se debe a que no siempre es facil conocer la compleja estructura de toda la base de datos de SAP y asi nos aseguramos de no producir alguna inconsistencia en la base de datos.
Actualización y recuperación de una base de datos
Al finalizar una unidad de procesamiento lógico LUW de base de datos se usa un COMMIT WORK, que se realiza mediante un update fisico en la base de datos, haciendo irrevocable cualquier modificacion en la base de datos.
Si deseamos deshacer todas las operaciones realizadas sobre la base de datos desde el ultimo COMMIT WORK realizaremos un ROLLBACK WORK.
Ejemplo al insertar registros en la base de datos ZTABLA_USUARIOS:
INSERT into ztabla_usuarios values wa_usuarios.
IF sy-subrc EQ 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
Es conveniente, después de un INSERT, MODIFY, UPDATE o DELETE realizar un COMMIT WORK y ROLLBACK WORK.
 
 
 
Sobre el autor
Publicación académica de Manuel Antonio Moncada Vera, en su ámbito de estudios para la Carrera Consultor ABAP.
Manuel Antonio Moncada Vera
Profesión: Ingeniero en Informatica - Colombia - Legajo: JT58S
✒️Autor de: 68 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Manuel Moncada