✒️ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
La sentencia INSERT
La sentencia INSERT permite introducir nuevos registros a una base de datos.
Por ejemplo, si quisiéramos introducir un nuevo registro en la tabla ZTABLA_USUARIOS haríamos lo siguiente:
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 zoqs36a_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 quisiéramos introducir todos los registros de una tabla interna haríamos lo siguiente:
INSERT zoqs36a_usuarios FROM TABLE ti_usuarios.
Si existe algún registro en la base de datos con igual clave que un registro en la tabla interna se producirá un error
(SY-SUBRC distinto de cero).
La sentencia UPDATE
La sentencia UPDATE permite actualizar el contenido de uno o varios registros de una tabla BD registros de una tabla BD.
Por ejemplo, si quisiéramos actualizar un registro de una tabla base de datos haríamos lo siguiente:
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = '21727679'.
wa_usuarios-nombre_ape = 'Juan Graco'.
wa_usuarios-estado_usu = 'I'.
UPDATE zoqs36a_usuarios FROM wa_usuarios.
Siempre después de un UPDATE se debe preguntar por el SY-SUBRC.
Si es cero, el registro se actualizo correctamente, caso contrario, se produjo un error y el registro no se actualizo.
Si quisiéramos actualizar los registros de la tabla ZTABLA_USUARIOS que cumplan determinada condición, haríamos lo siguiente:
UPDATE zoqs36a_usuarios SET nombre_ape = 'Ezequiel Fernandez'
WHERE dni = '21727679'.
Si quisiéramos actualizar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna haríamos lo siguiente:
UPDATE zoqs36a_usuarios FROM TABLE ti_usuarios.
La sentencia MODIFY
La sentencia MODIFY permite modificar el contenido de uno o varios registros de una tabla base de datos.
Por ejemplo, si quisiéramos modificar un registro de una tabla base de datos haríamos lo siguiente
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = '21727679'.
wa_usuarios-nombre_ape = 'Juan Graco'.
wa_usuarios-estado_usu = 'N'.
MODIFY zoqs36a_usuarios FROM wa_usuarios.
Siempre después de un MODIFY se debe preguntar por el SY-SUBRC.
Si es cero, el registro se modifico correctamente, caso contrario, se produjo un error y el registro no se modifico.
Si quisiéramos modificar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna haríamos lo siguiente:
MODIFY zoqs36a_usuarios FROM TABLE ti_usuarios.
Si el registro que se intenta modificar, no existe en la tabla, este se creará.
La sentencia DELETE
La sentencia DELETE permite borrar el contenido de uno o varios registros de una tabla base de datos.
Por ejemplo, si quisiéramos borrar un registro de una tabla base de datos haríamos lo siguiente:
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = '21727679'.
wa_usuarios-nombre_ape = 'Juan Graco'.
wa_usuarios-estado_usu = 'N'.
DELETE zoqs36a_usuarios FROM wa_usuarios.
Siempre después de un DELETE se debe preguntar por el SY-SUBRC.
Si es cero, el registro se borro correctamente, caso contrario, se produjo un error y el registro no se borro.
La cantidad de registros borrados se guarda en SY-DBCNT.
Si quisiéramos borrar los registros de la tabla ZTABLA_USUARIOS que cumplan determinada condición, haríamos lo siguiente:
DELETE FROM zoqs36a_usuarios WHERE dni = '21727679'.
Si quisiéramos borrar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna haríamos lo siguiente:
DELETE zoqs36a_usuarios FROM TABLE ti_usuarios.
Actualización y recuperación de una base de datos
Para finalizar una unidad de procesamiento lógico LUW de base de datos se utiliza un COMMIT WORK,
que realiza un update físico en la base de datos, haciendo irrevocable cualquier modificación en la base de datos.
Si deseamos deshacer todas las operaciones realizadas sobre la base de datos desde el último COMMIT WORK
, realizaremos un ROLLBACK WORK.
Veamos un ejemplo al insertar registros en la base de datos ZTABLA_USUARIOS:
* Inserto en la ZTABLA_USUARIOS le contenido de TI_USUARIOS
INSERT into zoqs36a_usuarios values wa_usuarios.
IF sy-subrc EQ 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
A continuacion esta el programa completo de la leccion
 
 
 
Sobre el autor
Publicación académica de Alex Francisco Lemos Collazos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alex Francisco Lemos Collazos
Profesión: Ingeniero en Sistemas - Colombia - Legajo: QS36A
✒️Autor de: 174 Publicaciones Académicas
🎓Cursando Actualmente: Master S/4HANA Material Management
🎓Egresado de los módulos:
- Máster Material Management en SAP S/4HANA LOGISTIC
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Inicial