✒️ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
INSERT, UPDATE, MODIFY, DELETE y actualización y recuperación de la BD 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:
* 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.
RECUERDA: 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:
* Inserto en la tabla ZTABLA_USUARIOS el contenido de TI_USUARIOS
INSERT ztabla_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 UPDATELa sentencia UPDATE permite actualizar el contenido de uno o varios registros de una tabla base de datos registros de una tabla base de datos. Por ejemplo, si quisiéramos actualizar un registro de una tabla base de datos haríamos 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.
RECUERDA: 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:
* Actualizo el nombre y apellido del usuario con Dni 23547312
UPDATE ztabla_usuarios SET nombre_ape = 'Ezequiel Fernandez'
WHERE dni = '23547312'.
AUDIO TIPS 1: Al utilizar la sentencia UPDATE para actualizar una tabla base de datos es importante que ingresemos la clave de la tabla como condición de la actualización ya que si no es probable que la actualización se demore mucho tiempo.
Si quisiéramos actualizar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna haríamos lo siguiente:
* Actualizo ZTABLA_USUARIOS con la tabla interna TI_USUARIOS
UPDATE ztabla_usuarios FROM TABLE ti_usuarios.
La sentencia MODIFYLa 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:
* 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.
RECUERDA: Siempre después 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 quisiéramos modificar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna haríamos lo siguiente:
* Modifico los registros de ZTABLA_USUARIOS con TI_USUARIOS
MODIFY ztabla_usuarios FROM TABLE ti_usuarios.
SABIAS QUE... Si el registro que se intenta modificar, no existe en la tabla, este se creará.
AUDIO TIPS 2: Al momento de impactar sobre una tabla base de datos no es necesario especificar el mandante ya que este control es realizado en forma automática por SAP. Siempre se procesará el mandante en uso. Si quisieramos controlar manualmente el mandante en una actualización de una tabla base de datos utilizaremos la cláusula CLEAN SPECIFY. Es decir, si queremos obtener o modificar datos de un mandante diferente al que estamos procesando.
La sentencia DELETELa 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:
* Borro 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.
RECUERDA:
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:
* Borro de ZTABLA_USUARIOS el registro con dni = '23547312'
DELETE FROM ztabla_usuarios WHERE dni = '23547312'.
Si quisiéramos borrar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna haríamos lo siguiente:
* Borro ZTABLA_USUARIOS con la tabla interna TI_USUARIOS
DELETE ztabla_usuarios FROM TABLE ti_usuarios.
AUDIO TIPS 3: Es importante tener en cuenta que las instrucciones INSERT, DELETE, MODIFY y UPDATE deben ser utilizadas lo menor posible, siempre se debe intentar insertar o modificar datos mediante las transacciones estándar de SAP o mediante las técnicas de BATCH INPUT o BAPIS. Esto se debe a que no siempre es fácil conocer la compleja estructura de toda la base de datos de sap y así nos aseguramos de no producir alguna inconsistencia en la base de datos.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Ixhel Lopez Valencia
Sobre el autor
Publicación académica de Vismark Eyner Sevillano Moreno, en su ámbito de estudios para la Carrera Consultor ABAP.
Vismark Eyner Sevillano Moreno
Profesión: Tecnologo en Sistemas - Colombia - Legajo: KN43C
✒️Autor de: 62 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Aprender todo lo relacionado con programación sap abap, para desenvolverme en el área laboral en el sector de programación abap.
Certificación Académica de Vismark Sevillano