martes, 7 de julio de 2020

Tablas Internas de Tipo Rango

En algunas ocasiones es necesario declarar tablas internas dentro de nuestros programas que sean tipo rango, para ello debemos saber en que momento usarlas, para que usarlas y como usarlas.

Es por ello que este nuevo post lo dedicaremos a aclarar todo lo relacionado a las tablas tipo rango.

¿En que momento usamos las tablas tipo rango?

Normalmente lo usamos en la consultas Open SQL en la condición WHERE, pero tambien pueden ser usadas en estructuras de control WHILE o en estructuras de selección IF.

¿Para que usarlas?

Se usan principalmente para agrupar los datos, en los programas podemos verlo como si fuera un parámetro de selección usando un SELECT-OPTIONS.

¿Cómo usarlas?

Para usar este tipo de objetos usamos la palabra TYPE RANGE OF

Ejemplo:

Queremos crear un tabla interna para la variable kunnr la cuál almacena código de clientes:

DATA: rg_kunnr TYPE RANGE OF kna1-kunnr.



Al realizar  esa declaración, se crea una tabla interna con la misma estructura de una tabla de selección (SELECT-OPTIONS), esta tabla de selección contiene una cabecera con las columnas SIGN, OPTION, LOW y HIGH.

Veamos que significa cada una de estas columnas:

  • SIGN: Es de tipo CHAR, longitud 1.
Los valores permitidos dentro de esta columna son:
"I" para incluir
"E" para exluir
Es decir, con este valor se determina si el valor de esta fila se incluye o se excluye del resultado.
  •         OPTION: Es de tipo CHAR, longitud 2.


Los valores permitidos dentro de esta columna son:

"EQ" equivalente a "=" y significa "Igual a"

"NE" equivalente a "<>" y significa "Diferente a"

"CP" significa "Contiene patrón" Se debe agregar el carácter "*" para incluir cualquier patrón incluyendo espacios en blanco y con el carácter "+" incluye cualquier patrón excluyendo espacios en blanco.

 "NP" significa "No patrón" Se usa como "CP" pero para indicar la exclusión del patrón indicado.

"GE" equivalente a ">="  y significa "Mayor o igual que"

"LE" equivalente a "<=" y significa "Menor o igual que"

"GT" equivalente a ">" y significa "Mayor que"

"LT" equivalente a "<" y significa "Menor que"

"BT" significa "Entre dos valores" Incluye un intervalo y se usa LOW para el valor bajo y HIGH para el valor alto

"NB" significa "Excluye entre dos valores" Excluye el intervalo indicado entre LOW y HIGH.

  •         LOW: Acá se indica el valor que corresponde según la variable de tipo rango que haya sido creado

  •         HIGH: Acá se indica el valor más alto en caso de usar el operador "BT" o "NB".


Ejemplos de usos:

Rellenemos la tabla rg_kunnr con el código de cliente "0000010015":


rg_kunnr-sign = 'I'.
rg_kunnr-option = 'EQ'.
rg_kunnr-low = '0000010015'.
APPEND rg_kunnr.

Con ello estamos indicando que la tabla interna rg_kunnr solo contiene el código de cliente "0000010015":

Ahora sólo queremos excluir el código de cliente "0000010020"

rg_kunnr-sign = 'E'.
rg_kunnr-option = 'EQ'.
rg_kunnr-low = '0000010020'.
APPEND rg_kunnr.

Con ello estamos indicando que la tabla interna rg_kunnr excluye el código de cliente "0000010020"

Ahora queremos excluir los códigos de cliente entre "0000080000" y "0000089999":


rg_kunnr-sign = 'E'.
rg_kunnr-option = 'BT'.
rg_kunnr-low = '0000080000'.
rg_kunnr-high= '0000089999'.
APPEND rg_kunnr.

Con ello estamos indicando que se excluyen los codigos de cliente 1.        entre "0000080000" y "0000089999".

Ahora queremos incluir todos los que inicien en el código "0000012"

rg_kunnr-sign = 'I'.
rg_kunnr-option = 'CP'.
rg_kunnr-low = '0000012+'.
APPEND rg_kunnr.

Ejemplos aplicados en programas:

  •          Consultas open SQL:

SELECT *  
INTO TABLE ti_kna1
FROM kna1
WHERE kunnr IN rg_kunnr.

  •          Estructuras de Control:

WHILE wa_kunnr IN rg_kunnr.
    ...
ENDWHILE.


  •          Estructuras de Selección:

IF wa_kunnr IN rg_kunnr.
    
ENDIF.








No hay comentarios. :

Publicar un comentario