En varios desarrollos ABAP se hace necesario el uso de tablas internas de tipo rango, las cuales suelen ser usadas en expresiones lógicas, ya sean estructuras de selección (IF), estructuras de control (WHILE) o consultas SQL en la condición WHERE. Se usan para poder abreviar o agrupar mejor varios datos de manera compacta.
Para declarar estos tipos de objetos de datos se hace uso de la palabra reservada TYPE RANGE OF.
En el siguiente ejemplo vamos a declarar un objeto de datos llamado RG_MATNR la cual va a ser una tabla interna de rangos para almacenar códigos de material.
A la tabla interna que se crea usando la anterior declaración se le denomina tabla de selección.
Al declarar un objeto de datos de tipo rango, se crea una tabla interna con la misma estructura de una tabla de selección, por lo general una tabla de selección está formada por una tabla interna y una lÃnea de cabecera, la tabla interna y su lÃnea de cabecera está conformada por las siguientes cuatro columnas: SIGN, OPTION, LOW y HIGH.
Campo Valor
SIGN I: Incluir ,E: Excluir
OPTION EQ, NE, GE, GT, LE, LT, CP, NP, BT, NB
LOW Valor del tipo que se definió en el rango
HIGH Valor del tipo que se definió en el rango
Operador Descripción
=, EQ Igual.
<>, NE Diferente, no igual.
>=, GE Mayor igual.
>, GT Mayor que.
<=, LE Menor igual.
<, LT Menor que.
CP Se hace uso del carácter “*” o ‘+’ para crear el patrón con el que deseamos llevar a cabo la operación lógica del operando que se coloca en la variable LOW. El carácter “*” representa cualquier carácter incluyendo espacios en blanco y el carácter “+” representa caracteres sin incluir espacios en blanco.
NP Tiene la misma descripción de CP salvo que la operación lógica no debe incluir el patrón que se coloca en la variable LOW.
BT Entre un valor y otro, se usa LOW y HIGH para saber de donde a donde se debe comparar el conjunto de datos.
NB Excluye el intervalo, es decir, trae el conjunto de datos que no se encuentra entre LOW y HIGH.
Alguien me puede decir, si existe una Limitante, en cuanto a registros que puede utilizar el Campo definido como Range. Me parece que si, pero no tengo la certeza.
ResponderBorrar