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.

Añadir un comentario

Tu dirección de correo electrónico no será publicada.