SAP ABAP: descripción general de SQL abierto

Open SQL indica el subconjunto de declaraciones ABAP que permiten el acceso directo a los datos en la base de datos central del AS ABAP actual. Las sentencias SQL abiertas mapean la funcionalidad del lenguaje de manipulación de datos de SQL en ABAP que es compatible con todos los sistemas de bases de datos.

Las declaraciones de Open SQL se convierten a SQL específico de la base de datos en la interfaz Open SQL de la interfaz de la base de datos. Luego se transfieren al sistema de base de datos y se ejecutan. Las sentencias de SQL abierto se pueden utilizar para acceder a las tablas de la base de datos declaradas en el Diccionario ABAP. Se accede a la base de datos central de AS ABAP por defecto y también es posible el acceso a otras bases de datos a través de conexiones de bases de datos secundarias.

Siempre que se utilice alguna de estas declaraciones en un programa ABAP, es importante comprobar si la acción ejecutada se ha realizado correctamente. Si uno intenta insertar un registro en una tabla de base de datos y no se inserta correctamente, es muy importante saberlo para que se pueda tomar la acción apropiada en el programa. Esto se puede hacer utilizando un campo del sistema que ya se ha utilizado, es decir SY-SUBRC. Cuando una instrucción se ejecuta con éxito, el campo SY-SUBRC contendrá un valor de 0, por lo que se puede verificar y se puede continuar con el programa si aparece.

La declaración DATA se utiliza para declarar un área de trabajo. Démosle a esto el nombre 'wa_customers1'. En lugar de declarar un tipo de datos para esto, se pueden declarar varios campos que componen la tabla. La forma más sencilla de hacerlo es utilizando la instrucción LIKE.

INSERTAR declaración

El área de trabajo wa_customers1 se declara aquí COMO la tabla ZCUSTOMERS1, asumiendo la misma estructura sin convertirse en una tabla en sí. Esta área de trabajo solo puede almacenar un registro. Una vez que se ha declarado, la instrucción INSERT se puede utilizar para insertar el área de trabajo y el registro que contiene en la tabla. El código aquí se leerá como 'INSERTAR ZCUSTOMERS1 FROM wa_customers1'.

El área de trabajo debe llenarse con algunos datos. Utilice los nombres de campo de la tabla ZCUSTOMERS1. Esto se puede hacer navegando hacia adelante, haciendo doble clic en el nombre de la tabla en el código o abriendo una nueva sesión y usando la transacción SE11. Los campos de la tabla se pueden copiar y pegar en el editor ABAP.

A continuación se muestra el fragmento de código:

DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100006'. 
wa_customers1-name = 'DAVE'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19931017'. 
INSERT ZCUSTOMERS1 FROM wa_customers1.

La instrucción CHECK se puede utilizar de la siguiente manera. Significa que si el registro se inserta correctamente, el sistema lo indicará. De lo contrario, se mostrará el código SY-SUBRC que no será igual a cero. A continuación se muestra el fragmento de código:

IF SY-SUBRC = 0. 
   WRITE 'Record Inserted Successfully'.  
ELSE. 
   WRITE: 'The return code is ', SY-SUBRC. 
ENDIF.

Verifique el programa, guarde, active el código y luego pruébelo. La ventana de salida debería mostrarse como 'Registro insertado correctamente'.

Declaración CLEAR

La instrucción CLEAR permite borrar un campo o variable para la inserción de nuevos datos en su lugar, lo que permite su reutilización. La instrucción CLEAR se usa generalmente en programas y permite que los campos existentes se usen muchas veces.

En el fragmento de código anterior, la estructura del área de trabajo se ha llenado con datos para crear un nuevo registro que se insertará en la tabla ZCUSTOMERS1 y luego se realiza una verificación de validación. Si queremos insertar un nuevo registro, se debe usar la instrucción CLEAR para que luego se pueda completar nuevamente con los nuevos datos.

Declaración UPDATE

Si desea actualizar uno o más registros existentes en una tabla al mismo tiempo, use la instrucción UPDATE. De manera similar a la instrucción INSERT, se declara un área de trabajo, que se llena con los nuevos datos que luego se colocan en el registro a medida que se ejecuta el programa. El registro creado previamente con la instrucción INSERT se actualizará aquí. Simplemente edite el texto almacenado en los campos NOMBRE y TÍTULO. Luego, en una nueva línea, se usa la misma estructura que para la instrucción INSERT, y esta vez usando la instrucción UPDATE como se muestra en el siguiente fragmento de código:

DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100006'. 
wa_customers1-name = 'RICHARD'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19931017'. 
UPDATE ZCUSTOMERS1 FROM wa_customers1.

A medida que se ejecuta la instrucción UPDATE, puede ver el navegador de datos en el diccionario ABAP para ver que el registro se ha actualizado correctamente.

Declaración MODIFY

La instrucción MODIFY se puede considerar como una combinación de las instrucciones INSERT y UPDATE. Puede usarse para insertar un nuevo registro o modificar un registro existente. Sigue una sintaxis similar a las dos declaraciones anteriores al modificar el registro de los datos ingresados ​​en un área de trabajo.

Cuando se ejecuta esta declaración, los campos clave involucrados se compararán con los de la tabla. Si ya existe un registro con estos valores de campo clave, se actualizará. De lo contrario, se creará un nuevo registro.

A continuación se muestra el fragmento de código para crear un nuevo registro:

CLEAR wa_customers1.
 
DATA wa_customers1 LIKE ZCUSTOMERS1. 
wa_customers1-customer = '100007'. 
wa_customers1-name = 'RALPH'. 
wa_customers1-title = 'MR'. 
wa_customers1-dob = '19910921'. 
MODIFY ZCUSTOMERS1 FROM wa_customers1.

En este ejemplo, se usa la instrucción CLEAR para que se pueda colocar una nueva entrada en el área de trabajo y luego se agrega el cliente (número) 100007. Dado que se trata de un valor de campo clave nuevo y único, se insertará un nuevo registro y se ejecutará otra verificación de validación.

Cuando esto se ejecuta y los datos se visualizan en el Data Browser, se habrá creado un nuevo registro para el número de cliente 100007 (RALPH).

El código anterior produce la siguiente salida (contenido de la tabla):