Listbox en una celda en ALV OO
mayo 29, 2022
Dentro de las posibilidades que tenemos en las nuevas herramientras para programar en ABAP, existe la posibilidad de completar tablas o rangos de una manera muy eficiente.
He utilizado estas dos maneras que han servido bastante para el uso que se le ha querido dar.
Opción 1:
Primero definimos el rango:
TYPES: lty_koart TYPE RANGE OF koart.
DATA: lr_koart TYPE lty_koart.
Luego, creamos un DEFINE en el código (que es similar a una macro):
DEFINE range_koart.
lr_koart = VALUE lty_koart(
BASE lr_koart (
sign = ‘I’
option = ‘EQ’
low = &1
)
).
END-OF-DEFINITION.
Y para completar, llamamos a la macro y le pasamos los parámetros en &1:
range_koart: ‘S’, ‘D’.
El output es el siguiente:
Como trabaja? Primero lo que hacemos es marcar cual va a ser la tabla a ser completada (o rango), luego le definimos el VALUE (que en todos los casos, el valor es el tipo del rango a completar), y luego, el valor BASE, que no es otro que el rango mismo. Dentro de los últimos paréntesis, le decimos que campos de la estructura se van a completar y con que valores: hay dos que son una constante, y uno que es un parámetro de la macro.
Opción 2:
Para este caso, vamos a tomar, como ejemplo, la obtención de datos de una tabla de parámetros, como es la TVARVC:
Si quueremos contruir un rango deste esta tabla, podemos hacer lo siguientes:
lr_blart = VALUE lty_blart(
FOR <lfs_tvarvc> IN lt_tvarvc
( LINES OF COND #(
WHEN <lfs_tvarvc>-name = ‘ZFI_IIGG_BLART’
THEN VALUE #( ( sign = <lfs_tvarvc>-sign
option = <lfs_tvarvc>-opti
low = <lfs_tvarvc>-low
high = <lfs_tvarvc>-high ) ) ) ) ).
Como hicimos en el paso uno, primero tenemos que definir el tipo de rango.
En este caso en particular, luego de marcar cual va a ser la tabla a llenar, le decimos que lo vamos a hacer desde otra tabla ya existente, que en este caso, es la tabla interna lt_tvarvc. La sentencia FOR crea dinámicamente un Field-Symbol (o una workarea, si así lo quisieran), se le define bajo que condición se va a completar la tabla (con la sentencia WHEN) y luego, con que valores se van a completar los campos del rango correspondiente.
El output es el siguiente:
mayo 29, 2022
mayo 29, 2022
mayo 29, 2022
mayo 29, 2022
mayo 29, 2022