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