✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
1. El lenguaje SQL
Para acceder y manipular los datos que se encuentran almacenados en las tablas de la base de datos centralizada de SAP vamos a utilizar el lenguaje SQL.
SQL
Sus siglas significan Structured Query Language (Lenguaje de Consulta Estructurado).
Es un lenguaje de consulta, usado como interfaz para comunicarse con bases de datos y realizar operaciones de acceso y manipulación de la información almacenada.
Es un lenguaje sencillo de consulta, que permite realizar operaciones de selección, inserción, actualización y borrado de datos, así como operaciones administrativas sobre la base de datos.
Tiene la capacidad de hacer cálculos avanzados y álgebra. Es utilizado en la mayoría de las empresas que almacenan datos en una base de datos. Ha sido y sigue siendo el lenguaje de programación m[as usado para base de datos relacionales.
El lenguaje SQL es un estándar mantenido por ANSI, por lo que las bases del lenguaje son las mismas en la mayoría de los casos.
Podemos decir que las sentencias de lenguaje SQL pueden ser clasificadas en tres grupos que son los siguientes:
- Lenguaje de Definición de Datos (DDL): gracias a este lenguaje podemos definir los diferentes objetos que tenemos en nuestra base de datos. Se utiliza para definir estructuras como el esquema, la base de datos, las tablas de la base de datos las restricciones etc.
Para definir las estructuras disponemos de tres sentencias:
- CREATE: se utiliza para crear una base de datos, tablas base de datos, vistas, etc.
- ALTER: se utiliza para modificar la estructura de la base de datos, por ejemplo añadir o borrar columnas de una tabla).
- DROP: con esta sentencia podemos eliminar los objetos de la estructura, por ejemplo un índice o una secuencia.
- Lenguaje de Manipulación de Datos (DML): gracias a este lenguaje podemos manipular los datos de los diferentes objetos que disponemos en nuestra base de datos, sobre todo, en las tablas, donde podemos realizar inserciones, actualizaciones y borrado de datos, además de poder también extraer estos datos.
El DML permite a los usuarios introducir datos para posteriormente realizar tareas de consultas o modificación de los datos que contienen las bases de datos.
Las sentencias que se utilizan para manipular los datos son las siguientes:
- SELECT: esta sentencia se utiliza para realizar consultas sobre los datos.
- INSERT: con esta sentencia podemos insertar los valores en una tabla base de datos.
- UPDATE: se utiliza para modificar los valores de uno o varios registros.
- MODIFY: también se utiliza para modificar los valores de uno o varios registros.
- DELETE: se utiliza para eliminar las filas de una tabla base de datos.
- Lenguaje de Control de Datos (DCL): gracias a Este lenguaje podemos dar de o quitar de permisos sobre los objetos a los usuarios que se conectan a la base de datos.
Estos comandos permiten al administrador de sistema gestor de base de datos, controlar el acceso a los objetos, es decir, podemos otorgar o denegar permisos a uno más roles para realizar determinadas tareas.
Los comandos para controlar los permisos son los siguientes:
- GRANT: permite otorgar permisos.
- REVOKE: elimina los permisos que previamente se han concedido.
2. La Sentencia SELECT
Se utiliza para recuperar información en SQL, es decir, permite obtener registros de la base de datos, de una o varias tablas combinadas. Además permite hacer filtrados de la información, para obtener únicamente los registros que cumplen ciertas condiciones.
Una sentencia SELECT recupera cero o más vidas de una o más tablas de base de datos o vistas de base de datos.
En ABAP la sentencia SELECT tiene la siguiente sintaxis :
SELECT <resultado> En resultado se colocan los campos que se desean recuperar
FROM <tabla> Es la tabla base de datos de donde se sacan los datos
INTO <target> Es el destino donde serán alojados los datos
WHERE <condiciones> Condiciones de la búsqueda
2.1 SELECT * INTO TABLE
Si quisiéramos obtener todos los registros de la tabla utilizaríamos la sentencia SELECT *
Debemos evitar el uso del * cuando solo se requiera obtener algunos campos de la tabla origen.
En caso de existir registros en la tabla la variable del sistema SY-SUBRC será cero (0), en caso contrario, será distinto de cero.
2.2 SELECT* APPENDING TABLE
Podría ocurrir que quisiéramos conservar el contenido de la tabla interna. En este caso tendríamos que usar la cláusula APPENDING TABLE en lugar de INTO TABLE.
Es recomendable hacer un REFRESH de la tabla interna en donde se almacenarán los datos antes de realizar la selección de los mismos.
En caso de utilizar una variable o una estructura entonces deberemos ejecutar un Clear.
2.3 SELECT campo1
Si quisiéramos obtener de todos los campos de la tabla uno en específico deberíamos crear una tabla auxiliar solo con ese campo para alojar el resultado de la consulta.
Siempre después de un SELECT se debe preguntar por el SY_SUBRC para saber cómo proseguir.
Si quisiéramos obtener dos campos de la tabla base de datos, entonces debemos escribir luego de la sentencia SELECT el nombre de los campos, en el mismo orden en el que dichos campos se encuentran en tabla base de datos.
Si la variable, estructura o tabla interna de destino en donde se verán almacenados los datos que se recuperen de la ejecución de la sentencia Select no coinciden el formato con los datos recuperados entonces se produce un error, que dependiendo del caso puede ser de sintaxis o en tiempo de ejecución es decir un DUMP.
2.4 SELECT SINGLE
Si quisiéramos obtener la primera ocurrencia de la tabla donde se cumpla determinada condición debemos ejecutar un SELECT SINGLE *.
El resultado de esta consulta será guardado en la estructura WA_ESCTRUCTURA que es del mismo tipo de la tabla ZTABLA.
Si quisiéramos realizar la misma consulta pero necesitamos obtener un solo campo entonces ya no sería necesaria la estructura sino que guardaríamos el resultado en una variable.
2.5 SELECT INTO CORRESPONDING FIELDS OF TABLE
Si quisiéramos obtener de una tabla a base de datos los registros que cumplen una condición pero decíamos guardarlos en una tabla interna que no tiene la misma estructura que la tabla base de datos entonces tenemos que usar la cláusula INTO CORRESPONDING FIELDS OF TABLE.
2.6 SELECT ... WHERE IN
La cláusula IN se utiliza para los SELECT-OPTIONS en las condiciones de un SELECT.
2.7 SELECT MAX
Se utiliza cuando se quiere hallar el registro con el campo especificado de mayor valor numérico.
2.8 SELECT COUNT
Se utiliza cuando se quiere obtener la cantidad de registros de una tabla SAP.
2.9 SELECT FOR ALL ENTRIES IN
Si quisiéramos obtener de una tabla todos los registros que existen en una tabla interna cargada con datos, entonces debemos utilizar la cláusula FOR ALL ENTRIES IN que nos permite especificar condiciones de tiempo de ejecución.
2.10 SELECT ... LIKE
Si quisiéramos obtener todos los registros que cumplan con un patrón de texto en algunos de sus campos, debemos utilizar la cláusula LIKE.
2.11 SELECT ... INNER JOIN
Tenemos la posibilidad de realizar un SELECT a más de una tabla base de datos, lo que se conoce con el nombre JOIN.
La cláusula INNER JOIN entre dos tablas base de datos A y B entregará el resultado de la intersección de los conjuntos A y B. En otras palabras, la parte interna, es decir, los registros en común entre ambas tablas base de datos según la condición de conexión entre ambas.
También tenemos disponible en ABAP la cláusula LEFT OUTER JOIN entre dos tablas base de datos A y B, en donde obtendremos como resultado de unión entre las tablas A y B más la parte de información exterior de la tabla base de datos A, es de la tabla base de datos que se encuentra a la izquierda en la unión.
 
 
 
Sobre el autor
Publicación académica de Alexis Jesus Perez Ramirez, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexis Jesus Perez Ramirez
Profesión: Licenciado en Computación - Venezuela - Legajo: LK96B
✒️Autor de: 69 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Licenciado en computación egresado de la ucv, con amplia experiencia en base de datos, análisis de sistemas y programación; tanto en ambiente web, cliente/servidor como en computación central.
Certificación Académica de Alexis Perez