mercoledì 16 settembre 2009

Selezionare layout alv come parameter

Può capitare di voler lanciare un report che utilizza una ALV e di voler visualizzare il risultato utilizzando un layout precedentemente salvato.
Per far ciò è possibile utilizzare il seguente codice:

Definire il parameter per il layout:

PARAMETERS: pa_vari TYPE slis_vari.


Implementare una function che verrà chiamata come help di ricerca del parametro in selezione:

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_vari.
PERFORM alv_variant_f4 CHANGING pa_vari.



La funzione alv_variant_f4 avrà il seguente codice:

FORM alv_variant_f4 CHANGING pa_vari.
DATA: rs_variant LIKE disvariant.
DATA nof4 TYPE c.

CLEAR nof4.
LOOP AT SCREEN.
IF screen-name = 'PA_VARI'.
IF screen-input = 0.
nof4 = 'X'.
ENDIF.
ENDIF.
ENDLOOP.

rs_variant-report = sy-repid.
rs_variant-username = sy-uname.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = rs_variant
i_save = 'A'
IMPORTING
es_variant = rs_variant
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0 AND nof4 EQ space.
pa_vari = rs_variant-variant.
ENDIF.
ENDFORM.


Successivamente muovere il layout selezionato nel layout da utilizzare nell'alv:

MOVE pa_vari TO gs_variant-variant.

e passare il parametro alla function 'REUSE_ALV_GRID_DISPLAY' :

is_variant = gs_variant

Il risultato è una popup simile a quella mostrata in figura:




Nessun commento:

Posta un commento