✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
La sentencia SELECT
En ABAP existen un conjunto de sentencias que se utilizan para acceder a las BD. La principal sentencia es SELECT, cuya sintaxis es la siguiente:
SELECT <resultado> "en el resultado se colocan los campos que se quieren recuperar
FROM <tabla> "es la tabla origen de donde se sacan los datos
INTO <target> "es el destino donde serán alojados los datos
WHERE <condiciones> "Condiciones de la búsqueda
Ejemplo:
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios.
Si se quisiera conservar el contenido de la tabla interna TI_USUARIOS se puede utilizar la cláusula APPENDING TABLE en lugar de INTO TABLE.
Nota: Es recomendable hacer CLEAR y REFRESH de la tabla interna antes de realizar la selección.
Nota: Siempre después de un SELECT se debe preguntar por el SY-SUBRC para saber como proseguir.
Si se quiere obtener la primera ocurrencia donde se cumpla determinada condición se debe usar la cláusula SINGLE:
CLEAR wa_usuarios.
SELECT SINGLE *
FROM ztabla_usuarios
INTO wa_usuarios
WHERE nombre_ape NE space.
Si se quisiera hacer la misma consulta anterior sólo con el campo DNI, se guarda el resultado en una variable.
CLEAR v_dni.
SELECT SINGLE dni
FROM ztabla_usuarios
INTO v_dni
WHERE nombre_ape NE space.
Si se quisiera obtener de una tabla los registros que cumplan una condición, y guardarlos en una tabla interna que no tiene la misma estructura que la tabla, se debe utilizar la cláusula INTO CORRESPONDING FIELDS OF TABLE.
SELECT nombre_ape estado_usu
FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios2
WHERE nombre_ape NE space
AND estado_usus = 'A'.
Si se quiere hacer una selección a una tabla en base a lo que los usuarios ingresan por pantalla (P_NOMEAPE es el parameter, S_ESTADO es el select-options):
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_ape = p_nomape
AND estado_usu IN s_estado.
La cláusula IN se utuliza para los select-options en la condiciones de un SELECT.
Ahora, si se quisiera obtener el valor más alto de uno de los campos se debe utilizar la cláusula MAX:
SELECT SINGLE MAX( dni )
INTO v_dni
FROM ztabla_usuarios
WHERE estado_usu = 'A'.
Si se quiere saber la cantidad de veces que se repite un valor de un campo, se utiliza la cláusula COUNT:
SELECT COUNT(*)
INTO v_activos
FROM ztabla_usuarios
WHERE estado_usu = 'A'.
Si se quiere obtener de una tabla todos los registros que existan en una tabla interna cargada con datos, se utiliza la sentencia FOR ALL ENTRIES IN que permite especificar condiciones en tiempo de ejecución:
SELECT *
INTO TABLE ti_usuarios
FROM ztabla_usuarios
FOR ALL ENTRIES IN ti_proveedores
WHERE dni = ti_proveedores-dni.
Si se quieren obtener todos los registros que cumplan un patrón de texto en alguno de sus campos, se debe utilizar la sentencia LIKE:
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_ape LIKE 'A%'.
 
 
 
Sobre el autor
Publicación académica de Miguel Mauricio Sierra Cardona, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Mauricio Sierra Cardona
Profesión: Ingeniero de Desarrollo E Innovación - Colombia - Legajo: GN43E
✒️Autor de: 61 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Miguel Sierra