Function实现ALV Table五:布局功能

来源:互联网 发布:js获取当前时间戳 秒 编辑:程序博客网 时间:2024/05/16 11:54

ALV提供了强大的标准功能,通过这些标准的功能我们可以对ALV列表进行设置它的显示布局和显示内容,如果我们下次还想用选择的方式显示这次设置的布局的话,那就要用到ALV的布局(Layout)功能了。通过布局功能,我们只需设置一次,以后都可以通过选择布局来显示之前所设置的布局。

 

1.     选择屏幕选择之前设置好的布局

 

2.     显示ALV列表


3.     我们还可以设置多个布局(Layout

 

下面是源代码

PARAMETERS p_layout LIKEdisvariant-variant.

 

TYPES ty_tab_spfli TYPE spfliOCCURS 0.

 

AT SELECTION-SCREEN ONVALUE-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_spfliTYPE 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 CHANGINGp_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 CHANGINGp_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' NUMBERsy-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

 

原创粉丝点击