✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
La sentencia SELECT
- Es la principar sentencia para acceder a las bases de datos.
Su sintaxis es: 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
La clausula INTO TABLE se utiliza cuando el resultado de la consulta se guara en una tabla interna. Debemos tener en consideración que los campos de la tabla interna que se utiliza a continuación de la sentencia deben tener el mismo formato y orden, de las columnas o campos de la tabla base de datos que se están seleccionando mediante el SELECT.
Cuando se utiliza INTO, se eliminan todas las líneas existentes en la tabla interna.
La clausula APPENDING TABLE hace que los registros de las tablas que se seleccionan se añadan al final de la tabla interna sin pisar los registros preexistentes en la tabla interna.
Los campos en la tabla interna no se ven afectados por la selección, se llenan con los valores iniciales.
Es recomendable hacer CLEAR (borra la cabecera) y REFRESH (borra el contenido) de la TI antes de realizar la selección.
Utilizaremos la sentencia CLEAR para inicializar variables y estructuras en un programa. El contenido de una variable luego de la inicialización de la misma, es decir luego de ejecutar la sentencia CLEAR seguida del nombre de la variable, va a depender del tipo de la variable. Si la variable es de tipo "caracter" entonces el contenido de la misma luego de la inicialización será espacios en blanco, mientras que si la variable es de tipo "integer" entonces el contenido de la variable luego de la inicialización será cero.
Utilizamos la sentencia REFRESH para inicializar el contenido de una tabla interna. Es considerada una muy buena práctica de programación borrar el contenido de una tabla interna antes de utilizarla.
La sentencia OCCURS se utiliza para especificar la cantidad de registro en memoria de una tabla interna.
- Si quisiéramos obtener de todos los campos de la tabla solamente un campo entonces deberíamos crear una tabla auxiliar solo con el campo en cuestión donde se llevarán los datos.
- Siempre después de un SELECT se debe preguntar por el SY-SUBRC para saber como seguir.
La estructura estándar de SAP SYST contiene todas las variables del sistema. Las variables del sistema nos proporcionan información sumamente útil para determinar la lógica de nuestros programas.
La variable SY-SUBRC almacena el resultado de la ejecución de todas las sentencias que se ejecutan en ABAP, es decir, si luego de la ejecución de una sentencia determinada, se produce un error o no se obtiene datos o cualquier otra situación anormal, la variable del sistema SY-SUBRC tendrá almacenado un valor distinto de cero. En cambio si después de la ejecución de una sentencia, función o cualquier otro objeto ABAP, el contenido de la variable del sistema SY-SUBRC es cero, esto significa que la ejecución se realizó correctamente, sin errores.
- Si queremos obtener el primer registro que cumple determinada condición utilizamos la sentencia SINGLE.
Si queremos que se seleccionen todos los campos de la base de datos, después de SINGLE ponemos *. Haciendo esto, el resultado de la consulta se guardara en una estructura (WA - se utiliza para almacenar 1 solo registro proveniente de la tabla base de datos) del mismo tipo que la tabla base de datos.
CLEAR wa_usuarios.
SELECT SINGLE *
FROM ztabla_esttk43h
INTO wa_usuarios
WHERE nombre_ape NE space.
Si queremos que se seleccione solamente un campo, insertamos dicho campo después de SINGLE. El resultado se guardara en una variable.
CLEAR v_dni.
SELECT SINGLE dni
FROM ztabla_esttk43h
INTO v_dni
WHERE nombre_ape NE space.
- Si se quiere obtener de una tabla los registro que cumplan una condición pero queremos que los resultados se guarden en una TI que no tiene la misma estructura que la tabla utilizamos INTO CORRESPONDING FIELDS OF TABLE
Esta sentencia realiza la comparación de los campos teniendo en cuenta los tipos de los campos de cada tabla y la posición de cada uno de ellos.
- Si en un reporte quisiéramos hacer una selección a la tabla en base a lo que el usuario ingresa en la pantalla de selección
SELECT *
FROM ztabla_esttk43h
INTO TABLE ti_usuarios
WHERE nombre_ape = p_nomape
AND estado_usu IN s_estado. La clausula IN se utiliza para las SELECT-OPTION en las condiciones de un SELECT.
- Si se quiere obtener un campo con uno de los valores más alto utilizamos la clausula MAX (para obtener el registro con el campo especificado de mayor valor numérico).
SELECT SINGLE MAX( dni )
INTO v_dni
FROM ztabla_usuarios
WHERE estado_usu = 'A'.
- Para saber la cantidad de registros de una tabla SAP utilizamos COUNT.
SELECT COUNT(*)
INTO v_activos
FROM ztabla_esttk43h
WHERE estado_usu = 'A'
- Si se quiere obtener de una tabla todos los registros existentes en una TI cargada con datos utilizamos la sentencia FOR ALL ENTRIES IN (Es un formato especial de la sentencia WHERE que se utiliza para especificar condiciones en tiempo de ejecución).
SELECT *
INTO TABLE ti_usuarios
FROM ztabla_esttk43h
FOR ALL ENTRIES IN ti_proveedores
WHERE dni = ti_proveedores-dni.
- Si se quiere obtener todos los registros que con un patrón de texto utilizamos LIKE
LIKE tiene dos utilizadades diferentes dentro de los programas ABAP.
- Para la declaración de datos que sean iguales a otros tipos de datos ya existentes en el sistema.
- Para la selección de datos de las tablas dentro de las condiciones en la sentencia SELECT para buscar registros que cumplan con un determinado patrón que se especifica en la condición.
SELECT *
FROM ztabla_esttk43h
INTO TABLE ti_usuarios
WHERE nombre_ape LIKE 'M%'.
 
 
 
Sobre el autor
Publicación académica de Ana Schiau, en su ámbito de estudios para la Carrera Consultor ABAP.
Ana Schiau
España - Legajo: TK43H
✒️Autor de: 55 Publicaciones Académicas
🎓Egresado del módulo:
Presentación:
Trabajo como key user sd en un multinacional y quiero aprender a programar en abap.
Certificación Académica de Ana Schiau