ACTUALIZAR UN REGISTRO

Esta lección trata de enseñarle cómo utilizar la sentencia UPDATE para actualizar un registro en base de datos.

  • Sintaxis

UPDATE target source [CLIENT SPECIFIED mandt].

  • Efecto

La sentencia UPDATE cambia el contenido de uno o más registros de la tabla de base de datos especificada en “target”. Las entradas del “source” determinan qué columnas de las filas se cambian y cómo se cambian.

  • Comportamiento de las variables del sistema

La instrucción UPDATE establece los valores de los campos del sistema SY-SUBRC y SY-DBCNT.

  • 0 cuando se especificó SET en la sentencia, se cambió al menos una fila. Cuando se especificó un área de trabajo en origen, se cambió la fila especificada. Cuando se especificó una tabla interna en el origen, se cambiaron todas las filas especificadas o la tabla interna es vacía.
  • 2 cuando se especificó una estructura de tipo LOB (Large Object) y los componentes de identificador no LOB (los demás campos que no son objetos grandes) no se actualizaron en base de datos.
  • 4 cuando se ha especificado SET o un área de trabajo en el origen, no se cambió ninguna fila. Cuando se especificó una tabla interna en el origen, no se cambiaron todas las filas especificadas. Esto se debe a que no se encontró ninguna fila adecuada o porque el cambio generaría una fila que produce entradas duplicadas en la clave principal o un índice secundario único en la tabla de la base de datos.

La instrucción UPDATE establece en la variable del sistema SY-DBCNT el número de filas modificadas. Si se produce un desbordamiento porque el número o filas es mayor que 2.147.483.647, SY-DBCNT se establece en -1. Si SY-SUBRC es 2, SY-DBCNT también se establece en el valor -1.

  • Notas
  • Los cambios se asignan a la base de datos por el siguiente COMMIT de base de datos.
  • La instrucción UPDATE establece un bloqueo de base de datos hasta el siguiente COMMIT o ROLLBACK de la base de datos. Si se utiliza incorrectamente, esto puede producir bloqueo.
  • El número de filas que se pueden modificar en las tablas de una base de datos dentro de una LUW de base de datos es limitado, ya que un sistema de base de datos sólo puede administrar una cantidad limitada de bloqueos y datos en el área del ROLLBACK.
  • La sentencia UPDATE no se puede aplicar a la tabla del sistema TRDIR.
  • CLIENT SPECIFIED

Si se utiliza la adición CLIENT SPECIFIED, se respeta el ID del mandante especificado en la fuente. Sin la adición CLIENT SPECIFIED, el entorno de ejecución ABAP no pasa el ID del mandante especificado en el origen al sistema de base de datos, sino que pasa el ID del mandante actual en su lugar.

  • Aplicación práctica

En un programa ejecutable realizamos la actualización del campo CURRCODE con el valor USD para la compañía aérea AC -Air Canada de la tabla de base de datos ZSCARRSA00001.

  1. Existen dos formas que le permite rellenar los valores del Work Area. La primera opción sería asignar valores directamente a cada campo del Work Area y la segunda una selección en base de datos para obtener el registro a modificar y luego cambiar los campos que se van a actualizar, como en este caso el campo CURRCODE. A continuación, puede visualizar el código fuente de la segunda opción que realiza la lectura en base de datos para obtener los valores del registro a modificar.
  2. Ejecutamos el programa.
  3. Visualizamos el registro actualizado en la tabla de base de datos utilizando la transacción del diccionario de datos SE11.
  • Artículos relacionados

ABAP Open SQL – Actualizar múltiples registros en base de datos utilizando la sentencia UPDATE

ABAP Open SQL – Actualizar columnas en base de datos con la sentencia UPDATE y la adición SET

ABAP Open SQL – Actualizar columnas en base de datos con la las expresiones de la adición SET de la sentencia UPDATE

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *