Abra SQL y SQL nativo en SAP ABAP
โก Resumen inteligente
Open SQL y SQL nativo en SAP ABAP describe las dos formas en que un programa ABAP accede a la base de datos. Open SQL trabaja con tablas de diccionario de forma independiente de la base de datos, mientras que Native SQL transmite sentencias especรญficas de la base de datos directamente a la plataforma.

ยฟQuรฉ son Open SQL y Native SQL?
El objetivo de este tutorial no es enseรฑarte. SQL o conceptos de bases de datos, sino para presentarle la diversidad de SQL en ABAP.
En el lenguaje de programaciรณn ABAP/4, se utilizan dos tipos de SQL.
- SQL NATIVO
- ABRIR SQL.
Open SQL le permite acceder a las tablas de la base de datos declaradas en el diccionario ABAP independientemente de la plataforma de base de datos que estรฉ utilizando el sistema R/3.
SQL nativo le permite utilizar declaraciones SQL especรญficas de la base de datos en un programa ABAP/4. Esto significa que puede utilizar tablas de bases de datos que no estรกn administradas por el diccionario ABAP y, por lo tanto, integrar datos que no forman parte del sistema R/3.
Open SQL consiste en un conjunto de instrucciones ABAP que realizan operaciones en la base de datos central del sistema R/3. Los resultados de las operaciones y los mensajes de error son independientes del sistema de base de datos en uso. Open SQL proporciona asรญ una sintaxis y una semรกntica uniformes para todos los sistemas de base de datos compatibles con SAPLos programas ABAP que solo utilizan instrucciones Open SQL funcionarรกn en cualquier sistema R/3, independientemente del sistema de base de datos que se utilice. Las instrucciones Open SQL solo pueden funcionar con tablas de base de datos que se hayan creado en el diccionario ABAP.
Open SQL es la opciรณn predeterminada en casi todos los programas, por lo que su conjunto de comandos se abordarรก en primer lugar.
Comandos SQL abiertos bรกsicos
- SELECT
- INSERT
- ACTUALIZAR
- MODIFICAR
- BORRAR
- ABRIR CURSOR, BUSCAR, CERRAR CURSOR
Ejemplo
TABLES SBOOK. DATA C TYPE CURSOR, WA LIKE SBOOK. OPEN CURSOR C FOR SELECT * FROM SBOOK WHERE CARRID = 'LH ' AND CONNID = '0400' AND FLDATE = '19950228' ORDER BY PRIMARY KEY. DO. FETCH NEXT CURSOR C INTO WA. IF SY-SUBRC <> 0. CLOSE CURSOR C. EXIT. ENDIF. WRITE: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE, WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT, WA-INVOICE. ENDDO.
Genere la lista de pasajeros del vuelo 0400 de Lufthansa del 28-02.1995:
Cada una de estas afirmaciones informa su resultado a travรฉs de dos campos del sistema, que se describen a continuaciรณn.
Devoluciรณn SQL abierta Codes
Todas las declaraciones de Open SQL llenan los siguientes dos campos del sistema con cรณdigos de retorno.
| Campo del sistema | Significado |
|---|---|
| SY-SUBRC | Despuรฉs de cada declaraciรณn Open SQL, el campo de sistema SY-SUBRC contiene el valor 0 si la operaciรณn fue exitosa, y un valor distinto de 0 si no lo fue. |
| SY-DBCNT | Despuรฉs de una declaraciรณn Open SQL, el campo del sistema SY-DBCNT contiene el nรบmero de lรญneas de base de datos procesadas. |
๐ก Consejo: Compruebe siempre SY-SUBRC inmediatamente despuรฉs de la instrucciรณn. Un comando ABAP posterior sobrescribe el campo y se pierde el resultado original.
Cuando una tabla se encuentra fuera del Diccionario ABAP, Open SQL no puede acceder a ella y se utiliza SQL nativo.
SQL nativo
Como ya se mencionรณ, SQL nativo le permite utilizar declaraciones SQL especรญficas de la base de datos en un programa ABAP.
Para utilizar una declaraciรณn SQL nativa, debe precederla con la declaraciรณn EXEC SQL y seguirla con la declaraciรณn ENDEXEC.
Sintaxis
EXEC SQL [PERFORMING <form>]. <Native SQL statement> ENDEXEC.
No hay ningรบn punto despuรฉs de las declaraciones SQL nativas. Ademรกs, el uso de comillas (โ) o un asterisco (*) al principio de una lรญnea en una declaraciรณn SQL nativa no introduce un comentario como lo harรญa en la sintaxis ABAP normal. Necesita saber si los nombres de tablas y campos distinguen entre mayรบsculas y minรบsculas en su elecciรณn. base de datos de CRISPR Medicine News.
En las declaraciones SQL nativas, los datos se transportan entre la tabla de la base de datos y el programa ABAP mediante variables del lenguaje principal. Estos se declaran en el programa ABAP y estรกn precedidos en la declaraciรณn SQL nativa por dos puntos (:). Puede utilizar estructuras elementales como variables del lenguaje principal. Excepcionalmente, las estructuras de una clรกusula INTO se tratan como si todos sus campos estuvieran enumerados individualmente.
Como en Open SQL, despuรฉs de la declaraciรณn ENDEXEC, SY-DBCNT contiene el nรบmero de lรญneas procesadas. En casi todos los casos, SY-SUBRC contiene el valor 0 despuรฉs de la declaraciรณn ENDEXEC.
โ ๏ธ Advertencia: El SQL nativo omite el SAP El bรบfer de tabla y el manejo automรกtico del cliente de Open SQL. El programa debe proporcionar el campo del cliente, y la instrucciรณn solo se ejecuta en la plataforma de base de datos para la que fue escrita.
Open SQL frente a SQL nativo: diferencias clave
Ambas interfaces acceden a la misma base de datos, pero difieren en portabilidad, almacenamiento en bรบfer y los objetos que pueden gestionar. La siguiente tabla resume las diferencias prรกcticas.
| Criterios | Open SQL | SQL nativo |
|---|---|---|
| Tablas abordadas | Solo tablas declaradas en el Diccionario ABAP | Cualquier tabla de la base de datos, incluidas las tablas que no estรกn en el diccionario. |
| Portabilidad | Se ejecuta en todas las bases de datos compatibles con SAP | Vinculado a la sintaxis de una plataforma de base de datos. |
| Sintaxis | Sentencias ABAP con un perรญodo de cierre | Las instrucciones nativas se encuentran entre EXEC SQL โฆ ENDEXEC, sin punto de cierre. |
| transferencia de datos | รreas de trabajo y mesas internas a travรฉs de INTO | Variables de host precedidas por dos puntos. |
| Gestiรณn de clientes y almacenamiento en bรบfer | Gestiรณn automรกtica de clientes y almacenamiento en bรบfer de tablas. | No hay gestiรณn automรกtica de clientes y el SAP El bรบfer se omite |
| Uso tรญpico | Acceso diario a los datos de la aplicaciรณn R/3 | Integraciรณn de datos que no forman parte del sistema R/3. |
Por lo tanto, Open SQL es la opciรณn predeterminada, y las reglas que se detallan a continuaciรณn garantizan su rapidez.
Open SQL โ Reglas de rendimiento
Para mejorar el rendimiento del SQL y a su vez del programa ABAP, se deben tener en cuenta las siguientes reglas:
Mantenga el conjunto de resultados pequeรฑo
- Usando la clรกusula donde
- Si solo se requiere un registro de la base de datos, use SELECT SINGLE siempre que sea posible.
Minimizar la cantidad de datos transferidos
- Restringir el nรบmero de lรญneas
- Si solo se requieren ciertos campos de una tabla, use la instrucciรณn SELECT INTOโฆ
- Restringir el nรบmero de columnas
- Usar funciones agregadas
Minimizar la cantidad de transferencias de datos
- Evite los bucles de selecciรณn anidados
- Una opciรณn alternativa es utilizar la instrucciรณn SELECT .. FOR ALL ENTRIES. Esta declaraciรณn a menudo puede ser mucho mรกs eficiente que realizar una gran cantidad de declaraciones SELECT o SELECT SINGLE durante un BUCLE de una tabla interna.
- Usar vistas de diccionario
- Utilice combinaciones en la clรกusula FROM
- Utilice subconsultas en la clรกusula donde
Minimizar los gastos generales de bรบsqueda
- Utilice campos de รญndice en la clรกusula donde
- Al acceder a bases de datos, asegรบrese siempre de que se estรฉ utilizando el รญndice correcto.
Reducir la carga de la base de datos
- Bufferinsights
- Bases de datos lรณgicas
- Evite el acceso repetido a la base de datos
Uso de tablas internas para Buffer rรฉcords
- Para evitar ejecutar la misma SELECT varias veces (y por lo tanto tener selecciones duplicadas), mesa interna Se puede utilizar el tipo HASHED para mejorar el rendimiento.
