![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
![ABAP El lenguaje SQL y la sentencia SELECT ABAP El lenguaje SQL y la sentencia SELECT](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/16.jpg)
USO DE LA SENTENCIA SELECT
La sentencia SELECT se utiliza para obtener información de una tabla.
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. Esto hara que se agregue la información selecccionada.
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 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.
El resultado del anterior select se almacenara en la estructura wa_usuarios, que es del mismo tipo que la tabla ztabla_usuarios.
En caso de seleccionar el valor de un solo campo 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'.
Tener presente que para este caso la tabla ti_usuarios2 tiene los campos Nombre_ape y Estado_Usu, igualmente definidos en la tabla Ztabla_usuarios. OJO… Los campos deben ser iguales en su estructura.
Para el caso de que hagamos consultas condicionados por Parametros dados por el usuario se debe hacer de la siguiente forma:
Parametro: p_nomape y Select Options: s_estado
*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.
SELECT SINGLE MAX(dni)
INTO v_dni
FROM ztabla_usuarios
WHERE estado_usu = ‘A’.
NOTA: Al escribir el SELECT para el compilador ABAP es igual escribir primero la sección INTO y luego el FROM o al revés.
La cláusula COUNT devuelve el número de registros que cumplen la condición de la consulta.
SELECT COUNT(*)
INTO v_activos
FROM ztabla_usuarios
WHERE estado_usu = ‘A’.
Si quisiéramos obtener de una tabla todos los registros que existan en una tabla interna cargada con datos,entonces debemos utilizar la sentencia FOR ALL ENTRIES IN que nos permite especificar condiciones en tiempo de ejecución. Ejemplo:
*Obtengo los registros de los usuarios que existan 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.
En el anterior select estamos seleccionando TODOS los registros de la tabla ztabla_usuarios que se encuentran en la tabla interna ti_proveedores donde el campo dni es igual en ambas tablas. El resultado se almacena en la tabla interna ti_usuarios.
La sentencia LIKE nos permite obtener los registros de una tabla que cumplan con una condición en un campo de texto. 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 Alexander Castellanos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexander Castellanos
Profesión: Ingeniero de Sistemas - Colombia - Legajo: JS42A
✒️Autor de: 67 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Alexander Castellanos