✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
SENTENCIA SELECT
SELECT <resultado> "En resultado se colocan los campos que se quieren recuperar"
FROM <tabla> "tabla es el origen de donde se sacan los datos.
INTO <target> "target es el destino donde serán alojados los datos"
WHERE <condiciones> "Condiciones en la búsqueda"
Si quisieramos obtener todos los registros de una tabla, usaríamos el siguiente código
SELECT *
FROM nombre_tabla
INTO TABLE tabla_interna.
Donde tabla interna es del mismo tipo de la tabla de origen. El asterisco indica que obtendrá todos los campos de la tabla. La cláusula INTO TABLE se usa cuando el resultado de la consulta se guarda en una tabla interna.
Si solo se requiere obtener algunos campos, no usar el *.
En el ejemplo anterior, los datos de tabla_interna serán pisados por el contenido de nombre_tabla.
En caso que se quieran conservar contenido de la tabla interna destino, usamos la cláusula APPENDING TABLE en lugar de INTO TABLE.
es recomendable usar CLEAR y REFRESH antes de la tabla interna antes de realizar la selección.
Si quisieramos obtener los datos el campo DNI deberíamos crear una tabla auxiliar solo con el campo DNI, para alojar el resultado de la consulta.
SELECT dni
FROM nombre_tabla
INTO tabla_interna_aux.
**Siempre después de un SELECT se debe preguntar por el SY-SUBRC para saber como proseguir.
Si quisieramos obtener la primera ocurrencia de la tabla ZTABLA_USUARIOS donde se cumpla determinada condición debemos usar la clausula SINGLE
CLEAR wa_usuarios.
SELECT SINGLE *
FROM ztabla_usuarios
INTO wa_usuarios
WHERE nombre_ape NE space.
Si quisieramos hacer la consulta para obtener el DNI, ya no sería necesaria la estructura WA USUARIOS sino que se guarda en una variable como V_DNI
CLEAR v_dni
SELECT SINGLE dni
FROM ztabla_usuarios
INTO v_dni
WHERE nombre_ape NE space.
para obtener una table de los registros que cumplan una condicion, pero queremos guardarlos en una tabla interna, queno tiene la misma estructura que la tabla, usamos 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_usu = 'A'.
La sentencia INTO CORRESPONDING FIELDS OF TABLE realiza la comparación de los campos teniendo en cuenta el tipo y la posición de cada uno de ellos.
Es decir, en la tabla 1 existe un campo tipo char (4) en la posición 5, entonces en la tabla 2 debe haber un campo tipo char(4) en la misma posición para que sea correcta la comparación.
SELECT es totalmente igual para el programador ABAP si escribimos primero la sección FROM y despues INTO o al Revés.
Para contar la cantidad de usuarios con una condición usamos
SELECT COUNT (*)
INTO v_activos
FROM ztabla_usuarios
WHERE estado_usu = 'A'.
Para obtener una tabla de todos los registros que existan en una tabla interna, entonces usamos FOR ALL ENTRIES IN
SELECT *
INTO TABLE ti_usuarios
FROM ztabla_usuarios
FOR ALL ENTRIES IN ti_proveedores
WHERE dni = ti_proveedores-dni.
si quisieramos obtener todos los registros que cumplan con un patrón de texto en alguno de sus campos, debemos usar la sentencia LIKE
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios
WHERE nombre_ape LIKE 'A%'.
 
 
 
Sobre el autor
Publicación académica de Jair Sneider Reyes Zabala, en su ámbito de estudios para la Carrera Consultor ABAP.
Jair Sneider Reyes Zabala
Profesión: Tecnólogo en Análisis y Desarrollo de Sistemas de Información. - Colombia - Legajo: HS34M
✒️Autor de: 54 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Tecnólogo bilingue en análisis y desarrollo de sistemas, actualmente analista de mesa de ayuda semisenior, conocimiento básico de sap basis; actuamente en formación como programador sap abap.
Certificación Académica de Jair Reyes