Manipular tablas de diccionario

INSERT:
Nos permite introducir nuevos registros en una tabla de diccionario.

Para 1 solo registro.
wa_usuarios-dni = '12345678x'.
wa_usuarios-nombre = 'Pepito'
INSERT INTO z_usuarios VALUES wa_usuarios.

Para Introducir todos los registros contenidos en una tabla interna.
INSERT z_usuarios FROM TABLE ti_usuarios.
* Es una buena práctica comprobar que los campos claves a insertar no existan en la tabla de diccionario ya que nos daría error por clave duplicada. 
UPDATE:
Nos permite actualizar el contenido de uno o varios registros de una tabla de diccionario.
Para actualizar 1 registro
wa_usuarios-dni = '76545678x'.
wa_usuarios-nombre = 'Armando'
UPDATE z_usuarios FROM wa_usuarios.

Para Actualizar 1 registro que cumpla una condición específica
UPDATE z_usuarios SET nombre = 'juan carlos' where dni = '76545678x'.
Cuando el DNI sea igual que 76545678x actualizara el nombre a Juan Carlos.

Para actualizar todos los registros con el contenido recuperado en una tabla interna.
UPDATE z_usuarios FROM TABLE ti_usuarios.

* Si el registro que estamos intentando actualizar no existe en la tabla de diccionario, no se llevará a cabo ninguna acción.
* Si no indicamos un campo con where comparará por los campos claves.
MODIFY:
Nos permite modificar el contenido de uno o varios registros de una tabla de diccionario.

Para modificar 1 registro
wa_usuarios-dni = '58652354c'.
wa_usuarios-nombre = 'Maria'
MODIFY z_usuarios FROM wa_usuarios.

Para modificar todos los registros con el contenido recuperado en una tabla interna.
MODIFY ztabla_usuario FROM TABLE ti_usuarios.
Ha diferencia de update, si el registro que se intenta modificar no existiera este será creado como si fuese insertado.
DELETE:
Nos permite borrar el contenido de uno o varios registros de una tabla de diccionario.

Para borrar 1 solo registro
wa_usuarios-dni = '99883322v'.
wa_usuarios-nombre = 'Isabel'
DELETE z_usuarios FROM wa_usuarios.

Para borrar los registros que cumplan una determinada condición:
DELETE FROM z_usuarios WHERE dni = '99883322v'.
Compara solamente el campo dni, borrando todos los que coincidan.

Para borrar todos los registros que coincidan con alguno de los registros del contenido recuperado en una tabla interna.
DELETE z_usuarios FORM TABLE ti_usuarios.
Actualización recuperación de una base de datos:
Si en un momento concreto del programa deseamos que los cambios sean permanentes podemos usar COMMIT WORK, que actualizará la base de datos, aunque esto se hace siempre al finalizar el programa.
Si queremos deshacer todas las operaciones realizadas sobre la base de datos desde el último COMMIT WORK, realizaremos un ROLLBACK WORK,
COMIT 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.
ROLLBACK WORK = Sentencia ABAP que se utiliza para deshacer los cambios realizados sobre una base de datos. Si se le agrega la clausula AND WAIT el programa se para hasta que la tarea de actualizacion termina.

EJEMPLO:
INSERT INTO z_usuarios VALUES wa_usuarios.
IF sy-subrc = '0'.
COMMIT WORK.
ELSE,
ROLLBACK WORK.
ENDIF.

NOTA:
Siempre es buena práctica comprobar la variable del sistema sy-subrc que contiende siempre el resultado de la última operación.
La cantidad de registros borrados se almacena en sy-dbcnt.

Fuente oficial:
https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abenopen_sql_writing.htm?file=abenopen_sql_writing.htm

Comentarios