【问题标题】:How to display itab in ALV with dynamic layout variant?如何使用动态布局变体在 ALV 中显示 itab?
【发布时间】:2019-02-11 10:06:33
【问题描述】:

我正在使用 CL_GUI_ALV_GRID 类和 dynpro 屏幕通过 ALV 工具显示内部表。

在我的选择屏幕中,我有一个下拉列表,用户可以在其中为显示的内部表格选择布局变体。布局变体存储在表LTDX中。

现在,回到我的问题,如何根据用户的选择显示变体?

【问题讨论】:

    标签: abap alv


    【解决方案1】:

    您在初始set_table_for_first_display 方法中提供is_variant 参数:

    DATA: ls_variant TYPE disvariant.
    
    
    CLEAR: ls_variant.
    ls_variant-report   = sy-repid.
    ls_variant-variant  = pa_varid. "<<< this is the name of the variant
    
    CALL METHOD gro_alv100->set_table_for_first_display
          EXPORTING
            is_variant                    = ls_variant
            ...
    

    编辑:好吧,你没有接受简单的答案,所以我将添加手动替代:

    FORM set_variant USING ps_variant TYPE disvariant.
    
      DATA: lf_user_specific TYPE char1,
            ls_stable  TYPE lvc_s_stbl VALUE 'XX'.
    
      CHECK ps_variant-variant IS NOT INITIAL.
    
      lf_user_specific = boolc( ps_variant-variant(1) <> '/' ).
      CALL FUNCTION 'LVC_VARIANT_SELECT'
        EXPORTING
          i_dialog            = space
          i_user_specific     = lf_user_specific
          i_default           = space
          it_default_fieldcat = gt_fcat
        IMPORTING
          et_fieldcat         = gt_fcat
          et_sort             = gt_sort
          et_filter           = gt_filter 
        TABLES
          it_data             = gt_outtab
        CHANGING
          cs_variant          = ps_variant
        EXCEPTIONS
          wrong_input         = 1
          fc_not_complete     = 2
          not_found           = 3
          program_error       = 4
          data_missing        = 5
          OTHERS              = 6.
      IF sy-subrc <> 0.
      ENDIF.
    
      gro_alv100->set_variant( EXPORTING is_variant = ps_variant ).
      gro_alv100->set_frontend_fieldcatalog( EXPORTING it_fieldcatalog = gt_fcat ).
      gro_alv100->set_sort_criteria( EXPORTING it_sort = gt_sort ).
      gro_alv100->set_filter_criteria( EXPORTING it_filter = gt_filter ).
    
      gro_alv100->refresh_table_display( EXPORTING is_stable = ls_stable i_soft_refresh = abap_false ).
    ENDFORM.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      相关资源
      最近更新 更多