For All Entries ABAP – Sentencia SAP
Tabla de Contenidos
For All Entries ABAP
FOR ALL ENTRIES ABAP sirve para obtener los registros de una tabla, donde una o múltiples columnas en común concuerden con el mismo valor. Es decir, esta consulta ABAP nos traerá la relación de elementos definidos por una columna en común .

Tablas Internas
Recordemos que las tablas internas en ABAP almacenan datos en memoria que obtenemos de alguna estructura, de otra tabla interna o de una consulta Open SQL. Ciertamente, hay que tener una tabla interna con datos, para hacer la relación For All Entries en ABAP, caso contrario, traeremos todo el universo de la tabla; ocasionará problemas al utilizar demasiados recursos de la memoria.
¿ Cómo funciona For All Entries ?
La expresión lógica de comparación se analiza para cada fila de la tabla interna. El grupo de resultados de la instrucción For All Entries es la unión de los conjuntos de resultados producidos por las evaluaciones particulares. Además, las filas que suceden más de una vez, se eliminan del grupo de resultados de forma automática. Ciertamente se considera el contenido completo de una fila.
For All Entries ABAP Ejemplo
SELECT carrid FROM spfli FOR ALL ENTRIES IN @carriers WHERE carrid = @carriers-carrid INTO TABLE @DATA(result2).
En este ejemplo se puede observar que se está haciendo un SELECT a la tabla transparente spfli para todos los registros obtenidos de la tabla carriers, los cuales están almacenados en la tabla interna carriers. Adicional, se debe indicar cuál es la columna que hace la relación entre las dos tablas SAP; en este caso es la columna carrid. Por último, se indica que los registros se almacenaran en la tabla interna result 2.
Es importan mencionar que en nuestro ABAP query, tenemos que escapar las variables con el carácter @. Adicional, en ese ejemplo la tabla interna «result2» se está creando con una declaración en línea ABAP.
¿ Cuándo utilizas un Inner Join y cuándo un For All Entries ?
Primero, es imposible utilizar un Inner Join en ABAP cuando quieres hacer una relación entre una consulta a base de datos y una tabla interna. El segundo punto a considerar es el volumen de datos, en caso de requerir una extracción considerable es viable la utilización del Inner Join. Sin embargo, hay que diseñar bien el anidamiento de consultas, ya que hay ciertas reglas que se deben cumplir para un adecuado performance del servidor. Además, de que el Inner Join es muy exigente a la hora de pedir los campos llave en el filtro.
Puntos a considerar
Otro punto a considerar es que dentro de nuestro For All Entries no se puede utilizar la adición select single, tampoco se puede combinar con expresiones SQL y no podemos utilizar el GROUP BY dentro de nuestro query. Además, esta instrucción no se puede combinar con la adición UNION.
Con respecto a las filas que aparecen múltiples veces en el conjunto de resultados, la adición ABAP FAE tiene el mismo comportamiento que con la adición distinct en la definición del conjunto de selección. Ciertamente, contrario a distinct, las filas no siempre se remueven del sistema de base de datos, sino que en algunas ocasiones se remueven primero del conjunto de resultados en el servidor de aplicaciones. Posteriormente, los registros duplicados se quitan del sistema de la base de datos si el select se puede pasar al sistema de la base de datos como una sola declaración SQL. Se admite la adición distinct. Si es necesario distribuir la sentencia select a varias sentencias SQL antes de pasarla o si se especifican columnas de los tipos string y rawstring más lchr y lraw en la lista select; las filas se agregan en el servidor de aplicaciones.
SAP For All Entries Documentación Oficial
Revisa todas las consideraciones en la documentación oficial de SAP