Tablas internas de tipo rango en programas ABAP

1

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.


LOW: Es del tipo con que se definió el objeto de datos rango, para el caso que estamos observando es de tipo MATNR. Nos sirve como operando a la hora de realizar las operaciones lógicas que sean diferentes a “BT” y “NB” .

HIGH: Al igual que LOW es del tipo con que se definió el objeto de datos rango, para el caso que estamos observando es de tipo MATNR. Esta columna nos sirve como operando a la hora de realizar operaciones lógicas que incluyan intervalos, es decir, los operadores lógicos “BT” y “NB”.

A la hora de definir nuestro objeto de datos, debemos hacer uso de una estructura que tenga las mismas columnas de la tabla interna, para esto creamos otro objeto de datos pero esta vez de tipo estructura.

Esta estructura nos va a servir para definir nuestra tabla interna con los diferentes operandos y los operadores lógicos que queremos usar para evaluar el conjunto de datos.

Ejemplo 1:
Queremos que nuestro rango incluya el material 30000001.


Ejemplo 2:
Queremos que nuestro rango incluya los materiales que comiencen con 3.


Ejemplo 3:
Queremos que nuestro rango incluya los materiales que van del 20000000 al 29999999.


Uso del objeto de datos rango en programas ABAP.

En estructuras de selección: 


En estructuras de control:


En consultas SQL:


El objeto de datos rango permite que nuestro código sea más claro y compacto, ya que podemos mediante ellos hacer operaciones lógicas complejas sin necesidad de crear código repetitivo.

Tags

Publicar un comentario

1Comentarios
  1. 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
Publicar un comentario