✒️ABAP / Las sentencias INSERT, UPDATE, MODIFY y DELETE Por Veronica Miramontes Varo
ABAP Las sentencias INSERT, UPDATE, MODIFY y DELETE

INSERT, UPDATE, MODIFY, DELETE, ACTUALIZACION Y RECUPERACIN DE LA BD.
La sentencia INSERT
Esta sentencia permite ingresar registros a una base de datos.
Sintaxis:
INSERT [ <área-trabajo> INTO | INITIAL LINE INTO ] <tabla> [ INDEX <índice> ].
Con <área-trabajo> INTO especificamos el área de trabajo que vamos a insertar. Si omitimos esta opción, el área de trabajo que se va a insertar será la asociada con la tabla interna. El significado de las cláusulas es el siguiente:
- INITIAL LINE TO -> inserta una línea con los valores iniciales de cada campo.
- INDEX -> Inserta una línea antes de la posición indicada en <índice> y la nueva tiene el índice <índice>.
Si la tabla tiene <índice> - 1 entradas la línea se insertara en la última posición. Si la tabla tiene menos de <índice> - 1 posiciones la línea no se insertara. Si se produce algún error al insertar la línea la variable SY-SUBRC valdrá 4, en caso contrario valdrá 0.
La sentencia UPDATE
Sentencia utilizada para modificar registros de una tabla de la base de datos.
Sintaxis:
UPDATE { <tabla> | (<tabla>) } [ CLIENT SPECIFIED ] [ FROM <área> ].
Con esta variante de la sentencia UPDATE modificamos una sola línea de la tabla especificada.
FROM -> El área de trabajo <área> sobrescribe la línea de la tabla que tenga la misma clave primaria. La tabla <tabla> debe estar declarada con la sentencias TABLES. Si no especificamos la cláusula FROM, será el contenido del área de trabajo de la propia tabla el que sobrescriba la línea de la tabla con la misma clave primaria. El área de trabajo <área>debe tener la misma longitud que el área de trabajo de la tabla. Para asegurarnos de que el área de trabajo <área> tiene la misma estructura que el área de trabajo de la tabla <tabla> se suele declarar con la sentencia DATA (o TYPE) una estructura utilizando la cláusula LIKE <tabla>.
Si la operación concluye satisfactoriamente, SY-SUBRC vale 0 y SY-DBCNT vale 1, en caso contrario SY-SUBRC vale 4 y SY-DBCNT vale 0.
La sentencia MODIFY
Se utiliza para sustituir líneas de una tabla interna.
Sintaxis:
MODIFY <tabla> [ FROM <área-trabajo> ] [ INDEX <índice> ].
El área de trabajo <área-trabajo> sustituye a la línea de la tabla interna. En el caso de tablas internas con líneas de cabecera, la cláusula FROM es opcional. Si utilizamos la cláusula INDEX, la línea que hay que reemplazar será la existente con el índice <índice>. Si el sistema puede realizar la modificación, la variable del sistema SY-SUBRC es 0. Si la tabla interna tiene menos líneas que las indicadas en <índice>, la modificación no se realiza y SY-SUBRC vale 4. Si no utilizamos la cláusula INDEX, la sentencia solo puede ser procesada en un bucle LOOP … ENDLOOP. En este caso la línea que se modificara será la que se esté tratando.
La sentencia DELETE
Para borrar líneas de una tabla interna contamos con la sentencia DELETE. Varios formatos de la sentencia nos permiten borrar líneas de una forma diferente.
Sintaxis:
DELETE <tabla>.
El sistema sólo puede procesar esta sentencia dentro de un bucle LOOP .. ENDLOOP. La sentencia DELETE borra la línea que estemos tratando en el bucle.
DELETE <tabla> INDEX <índice>.
Con la cláusula INDEX, el sistema borra la línea con el índice <índice> en la tabla interna <tabla>. Después de borrar la línea, el índice de la siguiente línea es decremento en 1. Si la operación es completada, la variable SY-SUBRC vale 0. Si la línea con el índice <índice> no existe, SY-SUBRC vale 4.
ACTUALIZACION Y RECUPERACION DE UNA BASE DE DATOS
Se recomienda que des pues de realizar alguna de las sentencias anteriores, se aplique un ROLLBACK WORK o un COMMIT WORK.
ROLLBAKC WORK: se utiliza para deshacer cambios realizados sobre una base de datos.
Si se le agrega la cláusula AND WAIT el programa se para hasta que la tarea de actualización termina.
La sentencia ROLLBACK cierra la LUW (Logical Unit of Work) actual y abre una nueva LUW. De esta forma todos los pedidos de cambios de la LUW actual son cancelados, para realizar esto se realizan los siguientes pasos:
- Se ejecutan todos los subprogramas registrados con PERFORM ON ROLLBACK.
- Se borran todos los subprogramas registrados con PERFORM ON COMMIT.
- Se genera una excepción interna en los Servicios de objetos que garantiza que los atributos de los objetos persistentes se inicialicen.
- Borra todos los módulos de funciones de actualización registrados con CALL FUNCTION ...IN UPDATE TASK de la tabla base de datos VBLOG y borra todas las RFCs transaccionales registradas con CALL FUNCTION ... IN BACKGROUND TASK de las tablas de la base de datos ARFCSSTATE y ARFCSDATA.
- Se eliminan todos los bloqueos de SAP establecidos en el programa actual en el que el parámetro formal _SCOPE del módulo de función de bloqueo se estableció en el valor 2.
- Dispara el ROLLBACK o vuelta atrás a la base de datos, que también finaliza la LUW actual.
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.
 
 
 
Sobre el autor
Publicación académica de Veronica Esmeralda Miramontes Varo, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.
Veronica Esmeralda Miramontes Varo
Profesión: Maestra en Ciencias de la Computaci - Mexico - Legajo: DV64Z
✒️Autor de: 95 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Hola, soy veronica miramontes, mexicana. estoy aquí para aprender sobre el mundo de sap. espero obtener los mejores conocimientos y poder contribuir en algo a la comunidad cvosoft.
Certificación Académica de Veronica Miramontes

























