✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
La sentencia SELECT
Sintaxis:
SELECT <resultado> "En resultado se colocan los campos que se quieren recuperar
FROM <tabla> "Tabla es la tabla origen de donde se sacan los datos
INTO <target> "Target es el destino donde serán alojados los datos
WHERE <condiciones>. "Condiciones de la búsqueda
Evitar el uso del * cuando solo se requiera obtener algunos campos de la tabla origen.
La cláusula INTO TABLE se utiliza cuando el resultado de la consulta se guarda en un tabla interna. La clàusula INTO TABLE reescribe la información que haya previamente en la tabla interna.
Para mantener una información previamente a la ejecución de la consulta en la tabla interna debemos usar la cláusula APPENDING TABLE en lugar de INTO TABLE.
Es recomendable hacer CLEAR y REFRESH de la tabla interna antes de realizar la selección. Siempre después de un SELECT se debe preguntar por el SY-SUBRC para saber como proseguir.
Si quisiéramos obtener la primera ocurrencia de una tabla interna donde se cumpla determinada condición debemos usar la cláusula SINGLE. Ejemplo:
*Selecciono el primer registro que cumpla la condición
CLEAR wa_usuarios.
SELECT SINGLE *
FROM ztabla_usuarios
INTO wa_usuarios "Estructura del mismo tipo que la tabla ztabla_usuarios
WHERE nombre_ape NE space.
En caso de seleccionar un solo valor de una tabla se puede almacenar este en una variable. Ejemplo:
*Selecciono el primer registro que cumpla la condición
CLEAR v_dni.
SELECT SINGLE dni
FROM ztabla_usuarios
INTO v_dni "Almacenamiento en la variable
WHERE nombre_ape NE space.
Si desea obtener los registros de una tabla que cumplan una condición y almacenarlos en una tabla interna que no tenga la misma estructura, se debe utilizar la cláusula INTO CORRESPONDING FIELDS OF TABLE. Ejemplo:
*Selecciono los registros que cumpla la condición
SELECT nombre_ape estado_usu
FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios2
WHERE nombre_ape NE space
AND estado_usu = 'A'.
Para consultas complementadas por datos de condición ingresados por pantalla se debe hacer de la siguiente forma:
*Selecciono los registros que cumplan con los parámetros de pantalla
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_ape = p_nomape
AND estado_usu IN s_estado.
La cláusula IN se utiliza para los select-options en las condiciones de un select.
La cláusula MAX devuelve el máximo valor de un campo dentro de todos los registros de una tabla.
La cláusula COUNT devuelve el número de registros que cumplen la condición de la consulta.
Para obtener todos los registros de una tabla que existan en una tabla interna utilizamos la sentencia FOR ALL ENTRIES IN que nos permite especificar en tiempo de ejecución. Ejemplo:
*Obtengo los registros de los usuarios que existan en una tabla interna TI_PROVEEDORES
SELECT *
INTO TABLE ti_usuarios
FROM ztabla_usuarios
FOR ALL ENTRIES IN ti_proveedores
WHERE dni = ti_proveedores-dni.
La sentencia LIKE permite obtener los registros de una tabla que cumplan con la condición en un campo de texto en parte del texto definido por medio de esta sentencia. Ejemplo:
*Recupero los usuarios cuyo nombre empiece con A
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nompre _ape LIKE 'A%'.
 
 
 
Sobre el autor
Publicación académica de John Arley Lopez Sanchez, en su ámbito de estudios para la Carrera Consultor ABAP.
John Arley Lopez Sanchez
Profesión: Ingeniero Electrónico - Colombia - Legajo: WB54O
✒️Autor de: 24 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de John Lopez