rel="File-List" href="file:///C:%5CWINDOWS%5CTEMP%5Cmsohtml1%5C01%5Cclip_filelist.xml" target="_blank" rel="external nofollow" > rel="Edit-Time-Data" href="file:///C:%5CWINDOWS%5CTEMP%5Cmsohtml1%5C01%5Cclip_editdata.mso" target="_blank" rel="external nofollow" >
ALV提供了強大的标準功能,通過這些标準的功能我們可以對ALV清單進行設定它的顯示布局和顯示内容,如果我們下次還想用選擇的方式顯示這次設定的布局的話,那就要用到ALV的布局(Layout)功能了。通過布局功能,我們隻需設定一次,以後都可以通過選擇布局來顯示之前所設定的布局。
1. 選擇螢幕選擇之前設定好的布局
2. 顯示ALV清單
3. 我們還可以設定多個布局(Layout)
下面是源代碼
PARAMETERS p_layout LIKE disvariant-variant.
TYPES ty_tab_spfli TYPE spfli OCCURS 0.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout.
PERFORM f_f4_layout CHANGING p_layout.
START-OF-SELECTION.
PERFORM f_display.
*&---------------------------------------------------------------------*
*& Form f_getdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_SPFLI text
*----------------------------------------------------------------------*
FORM f_getdata TABLES pt_spfli TYPE ty_tab_spfli.
SELECT * FROM spfli INTO TABLE pt_spfli.
ENDFORM. "f_getdata
*&---------------------------------------------------------------------*
*& Form f_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_display.
DATA: lt_spfli TYPE ty_tab_spfli,
ls_variant TYPE disvariant.
PERFORM f_getdata TABLES lt_spfli.
PERFORM f_variant_build CHANGING ls_variant.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_structure_name = 'SPFLI'
i_save = 'U'
is_variant = ls_variant
TABLES
t_outtab = lt_spfli.
ENDFORM. "f_display
*&---------------------------------------------------------------------*
*& Form f_variant_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_VARIANT text
*----------------------------------------------------------------------*
FORM f_variant_build CHANGING p_variant TYPE disvariant.
p_variant-report = sy-repid.
p_variant-variant = p_layout.
ENDFORM. "f_variant_build
*&---------------------------------------------------------------------*
*& Form f_f4_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_VARIANT text
*----------------------------------------------------------------------*
FORM f_f4_layout CHANGING p_variant TYPE disvariant-variant.
DATA: ls_variant TYPE disvariant,
l_exit TYPE char1.
ls_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = ls_variant
i_save = 'A'
IMPORTING
e_exit = l_exit
es_variant = ls_variant
EXCEPTIONS
not_found = 1.
IF sy-subrc = 1.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF l_exit IS INITIAL.
p_variant = ls_variant-variant.
ENDIF.
ENDIF.
ENDFORM. "f_f4_layout