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 un registro 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 insertamos el siguiente registro en la tabla de base de datos ZSCARRSA00001.
Campo | Descripción | Valor a insertar |
CARRID | Airline Code | BA |
CARRNAME | Airline name | British Airways |
CURRCODE | Local currency of airline | GBP |
URL | Airline URL | http://www.british-airways.com |
Las columnas y los elementos de datos asignados se pueden visualizar en la siguiente imagen por la transacción del diccionario de datos SE11.
- En el primer paso implementamos el código fuente, declarando un área de trabajo, asignando los valores requeridos e insertando el registro con la sentencia INSERT.
- Ejecutamos el programa.
- Visualizamos el registro insertado en la base de datos utilizando la transacción del diccionario de datos SE11.
- Artículos relacionados:
ABAP Open SQL – Insertar múltiples registros 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