La sentencia INSERT se utiliza para insertar registros en tablas internas y en tablas de base de datos. Esta lección trata de enseñarle cómo utilizar la sentencia INSERT para insertar múltiples registros en base de datos.
El lenguaje ABAP Open SQL ofrece dos formas para utilizar la misma sentencia.
INSERT { {INTO target VALUES wa }
| { target FROM wa| {TABLE itab} } }.
La instrucción INSERT inserta uno o más registros especificados de la tabla interna en la tabla de base de datos especificada en el destino. Las dos variantes con INTO y VALUES o sin INTO con FROM se comportan de forma idéntica, con la excepción de que no se pueden especificar tablas internas después de VALUES. Si se utiliza VALUES, debe haber un INTO entre INSERT y la tabla de base de datos. Si se utiliza FROM, no se debe especificar INTO.
- Comportamiento de las variables del sistema
- SY-SUBRC
- 0 cuando se declaró un área de trabajo en origen, se insertó el registro. En la declaración de una tabla interna en el origen, se han insertado todos los registros declarados o la tabla interna está 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 escribieron en la base de datos.
- 4 cuando se especificó un área de trabajo en el origen, no se insertó el registro. Cuando se especificó una tabla interna en el origen, no se insertaron todas las filas declaradas, ya que una fila en la tabla de base de datos tiene la misma clave primaria o un único índice secundario.
- SY-DBCNT
- La sentencia INSERT establece en la variable del sistema SY-DBCNT el número de filas insertadas. 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.
- Aplicación práctica
En un programa ejecutable en la lógica del código fuente realizamos una selección de datos de la tabla estándar SCARR obteniendo todas las compañías aéreas que utilizan la moneda EUR en una tabla interna. Como objetivo insertamos los datos obtenidos en la tabla de base de datos ZSCARRSA0001.
El contenido de la tabla SCARR es el siguiente:
La tabla Z tiene las mismas columnas que la tabla estándar SCARR, siendo una copia exacta de la misma.
- En el primer paro implementamos el código fuente declarando tablas internas y realizando la selección en la tabla estándar para obtener los registros con el código de moneda EUR que serán insertados en la tabla Z.
- Ejecutamos el programa.
- Visualizamos los registros insertados en la base de datos utilizando la transacción del diccionario de datos SE11.
- Artículos relacionados
ABAP Open SQL – Insertar un registro en base de datos utilizando la sentencia INSERT
ABAP Open SQL – Insertar registros con tratamiento de excepciones
ABAP Open SQL – Insertar registros sin tratamiento de excepciones