📘ABAP - Modify
Definición de Modify
La sentencia ABAP MODIFY que se utiliza para modificar datos, tablas internas o tablas de bases de datos en SAP.
La sintaxis de la sentencia varias dependiendo si lo que se va a actualizar es una tabla base de datos o una tabla interna.
La particularidad que presenta la sentencia MODIFY cuando la utilizamos para modificar tablas bases de datos es que en caso de no existir en la tabla base de datos el registro que se desea modificar entonces el mismo será creado.
Veamos un ejemplo de utilización de la sentencia MODIFY para la modificación de tablas bases de datos:
Supongamos que contamos con una tabla transparente ZTABLA_USUARIOS y deseamos modificar un registro de la misma. Una posibilidad que tenemos es cargar el registro completo en una estructura y luego utilizar la opción de la sentencia MODIFY que nos permite modificar un solo registro de la tabla:
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.
Otra alternativa que podemos utilizar si tenemos que modificar más de un registro de una tabla es cargar en una tabla interna los registros a modificar y luego ejecutar la siguiente variante de la sentencia MODIFY:
MODIFY ztabla_usuarios FROM TABLE ti_usuarios.
Cuando trabajamos con tabla internas y deseamos modificar un registro particular de la tabla interna tenemos dos posibilidades para utilizar la sentencia MODIFY.
Una de ellas es utilizar la cabecera de la tabla interna, siendo que a la tabla interna se le haya creado una cabecera al momento de su declaración:
DATA: BEGIN OF wa_numeros,
v_numero1 TYPE i VALUE '10',
v_numero2 TYPE i VALUE '15',
v_numero3 TYPE i VALUE '30',
v_total TYPE i,
v_convertido(50) TYPE c,
END OF wa_numeros.
DATA: ti_numeros LIKE STANDARD TABLE OF wa_numeros.
MODIFY ti_numeros FROM wa_numeros.
La otra opción consiste en declarar a la tabla interna WITH HEADER LINE y al momento de realizar el MODIFY a la misma lo haremos de la siguiente forma:
MODIFY ti_numeros.