ABAP Table Expressions NW 7.4 Release
ABAP Table Expressions
En el release 7.4 de NW se incluyeron las ABAP Table Expressions, las cuales son una nueva forma que brinda SAP para acceder a las tablas internas. Ciertamente, esto es posible gracias a los ABAP operand positions ( operadores de posición ), los cuales nos permiten accesar a una tabla interna a través de una llave o un indice. Como resultado, obtendremos una línea de los registros incluidos en la tabla, podemos verlo como una alternativa mejorada al tradicional READ TABLE.
La estructura básica de las expresiones de tabla es la siguiente:
tab[ Expresión ].
Chaining Table Expression
Podemos encadenar las Table Expression con el selector » – » a otras expresiones o con el operador » -> » hacia algún componente de tipo objeto.
Cuando el operador constructor VALUE o REF se indica antes del encadenamiento para manejar el resultado, solo se verá afectado el resultado final. Es decir, los resultados intermedios son siempre Field Symbols temporales y deben leerse las notas de rendimiento correspondientes.
La estructura básica de encadenamiento es la siguiente:
tab[ ... ]-componente.
Excepción CX_SY_ITAB_LINE_NOT_FOUND
Un detalle muy importante sobre los operadores de posición, es que al momento de leer una ABAP internal table, en caso de no encontrar un registro con la llave o el índice, se propaga la excepción CX_SY_ITAB_LINE_NOT_FOUND. Adicional, dejan fuera el sy-subrc como variable de control en caso de que no se haya podido realizar la operación. Es decir, hay que tener cuidado al momento de utilizarlos, ya que si no se maneja adecuadamente este escenario, nuestro programa podrá estar mandando un dump innecesario.
ABAP Table Expressions Ejemplo
Índice tabla interna
Para el primer ejemplo vamos a acceder a un registro tomando como referencia el indice que le corresponde de nuestra tabla interna. Ciertamente, este método de accesar a la información es ideal cuando sabemos en donde se encuentra nuestra fila o cuando queremos la primera posición de nuestro conjunto de datos. Para este ejemplo solo debemos indicar el valor 1 como índice entre los corchetes.
DATA(result) = tab[ 1 ].
Índice tabla interna con chaining
En el ejemplo anterior obtendremos en nuestra variable result, la cual se crea con una declaración en línea, el primer registro de nuestra tabla interna. Ahora, si queremos el primer campo del primer registro, podemos utilizar la técnica de ABAP chaining que vimos anteriormente, donde después del selector «-» colocaremos el nombre del campo que deseamos recuperar.
DATA(result) = tab[ 1 ]-campo1.
Acceso con llave libre
Otra forma de obtener los registros de nuestra tabla interna es a través de una llave, no necesariamente debe ser la llave primaria. Sin embargo, se deben definir los campos con los cuales se pretende hacer la búsqueda de datos. Es importante mencionar que sí 2 registros cumplen con el criterio de búsqueda, el sistema mostrará el primero que encuentre.
DATA(result) = tab[ campo1 = 'AA' ].
Ahora veamos el siguiente ejemplo, donde después de seleccionar registros de la base de datos buscaremos con la llave completa el registro que necesitamos.
Como resultado obtendremos la siguiente pantalla, podemos observar que el registro que estábamos buscando corresponde con la llave que indicamos en cómo Table Expression.

Documentación oficial SAP
Para más información sobre el tema puedes visitar el siguiente enlace