Layout 设置

默认情况下,SALV 的 Tool Bar 上只有修改 Layout 一个按钮,需要对功能进行拓展。

CL_SALV_LAYOUT

  • SET_KEY:Set Layout Key,Logical Group Name
  • SET_INITIAL_LAYOUT:设置初始布局
  • SET_DEFAULT:设置默认布局
  • SET_SAVE_RESTRICTION:设置布局保存
*$*$*.....CODE_ADD_1 - Begin..................................1..*$*$*
  PRIVATE SECTION.
    METHODS: set_layout 
        CHANGING co_alv TYPE REF TO cl_salv_table.
*$*$*.....CODE_ADD_1 - End....................................1..*$*$*

*$*$*.....CODE_ADD_2 - Begin..................................2..*$*$*
    CALL METHOD set_layout
      CHANGING co_alv = gr_table.
*$*$*.....CODE_ADD_2 - End....................................2..*$*$*

*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*
  METHOD set_layout.
    DATA: lr_layout  TYPE REF TO cl_salv_layout,
          lv_variant TYPE slis_vari,
          ls_key    TYPE salv_s_layout_key. "该结构包含了布局变式所属程序名"
    "Get layout object"
    lr_layout = co_alv->get_layout( ).
    "Set Layout save restriction"
    "1. Set Layout Key .. Unique key identifies the Differenet ALVs"
    ls_key-report = sy-repid.
    lr_layout->set_key( ls_key ).
    "2.设置保存Layout按钮"
    lr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
    "3.允许保存布局为变式"
    lr_layout->set_default( abap_true ).
    lv_variant = 'DEFAULT'.
    lr_layout->set_initial_layout( lv_variant ).
  ENDMETHOD.                    " set_layout "
*$*$*.....CODE_ADD_3 - End....................................3..*$*$*