✒️ABAP - El lenguaje SQL y la sentencia SELECT

ABAP El lenguaje SQL y la sentencia SELECT

1 | La sentencia SELECT

Existen en ABAP un conjunto de sentencias que se utilizan para acceder a las bases de datos. La principal sentencia es SELECT, cuya sintaxis es la siguiente:

Imagen 1.1 - La sentencia SELECT

Si quisiéramos obtener todos los registros de la tabla ZTABLA_USUARIOS usaríamos el siguiente código:

Imagen 1.2 - La sentencia SELECT *

Donde TI_USUARIOS es una tabla interna del mismo tipo de la tabla ZTABLA_USUARIOS. El asterisco indica que se obtendrán todos los campos de la tabla. La cláusula INTO TABLE se utiliza cuando el resultado de la consulta se guarda en una tabla interna.

Evitar el uso del * cuando solo se requiera obtener algunos campos de la tabla origen.

En la sentencia anterior, en caso de existir registros en la tabla ZTABLA_USUARIOS, estos pisarán el contenido de la tabla interna TI_USUARIOS.

Podría ocurrir que queramos conservar el contenido de la tabla interna TI_USUARIOS luego de reiteradas selecciones. En este caso tendríamos que 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.

Si quisiéramos obtener de todos los campos de la tabla ZTABLA_USUARIOS el campo DNI deberíamos crear una tabla auxiliar solo con el campo DNI para alojar el resultado de la consulta.

Imagen 1.3 - SELECT de un solo campo almacenado en una estructura

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 la tabla ZTABLA_USUARIOS donde se cumpla determinada condición debemos usar la cláusula SINGLE como vemos a continuación:

Imagen 1.4 - La sentencia SELECT SINGLE

El resultado de esta consulta será guardado en la estructura WA_USUARIOS que es del mismo tipo que la tabla ZTABLA_USUARIOS.

Si quisiéramos hacer la misma consulta anterior pero necesitamos obtener solo el campo DNI entonces ya no sería necesaria la estructura WA_USUARIOS sino que guardaríamos el resultado en la variable V_DNI tal como vemos en el siguiente ejemplo:

Imagen 1.5 - SELECT de un solo campo almacenado en una variable

Si quisiéramos 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, entonces tenemos que usar la cláusula INTO CORRESPONDING FIELDS OF TABLE.

Imagen 1.6 - La sentencia SELECT INTO CORRESPONDING FIELDS OF TABLE

En el ejemplo anterior, la tabla interna TI_USUARIOS2 está compuesta por los campos NOMBRE_APE y ESTADO_USU.

Supongamos que tenemos un reporte que tiene la pantalla de selección:

Imagen 1.7 - Pantalla de selección de un reporte

Donde Nombre y Apellido es el parameter P_NOMAPE y Estado Usuario es el select-options S_ESTADO. Si quisiéramos hacer una selección a la tabla ZTABLA_USUARIOS en base a lo que los usuarios ingresan por pantalla haríamos lo siguiente:

Imagen 1.8 - Selección utilizando los parámetros de la pantalla de selección

La cláusula IN se utiliza para los select-options en las condiciones de un select.

Ahora, si quisiéramos obtener el usuario activo con DNI más alto tendríamos que usar la cláusula MAX de la siguiente forma:

Imagen 1.9 - La sentencia SELECT SINGLE MAX

Si quisiéramos saber la cantidad de usuarios con estado = "activo", debemos usar la cláusula COUNT de la siguiente manera:

Imagen 1.10 - La sentencia SELECT SINGLE COUNT

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. Veamos un ejemplo:

Imagen 1.11 - La sentencia FOR ALL ENTRIES

Si quisiéramos obtener todos los registros que cumplan con un patrón de texto en alguno de sus campos, debemos utilizar la sentencia LIKE como vemos en el siguiente ejemplo:

Imagen 1.12 - La sentencia LIKE


Sobre el autor

Publicación académica de Alex Francisco Lemos Collazos, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP Expert

Alex Francisco Lemos Collazos

Profesión: Ingeniero en Sistemas - Colombia - Legajo: QS36A

✒️Autor de: 156 Publicaciones Académicas

🎓Egresado de los módulos:

Certificación Académica de Alex Lemos

 

:: Al igual que Alex ¿Usted está dispuesto a aprender SAP SD?

El lunes 06 Diciembre 2021 comenzamos la 🎓Carrera Consultor en SAP SD.
Juntos para realizar sus más grandes desafíos!

 Cargando presentación, aguarde unos instantes...

 

 

+Recursos Gratuitos en CVOSOFT:

¡Lo importante es aprender!, por eso en CVOSOFT la comunidad SAP más grande de habla hispana, ponemos a su alcance los siguientes recursos abiertos libres y gratuitos:

Buscador de Publicaciones:

 

 

Consultas y Soporte

👋Hola! Estamos listos para ayudarle con el soporte que su carrera merece.

Acceda sección contacto y seleccione canal de comunicación más cómodo para usted.

🤝Aguardamos su mensaje, ¡Éxitos!

 


 

👉Que las empresas tomen en serio sus estudios es muy importante para que su inversión educativa tenga sentido.
Las empresas líderes de United States y del Mundo confían a CVOSOFT su recurso más valioso, la formación de su gente.

¿Quieres conocerlas?