✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
Lección 3.6
INSTRUCCIONES SQL: LA SENTENCIA SELECT
La sentencia SELECT
Existe en ABAP un conjunto de sentencias que se utilizan para acceder a las BD, la principal, es la sentencia SELECT cuya sintaxis es la siguiente:
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
Si queremos obtener todo los registros de la tabla ZTABLA_USUARIOS usamos siguiente código:
*Selecciono todo los registros
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios.
* Selecciono de todos los registros el campo DNI
SELECT dni
FROM ztabla_usuarios
INTO TABLE ti_usuarios_aux.
Siempre después de un SELECT se debe preguntar por el SY-SUBRC para saber como proseguir.
SINGLE- Si queremos obtener la primera ocurrencia de la TABLA
* Selecciono el primer registro que cumpla la condición:
CLEAR wa_usuarios.
SELECT SINGLE *
FROM ztabla_usuarios
INTRO wa_usuarios
WHERE nombre_ape NE space.
TI_USUARIOS - es una tabla interna del mismo tipo que ZTABLA_USUARIOS.
* - El asterisco indica que se obtendrán todos los campos de la tabla.
INTO TABLE - se utiliza cuando el resultado de la consulta se guarda en una tabla interna
Si queremos hacer la misma consulta anterior pero solo el campo DNI, entonces ya no sería necesario la estructura WA_USUARIOS si no la variable V_DNI
CLEAR v_dni.
SELECT SINGLE dni
FROM ztabla_usuarios
INTRO v_dni
WHERE nombre_ape NE space.
Si queremos obtener de una tabla los registros que cumplan una condición pero queremos guardarlos en una tabla interna que no tiene la misma estructura que la tabla, usamos la cláusula INTO CORRESPONDING FIELD OF TABLE.
SELECT nombre_ape estado_usu
FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios2
WHERE nombre_ape NE space
AND estado_usu = 'A'.
Supongamos que tenemos un reporte que tiene la pantalla selección:
Nombre y Apellido
Estado Usuario
Donde Nombre y Apellido es el parámetro P_NOMAPE Y Estado Usuario es el select-options S_ESTADO
Si quisiéramos hacer una selección de la tabla ZTABLA_USUARIOS en base a lo que los usuarios introducen por pantalla haríamos lo siguiente:
*Seleccionamos los registros que cumplan con los parámetros de pantalla
SELECT *
FROM ztabla_usuarios
INTRO TABLE ti_usuarios
WHERE nombre_ape = p_nomape
AND estado_usu IN s_estado.
La Clausula IN se utiliza para los select-options en las condiciones de una select.
Si quisiésemos obtener el usuario activo con DNI más alto tendríamos que usar la cláusula
MAX de la siguiente forma:
*Obtengo el usuario activo con DNI más alto
SELECT SINGLE MAX( dni )
INTO v_dni
FROM ztabla_usuarios
WHERE estado_usu = 'A' .
Saber la cantidad de usuarios con estado = "activo", usamos la cláusula COUNT.
*Obtengo la cantidad de usuarios activos
SELECT COUNT(*)
INTO v_activos
FROM ztabla_usuarios
WHERE estado_usu = 'A'.
Si queremos obtener de una tabla todos los registros que existen en una tabla interna
Cargada de datos, entonces utilizamos la sentencia FOR ALL ENTRIES IN que nos permite
Especificar condiciones en tiempo de ejecución.
Obtengo los registros de los usuarios que existen en la tabla interna TI_PROVEEDORES
SELECT *
INTO TABLE ti_usuarios
FROM ztabla_usuarios
FOR ALL ENTRIES IN ti_proveedores
WHERE dni = ti_proveedores-dni.
Si queremos obtener todos los registros que cumplan con un patrón de texto en alguno de sus campos, utilizamos la sentencia LIKE.
*Recupero el usuario cuyo nombre empiece con A
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_ape LIKE 'A%'.
 
 
 
Sobre el autor
Publicación académica de Elisa Munoz Robles, en su ámbito de estudios para la Carrera Consultor ABAP.
Elisa Munoz Robles
Profesión: Analista Orgánico - España - Legajo: CM72B
✒️Autor de: 68 Publicaciones Académicas
🎓Egresado del módulo:
Presentación:
Perfil: analista orgánico
Certificación Académica de Elisa Munoz