天天看點

Function實作ALV Table五:布局功能

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.     選擇螢幕選擇之前設定好的布局

Function實作ALV Table五:布局功能

2.     顯示ALV清單

Function實作ALV Table五:布局功能

3.     我們還可以設定多個布局(Layout)

Function實作ALV Table五:布局功能

下面是源代碼

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

繼續閱讀