Vamos a ver, por el momento tengo entendido que el update es para uso de base de datos o tablas del diccionario, mientras que el modify es para tablas interna y tambien para tablas de diccionario.
Digo por el momento, porque todo puede cambiar, no soy dueño del lenguaje abap ^^
La version de netweaver que estoy usando es 7.4 y por lo menos aqui, cuando intendo realizar un update a la tabla interna me da un error de compilacion.
Que me dicen ustedes.
NOTA: La mejor manera de aprender es debatiendo sanamente, me gustaria saber si en alguna version de SAP el update se puede usar en tablas internas.
Update es únicamente para actualizar Tablas de Base de Datos.
Hay que tener en cuenta que se debe usar para modificar registros que ya existen, puesto que no crea registros nuevos.
Dicho ésto, para actualizar la tabla, es mejor el MODIFY porque hace un UPDATE o un INSERT a la Base de Datos en función de lo que se necesite.
El manejo de actualización de tablas internas en SAP sin cabecera (Recomendada).
Se puede trabajar con FIELD-SYMBOLS, estos realizan asignación de objeto dinámico, realizando una actualización “automatica” de los campos de una tabla interna.( Recomendada )
El clasico MODIFY lo utilizas cuando trabajas solo con áreas de trabajo.
Si deseas agregar lineas de una tabla interna a otra tabla interna con la sentencia APPEND LINES
Estimado, el tema es que, para hacer un modify de un registro y evitar lineas innecesarias yo suelo usar el Modify, ya que si existe, lo modifica, y si no existe lo inserta.
El Modify es válido tambien oara tablar internas, no sólo con áreas de trabajo
Para realizar una modificación a la tabla interna el la sentencia a utilizar es MODIFY.
Para hacer actualizaciones a la base de datos, utilizo MODIFY o UPDATE dependiendo la necesidad. Mayormente el MODIFY me resuelve pero hay que tener estar pendiente que cuando se hace a la base de datos, la misma actualiza absolutamente todos los campos a diferencia del UPDATE en cuál le especificas cuáles campos quieres actualizar.
Hay otras ocasiones en las cuales quiero actualizar un campo masivamente de una tabla interna sin necesidad de hacer un loop. Ya sea para limpiarlo o para agregarle un valor estático idéntico en todos los registros. En ese caso resuelvo con un modify y un transporting como muestra el ejemplo a continuación:
DATA it_kna1 LIKE TABLE OF kna1 WITH HEADER LINE.
DATA wa_kna1 LIKE LINE OF it_kna1.
wa_kna1-name1 = 'Romaldy'.
MODIFY it_kna1
FROM wa_kna1 TRANSPORTING name1
WHERE name1 = '' .