0

I use variant of layout for my ALV_GRID Like that :

FORM display_alv .
  DATA: lr_event    TYPE REF TO lcl_zcad_0004,
        ls_varia    TYPE disvariant.

  IF gr_alvpl IS NOT BOUND.
    PERFORM build_fieldcatalog.
    PERFORM alv_clear_std_toolbar.
    PERFORM build_alv_table.

    IF gv_vmode EQ 'N'.
      PERFORM alv_dragdrop.
    ENDIF.

    CREATE OBJECT gr_alvpl
       EXPORTING
         i_parent                    = gc_cnalv.

    CREATE OBJECT lr_event.

    gs_layou-sel_mode             = 'D'.
    gs_layou-ctab_fname           = 'COLCL'.
    gs_layou-cwidth_opt           = 'A'.

    SET HANDLER: lr_event->handle_toolbar   FOR gr_alvpl,
                 lr_event->handle_ucomm     FOR gr_alvpl,
                 lr_event->double_click     FOR gr_alvpl.

    IF gv_vmode EQ 'N'.
      SET HANDLER: lr_event->on_drag          FOR gr_alvpl,
                   lr_event->on_drop          FOR gr_alvpl.
    ENDIF.

    ls_varia-report                 = sy-repid.

    CALL METHOD gr_alvpl->set_table_for_first_display
        EXPORTING
          it_toolbar_excluding      = gt_exctb
          is_layout                 = gs_layou
          i_save                    = 'A'
          is_variant                = ls_varia
        CHANGING
          it_outtab                 = gt_tbalv
          it_fieldcatalog           = gt_fldct.

*     Calling the interactive toolbar method of ALV
      CALL METHOD gr_alvpl->set_toolbar_interactive.

      PERFORM maj_titre_alv.
  ENDIF.

ENDFORM.                    " DISPLAY_ALV

As you can see I shall consider a display variant ls_varia, but later when I refresh the table, this display variant is lost!

When I click on certain buttons or triggers certain actions , I do a refresh my table like that :

FORM refresh_alv USING iv_rfalv TYPE xfeld.
  DATA: ls_varia    TYPE disvariant.

  PERFORM build_fieldcatalog.

  IF iv_rfalv EQ 'X'.
    gr_alvpl->set_frontend_layout( gs_layou ).
    CALL METHOD gr_alvpl->set_frontend_fieldcatalog
                EXPORTING
                  it_fieldcatalog = gt_fldct.

    PERFORM maj_titre_alv.
    gr_alvpl->get_variant( IMPORTING ES_VARIANT = ls_varia  ).
    gr_alvpl->set_variant( EXPORTING is_variant = ls_varia
                                     i_save    = 'A' ).
    CALL METHOD gr_alvpl->refresh_table_display(
*                                                  is_stable       = ls_stabl
                                                 i_soft_refresh  = 'X'
                                                   ).
     gr_alvpl->set_variant( is_variant = ls_varia ).
  ENDIF.

ENDFORM.                    " REFRESH_ALV

As you can see I am trying to retrieve the display variant and reallocate to my ALV but nothing , and this is not taken in consideration.

Thanks, Best regards

Sandra Rossi
  • 11,934
  • 5
  • 22
  • 48
shmoolki
  • 1,551
  • 8
  • 34
  • 57

0 Answers0