✒️ABAP / El lenguaje SQL y la sentencia SELECT Por Juan Carvajal Oyarzun
ABAP El lenguaje SQL y la sentencia SELECT

Instrucciones SQL
SELECT
|
* Selecciono todos los registros
SELECT *
FROM ztabla_usuarios
INTO TABLE ti_usuarios.
|
· No se recomienda el uso de *
· Se recomienda limpiar o vaciar tabla interna antes de selección
· Si se quiere agregar data a tabla interna sin eliminar la que ya esta en su memoria, se debe usar el comando APENDING TABLE en lugar de INTO TABLE.
· Si solo se quiere obtener 1 campo(dni ejemplo), es recomendable usar una tabla interna auxiliar que contenga solo el campo requerido.
|
SELECT dni
FROM ztabla_usuarios
INTO TABLE ti_usuarios_aux.
|
· Siempre después de un select preguntar con SY-SUBRC, para saber si se continua el programa o se cancela
· Si se quiere obtener la primera ocurrencia de una determinada condición, se usara la clausula SINGLE.
|
CLEAR wa_usuarios.
SELECT SINGLE *
FROM ztabla_usuarios
INTO wa_usuarios
WHERE nombre_ape NE space.
|
· Seleccionar el registro de la primera ocurrencia de dni donde se cumpla la condición.
| CLEAR wa_usuarios. SELECT SINGLE * FROM ztabla_usuarios INTO wa_usuarios WHERE nombre_ape NE space. |
· Seleccionar resgitrso de una condición, pero guardarlos en una tabla interna que no tiene la misma estructura, para esto usaremos la instrucción ITO CORRESPONDINGS FIELDS OF TABLE.
| * 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'. |
· Seleccionar en base a parámetros ingresados por el usuario. Los parametros vienen en variables.
|
* 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 clausula in se utiliza para los select-options.
· Si se requiere seleccionar el usuario activo con mas alto dni, usaríamos la clausula MAX
| * Obtengo el usuario activo con DNI más alto SELECT SINGLE MAX( dni ) INTO v_dni FROM ztabla_usuarios WHERE estado_usu = 'A'. |
· Para contra la cantidad de usuarios activosm se usa la clausula COUNT
| SELECT COUNT(*) INTO v_activos FROM ztabla_usuarios WHERE estado_usu = 'A'. |
· Si se quisiera consultar os registros de la tabla usuarios y comparar la existencia de estos con ina tabla interna se usa la sentencia FOR ALL ENTRIES IN.
| * 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. |
** se recomienda el uso de FOR ALL ENTRIES IN, ya que de otra forma accederíamos don un loop para hacer la comparación con la tabla interna y consultaríamos la BD la misma cantidad e registros que tenga la tabla interna, por lo que no es óptimo.
· Si se quiere consultar y filtrar por una patron de texto, entonces usaremos la sentencia LIKE.
|
SELECT * FROM ztab_usuario INTO TABLE ti_usuarios WHERE nompre_ape LIKE=’A%’. |
 
 
 
Sobre el autor
Publicación académica de Juan Pablo Carvajal Oyarzun, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.
Juan Pablo Carvajal Oyarzun
Profesión: Ingeniería en Informática - Chile - Legajo: PA39Z
✒️Autor de: 8 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor SAP BASIS NetWeaver Nivel Avanzado
- Master Funcional ABAP
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
























