✒️ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
La setencia INSERT:
Nos permite ingresar datos a la Base de Datos. Ejemplo:
*Insercion de 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.
Recordar: Siempre despues de un INSERT se debe preguntar por el SY-SUBRC. Si es igual a 0 inserto correctamente, caso contrario hay un error.
Para introducir registros de una tabla interna hacemos lo siguiente.
*Insertar en la ZTABLA_USUARIOS el contenido de TI_USUARIOS
INSERT ztabla_usuarios FROM TABLE ti_usuarios.
Si existe algun registro en la base de datos con igual clave que un registro en la tabla interna se producira error (SY-SUBRC distinto que cero es error).
La sentencia UPDATE:
Permite actualizar el contenido de uno o varios registros de una tabla de Base de Datos. Ejemplo, si quisieramos actualizar un registro de una tabla hariamos lo siguiente:
*Actualizando un registro de la 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.
Recordar: Siempre despues de un UPDATE se debe preguntar por el SY-SUBRC. Si es igual a 0 actualizo correctamente, caso contrario hay un error.
Si quisieramos actualizar los registros de la tabla ZTABLA_USUARIOS que cumplan determinada condicion, ejemplo:
*Actualizo el nombre y apellido del usuario con dn1 23547312
UPDATE ztabla_usuarios SET nombre_ape = 'Ezequiel Fernandez'
WHERE dni = '23547312'.
Es recomendable que al hacer una actualizacion se ingrese tambien la clave la tabla, de lo contrario puede ser que la actualizacion se demore mucho tiempo.
Si quisieramos actualizar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna, ejemplo:
*Actualizacion de ZTABLA_USUARIOS con la tabla interna TI_USUARIOS
UPDATE ztabla_usuarios FROM TABLE ti_usuarios.
La sentencia MODIFY:
Permite modificar el registro de uno o de varios registros de una tabla de base de datos. Ejemplo:
*Modificacion de 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.
Recordar: Siempre despues de un MODIFY se debe preguntar por el SY-SUBRC. Si es igual a 0 modifico correctamente, caso contrario hay un error.
Si quisieramos modificar 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.
Nota: Si el registro que se intenta modificar no existe, este se creara en la tabla.
La sentencia DELETE:
La sentencia DELETE permite borrar el contenido de uno o varios registros de la base de datos. Ejemplo:
* Borrar 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 = 'N'.
DELETE ztabla_usuarios FROM wa_usuarios.
Recordar: Siempre despues de un DELETE se debe preguntar por el SY-SUBRC. Si es igual a 0 borro correctamente, caso contrario hay un error.
La cantidad de registros borrados se guarda en SY-DBCNT.
Para borrar los registros de ZTABLA_USUARIOS que cumpla con determinada condicion, ejemplo:
*Borrado de ZTABLA_USUARIOS de el registro con dni = '23524312'
DELETE FROM ztabla_usuarios WHERE dni = '23524312'.
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.
Actualizacion y Recuperacion de una base datos:
Para finalizar una Unidad de procesamiento Logico (LUW) de base de datos un COMMIT WORK, que realiza 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, realizamos un ROLLBACK WORK.
Un ejemplo insertando 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.
 
 
 
Sobre el autor
Publicación académica de Juan Fernando Guerra Mata, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Fernando Guerra Mata
Profesión: Analista Programador - Guatemala - Legajo: CW28U
✒️Autor de: 63 Publicaciones Académicas
🎓Cursando Actualmente: Consultor Funcional Módulo SD Nivel Inicial
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Certificación Académica de Juan Guerra