ABAP Inner Join entre dos tablas

ABAP Inner Join

ABAP Inner Join, esta sentencia de SQL en ABAP nos permite unir o combinar registros de dos o más tablas de bases de datos ( inner join 3 tablas ). En SQL ( open sql in sap abap ) se utilizan tres tipos de join:

ABAP Inner Join
Diagrama de venn

Join Externo

Outer Join: Retorna registros presentes en la tabla izquierda
Right Outer Join: Retorna registros presentes en la tabla derecha
Full Outer Join: Retorna registros presentes en ambas tablas

Join Interno

Esta operación los registros de la tabla A son unidos con los correspondientes de la tabla B que cumplan con la condición WHERE ABAP que se indique dentro de la del ABAP JOIN.

Join Cruzado

Aquí obtendremos el producto cartesiano de los registros de ambas tablas. Ciertamente, la tabla derivada contendrá el total de los registros de la tabla izquierda, combinados con cada registro que le corresponda de la tabla derecha.

ABAP Inner Join Ejemplo

SELECT c~carrname, p~connid, f~fldate
       FROM ( ( scarr AS c
         INNER JOIN spfli AS p ON p~carrid   = c~carrid
                              AND p~cityfrom = @p_cityfr
                              AND p~cityto   = @p_cityto )
         INNER JOIN sflight AS f ON f~carrid = p~carrid
                                AND f~connid = p~connid )
       INTO CORRESPONDING FIELDS OF TABLE @itab.

En este ejemplo abap join podemos observar lo siguiente, la regla principal de esta sentencia es que la expresión debe contener la condición JOIN seguida del operador ON. Ciertamente, ON se encarga de determinar cuales serán los campos de ambas tablas que se utilizaran para hacer la relación.

Otra regla importante es que la fuente de datos que estemos utilizando, debe ser una tabla SAP transparente. Es decir, las pool tables y cluster tables, no pueden ser unidas mediante la sentencia JOIN.

Es posible indicar la expresión JOIN para unir en ambos lados. Por lo tanto, una expresión JOIN puede estar anidada de forma recursiva. Además, la cantidad de fuentes de datos vinculadas entre sí es limitada. Ciertamente, el mayor número se indica para que la instrucción SELECT se ejecute en todos los sistemas de bases de datos admitidos; actualmente es de 50 . Sin embargo, si se conocen estáticamente, más de 49 JOINS generan un error de sintaxis. De lo contrario, producen un error de tiempo de ejecución.

Consideraciones con ABAP Inner Join

En Inner join in sap abap no se puede utilizar la adición Order By Primary Key .

El crossjoin debe utilizarse con mucho cuidado, ya que el producto cartesiano puede generar un desbordamiento de datos.

En caso de que la misma columna se encuentre en ambas tablas o fuentes de datos, deberá indicarse esta para que el sistema SAP pueda obtener la que necesitamos. De lo contrario, se generaría una ambigüedad. Esto lo podemos lograr colocando el operador ~ después de la fuente de datos.

Cuando las columnas del lado derecho se indiquen como LEFT OUTER JOIN o las columnas del lado izquierdo se indiquen como RIGHT OUTER JOIN, después de adicionar la instrucción ORDER BY, el orden de clasificación (en el caso de valores nulos) puede depender del sistema de base de datos.

Documentación Oficial SAP

Si necesitas ahondar más en el tema del ABAP Inner Join, puedes visitar el siguiente enlace. Ciertamente, encontrás cuales son las reglas más especificas acerca de esta instrucción ABAP.

Te invitamos a visitar más tutoriales ABAP en ABAPMachine.