✒️ABAP El lenguaje SQL y la sentencia SELECT
ABAP El lenguaje SQL y la sentencia SELECT
CLEAR WA_USUARIOS.
REFRESH TI_SFLIGHT.
SENTENCIAS SELECT
SELECT *
FROM SFLIGHT
INTO TABLE TI_SFLIGHT
WHERE S_FLIGHT-FLIGHT ='001'.
Si quisieramos obtener de una tabla los registros que cumplan una condicion pero queremos guardarlos en una tabla interna que no tiene la misma estructura que la tabla, entonces tenemos que usar la clausula INTO CORRESPONDING FIELDS OF TABLE. Se utiliza con un area de trabajo al area utilizada para leer la tabla,
Realiza la comparacion de los campos teniendo en cuenta los tipos de los campos de cada tabla y la posicion de cada uno de ellos (ej: un campo de tipo char de 4 posiciones en cada tabla).
La clausula IN se utiliza para los select-options en las condiciones de un select.
ej: select * from ztabla_usuarios
into table ti_usuarios
where nombre_ape = p_nomape
and estado_usu in s_estado.
La clausula MAX se utiliza para obtener el valor mas alto de un campo en especifico de un select.
ej: select single max (dni)
into v_dni
from ztabla_usuarios
where estado_usu = 'A'.
es igual poner la clausula from antes del into o despues en la clausula select.
La clausula COUNT es para saber la cantidad de algun campo en un select
ej;
SELECT COUNT(*)
INTO V_ACTIVOS
FROM ZTABLA_USUARIOS
WHERE ESTADO_USU = 'A'.
Si quisieramos obtener de una tabla todos los registros que existen 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.
ej:
SELECT *
INTO TABLE TI_USUARIOS
FROM ZTABLA_USUARIOS
FOR ALL ENTRIES IN TI_PROVEEDORES
WHERE DNI = TI_PROVEEDORES-DNI.
Se recorre una tabla interna donde cumpla con una condicion de la tabla transparente y que la guarde en otra tabla interna.
Esto se podria hacer con un loop pero el performance es mucho mejor con FOR ALLENTRIES IN ya que se accede una sola vez a la base de datos.
Si quisieramos obtener los registros que cumplan con un patron de texto en algunos de sus campos, debemos utilizar la sentencia LIKE.
ej:
SELECT *
FROM ZTABLA_USUARIOS
INTO TABLE TI_USUARIOS
WHERE NOMBRE_APE LIKE 'A%'.
SE DEBE HACER LEAR Y REFRESH (EVITAR EL USO DE * ).
PREGUNTAR POR EL SY-SUBRC PARA SABER SI SE DEBE PROSEGUIR
 
 
 
Agradecimiento:
Ha agradecido este aporte: Edgar Moreno Tello
Sobre el autor
Publicación académica de Oscar Guillermo Rodriguez Villate, en su ámbito de estudios para la Carrera Consultor ABAP.
Oscar Guillermo Rodriguez Villate
Profesión: Ingeniero de Sistemas - Colombia - Legajo: WM49P
✒️Autor de: 103 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Oscar Rodriguez