0

我为我的 ALV_GRID 使用布局的变体:

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

如您所见,我将考虑显示变体ls_varia,但稍后当我刷新表格时,此显示变体丢失了!

当我单击某些按钮或触发某些操作时,我会像这样刷新我的表格:

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

如您所见,我正在尝试检索显示变体并重新分配给我的 ALV 但什么也没有,并且没有考虑到这一点。

谢谢,最好的问候

4

0 回答 0