✒️ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
LA SENTENCIA INSERT
Permite introducir nuevos registros a una tabla de una base de datos. Ejemplo:
*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.
NOTA: Siempre después de un INSERT se debe preguntar por el SY-SUBRC. Si es cero, el registro se inserto correctamente, caso contrario, se produjo un error y el registro no se inserto.
Si quisieramos insertar 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.
____________________________________________________________________________
LA SENTENCIA UPDATE
Permite actualizar el contenido de uno o varios registros de una tabla de base de datos. Ejemplo:
*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.
NOTA: 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.
Para actualizar registros de una tabla que cumplan determinada condición se debe realizar asi:
*Actualizo el nombre y apellido del usuario con DNI 23547312
UPDATE ztabla_usuarios SET nombre_ape = 'Ezequiel Fernandez'
WHERE dni = '23547312'.
Si quisiéramos actualizar todos los registros de una tabla a partir de una tabla interna se debe hacer asi:
*Actualizo ZTABLA_USUARIOS con la tabla interna TI_USUARIOS
UPDATE ztabla_usuarios FROM TABLE ti_usuarios.
______________________________________________________
LA SENTENCIA MODIFY
Permite modificar el contenido de uno o varios registros de una tabla de base de datos. Ejemplo:
*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.
NOTA: 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.
Para modificar todos los registros de una tabla a partir del contenido de una tabla interna se debe realizar de la siguiente forma:
*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 en la tabla, este se creará.
OJO: Al momento de insertar,actualizar,modificar una Base de Datos no es necesario especificar el mandante, SAP toma el mandante que este activo en ese momento automaticamente. Si quisieramos IMPACTAR manualmente otro mandante utilizamos la clausula CLIENT ESPECIFY
______________________________________
LA SENTENCIA DELETE
Permite borrar el contenido de uno o varios registros de una tabla de base de datos. Ejemplo:
*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.
NOTA: 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.
Para borrar los registros de una tabla que cumplan determinada condición, se debe realizar de la siguiente forma:
*Borro de ZTABLA_USUARIOS el registro con dni = '23547312'
DELETE FROM ztabla_usuarios WHERE dni = '23547312'.
Para borrar TODOS los registros de una tabla a partir del contenido de una tabla interna se dede hacer asi:
*Borro ZTABLA_USUARIOS con la tabla interna TI_USUARIOS
DELETE ztabla_usuarios FROM TABLE ti_usuarios.
NOTA: Estas instrucciones INSERT, DELETE, UPDATE y MODIFY se deben usar lo menos posible siempre se debe hacer con las TRANSACCIONES ESTANDAR DE SAP o las técnicas de BACH INPUT o BAPYS, esto debido a que no es fácil conocer la compleja estructura de TODA la BD de SAP y podríamos generar una inconsistencia.
__________________________________________________
ACTUALIZACIÓN Y RECUPERACIÓN DE UNA BASE DE DATOS
Para finalizar una LUW (unidad lógica de procesamiento de una BD) 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.
COMMIT WORK: es una sentencia ABAP que confirma los cambios realizados sobre una BD. Si se le agrega la clausula AND WAIT el programa se PARA hasta que la tarea de actualización termine.
Si deseamos deshacer todas las operaciones realizadas sobre la base de datos desde el último COMMIT WORK, realizaremos un ROLLBACK WORK.
ROLLBACK WORK: es una sentencia ABAP que se utiliza para deshacer los cambios realizados sobre una BD. Si se le agrega la clausula AND WAIT el programa se PARA hasta que la tarea de actualización termine.
Ejemplo:
INSERT INTO ztabla_usuarios VALUES wa_usuarios.
IF sy-subrc EQ 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
NOTA: 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 Alexander Castellanos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexander Castellanos
Profesión: Ingeniero de Sistemas - Colombia - Legajo: JS42A
✒️Autor de: 67 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Alexander Castellanos