Pregunta 2:
¿Qué es Open SQL vs Native SQL?
Pregunta 3:
¿Qué hace una declaración EXEC SQL en ABAP? ¿Cuál es la desventaja de usarla?
Si escribes una aplicación empresarial, siempre hay una base de datos en el backend. Por lo tanto, SAP R/3 también utiliza una base de datos. ¿Es una base de datos especial? No. SAP utiliza bases de datos estándar como Oracle, IBM DB2, MS SQL Server, etc. Si tienes una base de datos en el backend, es inevitable que debas usar SQL. SAP utiliza SQL para seleccionar, insertar y actualizar datos dentro de la base de datos. Sin embargo, el problema es que si utilizas diferentes bases de datos, tu código, ya sea ABAP o no, puede variar en SQL. En esa situación, aunque los programadores tienden a usar SQL estándar que es válido para todas las bases de datos, a veces surgen problemas al cambiar de una base de datos a otra. Lo que estoy tratando de decir es que SAP inventó una nueva forma de resolver este problema:
Open SQL
Open SQL
Open SQL consta de un conjunto de declaraciones ABAP que realizan operaciones en la base de datos central en el Sistema R/3. Los resultados de las operaciones y cualquier mensaje de error son independientes del sistema de base de datos en uso. Por lo tanto, Open SQL proporciona una sintaxis y semántica uniforme para todos los sistemas de base de datos admitidos por SAP. Los programas ABAP que solo utilizan declaraciones Open SQL funcionarán en cualquier Sistema SAP R/3, independientemente del sistema de base de datos en uso. Las declaraciones Open SQL pueden trabajar con tablas de base de datos que han sido creadas en el Diccionario ABAP.
El método en realidad es simple, cuando un programador escribe un programa ABAP con declaraciones Open SQL, los programas kernel de SAP convierten las declaraciones Open SQL en declaraciones SQL reales / nativas para la base de datos en uso. Así que de esa manera escribe una vez, ejecuta para todas las bases de datos e incluso para todos los sistemas operativos. Al igual que en Java "
Escribe una vez. Ejecuta en cualquier lugar
". Piensa en Java, incluso Java utiliza el mismo principio que es
Máquina Virtual de Java
que se parece a los programas kernel de SAP. ¿Verdad? :smile: ¿Podemos decir que SAP hizo "
Escribe una vez. Ejecuta en cualquier lugar
" antes que Java?
Open SQL contiene las siguientes palabras clave:
-
SELECT
- Lee datos de tablas de base de datos.
-
INSERT
- Agrega líneas a tablas de base de datos.
-
UPDATE
- Cambia el contenido de las líneas de las tablas de base de datos.
-
MODIFY
- Inserta líneas en tablas de base de datos o cambia el contenido de las líneas existentes.
-
DELETE
- Elimina líneas de tablas de base de datos.
-
OPEN CURSOR, FETCH, CLOSE CURSOR
- Lee líneas de tablas de base de datos utilizando el cursor.
-
Todas las declaraciones Open SQL llenan los siguientes dos campos del sistema con códigos de retorno:
-
SY-SUBRC
Después de cada declaración Open SQL, el campo de sistema SY-SUBRC contiene 0 si la operación fue exitosa, un valor distinto de 0 si no.
-
SY-DBCNT
Después de una declaración OPEN SQL, el campo de sistema SY-DBCNT contiene el número de líneas de base de datos procesadas.
Native SQL
Native SQL es SQL real para la base de datos en uso. Esto significa que, además de OPEN SQL, si es necesario, puedes usar el SQL nativo para bases de datos. Native SQL te permite usar declaraciones SQL específicas de la base de datos en un programa ABAP. Esto significa que puedes utilizar tablas de base de datos que no están administradas por el Diccionario ABAP, e integrar datos que no forman parte del Sistema R/3.
Por regla general, un programa ABAP que contiene declaraciones SQL específicas de la base de datos no se ejecutará en diferentes sistemas de base de datos. Si tu programa se utilizará en más de una plataforma de base de datos, solo usa declaraciones Open SQL.
Nunca he utilizado Native SQL en mis experiencias de más de 6 años en programación ABAP. Lo intenté, puedes estar seguro de que funciona. Todos los programas ABAP en el Sistema SAP R/3 han sido escritos con Open SQL. Pero a