✒️ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE
INSERT
Open SQL
Es el Lenguaje estructurado de consulta. Es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas.
La gran ventaja que nos proporciona el OPEN SQL de SAP es que nos independiza del motor de base de datos que se haya instalado en la base de datos, es decir, ya sea que la base de datos sea Oracle o Hana o Informix, la forma de acceder a los datos será siempre la misma.
Se llaman sentencias Open SQL a aquellas propias de ABAP que simulan un subconjunto de sentencias SQL (“Structured Query Language”).
En general, las sentencias SQL (del tipo que sean) se usan para el acceso a datos en tablas. Las Open SQL tratan tablas de bases de datos (es decir, las tablas del Diccionario de Datos) mientras que las Native SQL tratan tablas internas).
Las sentencias Open SQL son:
SELECT (lectura de registros de una tabla)
INSERT (inserción de un registro en una tabla)
UPDATE (modificación de un registro)
OPEN CURSOR (abre un cursor)
FETCH (avanza una posición el cursor)
CLOSE CURSOR (cierra un cursor)
COMMIT WORK (actualiza los últimos cambios de la BD, confirmando que se hacen las modificaciones)
ROLLBACK WORK (deshace las modificaciones hechas a la BD volviendo al último checkpoint)
ABAP SQL Insert
La sentencia INSERT permite introducir nuevos registros a una tabla base de datos.
Veamos como seria la sintaxis de la sentencia INSERT en la inserción de un registro en una tabla base de datos:
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt .
wa_usuarios-documento = ‘98256873’ .
wa_usuarios-nombre_ape = ‘Juan Gonzalez Cruz’ .
wa_usuarios-direccion = ‘Lamadrid 1652’.
INSERT INTO ZTABLA_USUARIOS VALUES WA_USUARIOS.
IF sy-subrc EQ 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
Es sumamente importante luego de realizar un INSERT a una tabla base de datos preguntar por el contenido de la variable del sistema SY-SUBRC, si es cero, el registro se insertó correctamente, caso contrario, se produjo un error y el registro no se insertó.
Ahora bien que sucede si intentamos insertar en una tabla base de datos un registro cuya clave ya existen en la tabla base de datos. Lo que sucederá es que el SY-SUBRC será distinto de cero y el registro no se insertará.
*******************
Sy-subrc
Es la variable del sistema que devuelve un código de retorno luego de la ejecución de una sentencia ABAP.
Si la sentencia se ejecutó correctamente el código de retorno será 0 (cero). Caso contrario, si la ejecución se realizó con errores, el código de retorno será distinto de cero.
Luego de la ejecución de una sentencia en ABAP, es sumamente importante preguntar por el sy-subrc, especialmente pensando en sentencias que actualizan las tablas pertenecientes a la base de datos sistema tal como UPDATE, INSERT o DELETE.
Esta costumbre es considerada una "muy buena práctica de programación".
Dentro de la estructura SYST existen muchas otras variables del sistema que son sumamente útiles tales como SY-DATUM que almacena la fecha del sistema o SY-UZEIT que almacena la hora del sistema. Es importante tenerlas en cuenta y chequearla a través de la transacción estándar SE11.
********************
Commit Work
La sentencia ABAP COMMIT WORK se utiliza para confirmar los cambios realizados sobre una base de datos.
La utilización de la sentencia COMMIT WORK resulta fundamental luego de la ejecución de las sentencias INSERT, UPDATE o MODIFY sobre una tabla de la base de datos.
Si se le agrega la cláusula AND WAIT el programa se para hasta que la tarea de actualización termina.
Veamos un ejemplo de su utilización:
CALL FUNCTION 'Z_BLOQUEAR_DOCUMENTOS'
EXPORTING
i_lockr = v_lock
I_FDATE = wa_fecha
I_TDATE = wa_fecha_hasta
i_accion = 'B'
tables
it_documentos = ti_documentos
EXCEPTIONS
BLOQUEO_ERRONEA = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID 'ZG' TYPE 'I' NUMBER '074'
WITH 'Los Documentos de la CC ' ti_cuentas_vkont
'No se bloqueron'.
ROLLBACK WORK.
ELSE.
COMMIT WORK.
ENDIF.
En el código anterior ejecutamos el módulo de funciones Z_BLOQUEAR_DOCUMENTOS el cual bloquea los documentos especificados en TI_DOCUMENTOS.
Si el bloqueo funciono correctamente, es decir se actualizaron correctamente las tablas de bloqueo entonces realizaremos un COMMIT WORK.
Si se produjo algún error al intentar bloquear, entonces realizaremos un ROLLBACK WORK para volver atrás los cambios realizados a las tablas de la base de datos.
UPDATE
La sentencia ABAP UPDATE se utiliza para actualizar los registros de una tabla de base de datos en SAP.
La sentencia UPDATE presenta diversas variantes de ejecución, veamos a continuación algunas de ellas:
* 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.
* Actualizo el nombre y apellido del usuario con Dni 23547312
UPDATE ztabla_usuarios SET nombre_ape = 'Ezequiel Fernandez'
WHERE dni = '23547312'.
* Actualizo ZTABLA_USUARIOS con la tabla interna TI_USUARIOS
UPDATE ztabla_usuarios FROM TABLE ti_usuarios.
Al usar UPDATE a una tabla base de datos es importante que entre los campos que actualizo se encuentre la clave de la tabla base de datos, ya que sino puede que demore mucho tiempo la actualización
ABAP SQL Update
La sentencia UPDATE permite actualizar el contenido de uno o varios registros de una tabla base de datos.
Veamos como seria la sintaxis de la sentencia UPDATE en la actualización de un registro en una tabla base de datos:
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt .
wa_usuarios-documento = ‘98256873’ .
wa_usuarios-nombre_ape = ‘Juan Gonzalez Cruz’ .
wa_usuarios-direccion = ‘Lamadrid 1652’.
UPDATE ZTABLA_USUARIOS FROM TABLE WA_USUARIOS.
IF sy-subrc EQ 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
Es sumamente importante luego de realizar un UPDATE a una tabla base de datos preguntar por el contenido de la variable del sistema SY-SUBRC, si es cero, el registro se actualizó correctamente, caso contrario, se produjo un error y el registro no se actualizó. Ahora bien que sucede si intentamos actualizar en una tabla base de datos un registro cuya clave ya no existen en la tabla base de datos. Lo que sucederá es que el SY-SUBRC será distinto de cero y el registro no se actualizará.
 
 
 
Sobre el autor
Publicación académica de Nestor Adrian Lara, en su ámbito de estudios para la Carrera Consultor ABAP.
Nestor Adrian Lara
Profesión: Diseño Gráfico - Argentina - Legajo: BZ89W
✒️Autor de: 11 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Nestor Lara