Operador FILTER – Eficiencia Consumo Memoria
Este operador nos permite hacer un mejor uso en cuanto al tratamiento de las tablas internas de un proceso, obtendremos un mejor consumo de memoria y dotar谩 a nuestro c贸digo de una mayor eficiencia.
Es t铆pico ver en procesos como listado con un gran volumen de datos un SORT a una tabla interna con un elevado n潞 de registros y justo seguido un DELETE por alg煤n criterio.
Ser铆a algo as铆:
SORT i_tab by campo1 campo2 descending.
DELETE i_tab WHERE fechafin NE ‘00000000’. (para quedarnos con vigentes por ejemplo)
Ambas sentencias siendo una tabla interna con 100.000 registros por poner, puede conllevar un alto consumo en memoria e incluso puede llegar a dar DUMP por desbordamiento.
La sentencia FILTER a煤na ambas y es m谩s r谩pida y eficiente en memoria.
Su uso ser铆a:
Declaraci贸n de variables:
TYPES:聽BEGIN聽OF聽t_fechafin ,
fechafin TYPE聽zzeffest,
END聽OF聽t_fechafin ,
tt_fechafin TYPE聽HASHED聽TABLE聽OF聽t_fechafin WITH聽UNIQUE聽KEY聽ffest.
DATA:聽聽li_fechafin TYPE聽tt_fechafin .
USO:
li_fechafin = VALUE tt_fechafin ( ( fechafin = ‘00000000’ ) ).
i_tab2 = FILTER #( i_tab IN li_fechafin WHERE fechafin = fechafin ).
聽
Hemos tenido casos crtit铆cos con el uso de memoria del sistema y con esto hemos podido paliarlos.
Saludos.