✒️ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
IMPORTANTE: Después de ejecutar una sentencia Insert, Update, Modify o Delete se debe preguntar sl SY-SUBRC, si el resultado es 0 el registro se inserto, borro o actualizo , de forma correcta, de lo contrario no se realizara el procedimiento correcto y el sy-subrc sera diferente de 0.
La sentencia INSERT:
Permite insertar nuevos registros en una base de datos:
Ejemplo: Insertamos un registro en ZTABLA_USUARIOS
Clear wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = '41314789'.
wa_usuarios-nombre_ape = 'Juan Grace'.
a_usuarios-estado_usu = 'A'.
INSERT Into ztabla_usuarios values wa_usuarios.
Ejemplo 2: Insertamos en la ZTABLA_USUARIOS en contenido de la tabla interna TI_USUARIOS.
INSERT ztabla_usuarios FROM TABLE ti_usuarios.
Nota: Si existe algún registro en la BD con igual clave que un registro en la tabla interna, se producirá un error en el programa.
La sentencia UPDATE:
Permite actualizar el contenido de uno o varios registros de una tabla BASE DE DATOS
Ejemplo: Actualizo un registro de la tabla ZTABLA_USUARIOS
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = '1094922353'.
wa_usuarios-nombre_ape = 'Mauro Moreno'.
wa_usuarios-estado_usu = 'I'.
UUPDATE ztabla_usuarios FROM wa_usuarios.
Ejemplo 2: Actualizar el nombre y apellido del usuario con DNI 1094922353
Update ztabla_usuarios set nombre_ape = 'Andres Mauricio' where dni = '10949223539'.
Ejemplo3: Actualizar todos los registros de la tabla ZTABLA_USUARIOS a partir del contenido de una tabla interna
UPDATE ztabla_usuarios from Table ti_usuarios.
La sentencia MODIFY:
Permite modificar el contenido de uno o varios registros de una tabla base de datos.
Ejemplo: Modificamos un registro en la ZTABLA_USUARIOS
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = '1094922353'.
wa_usuarios-nombre_ape = ' Mauro Moreno'.
wa_usuarios-estado_usu = 'N'.
MODIFY ztabla_usuarios FROM wa_usuarios.
Ejemplo 2: Modificamos todos los registros de ZTABLA_USUARIOS a partir del contenido de la tabla interna TI_USUARIOS.
MODIFY ztabla_usuarios from table ti_usuarios.
Nota: Si el registro que se intenta modificar, no existe en la tabla , este se creara !
*Al momento de impactar una BD no es necesario especificar el mandante ya que SAP realiza este control de forma automática,
La sentencia DELETE:
Permite borrar el contenido de uno o varios registros de una tabla base de datos.
Ejemplo: Borrar un registro de la tabla ZTABLA_USUARIOS
CLEAR Wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = '1094922353'.
wa_usuarios-nombre_ape = 'Mauro Moreno'.
wa_usuarios-estado_usu = 'N'.
DELETE ztabla_usuarios From wa_usuarios.
Ejemplo 2: Borrar de ztabla_usuarios el registro con dni '1094922353'.
DELETE FROM ZTABLA_USUARIOS WHERE DNI = '1094022353'.
Ejemplo 3: Borrar todos los registros de la tabla ztabla_usuarios a partir de una tabla interna .
DELETE ZTABLA_USUARIOS FROM Table ti_usuarios.
NOTA: La cantida de registros borrados se guarda en SY-DBCNT.
IMPORTANTE*** Las sentencias Insert, Modify, Delete, Update , se deben usar lo menor posible , se debe usar las transacciones estándar de SAP o las técnicas como bachinput, esto se debe a que no siempre se conoce la compleja estructura de la BD de SAP y así nos aseguramos de no cometer una inconsistencia en la BD.
Actualización y recuperación de una base de datos:
LUW: unidad lógica de procesamiento de una base de datos.
COMMIT WORK: sentencia ABAP que se utiliza para confirmar los cambios realizados sobre una base de datos. Si se le agrega la claúsula AND WAIT el programa se para hasta que la tarea de actualización termina. En otras palabras, realiza un update fisico en la base de datos, haciendo irrevocable cualquier modificación en la base de datos.
ROLLBACK WORK: sentencia ABAP que se utiliza para deshacer los cambios realizados sobre una base de datos. Si se le agrega la claúsula AND WAIT el programa se para hasta que la tarea de actualización termina. O sea si deseamos deshacer todas las operaciones realizadas sobre la base de datos desde el último COMMIT WORK usamos ROLLBACK WORK.
Ejemplo:Insertar registros en la BD 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 Andrés Mauricio Moreno Garzón, en su ámbito de estudios para la Carrera Consultor ABAP.
Andrés Mauricio Moreno Garzón
Profesión: Ingeniero de Sistemas - Colombia - Legajo: SG47W
✒️Autor de: 29 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Andrés Moreno