OO实现ALV TABLE 四:ALV的显示样式

通过类CL_SALV_DISPLAY_SETTINGS我们可以设置ALV的显示样式,主要包括ALV表头名称,列表颜色间隔显示,水平线是否显示,竖线是否显示等。

 

1.首先我们要取得类CL_SALV_DISPLAY_SETTINGS的实例,根据类CL_SALV_TABLE的方法get_display_settings可以取得显示样式的实例。


lr_display = gr_table->get_display_settings( ).

2然后通过类CL_SALV_DISPLAY_SETTINGS的方法设置显示属性。

lr_display = gr_table->get_display_settings( ).

    lr_display->set_striped_pattern( 'X' ). "设置颜色间隔显示

    lr_display->set_list_header( 'Xin''s ALV' ). "设置ALV的抬头

    lr_display->set_horizontal_lines( '' ). "设置水平线是否显示

    lr_display->set_vertical_lines( '' ).    "设置垂直线是否显示

 

下面是效果图

OO实现ALV TABLE 四:ALV的显示样式_第1张图片 

 

下面是程序的所有代码:

REPORT  y_xin_002.

 

*变量定义

TYPES ty_spfli TYPE spfli OCCURS 0.

DATA: gr_table     TYPE REF TO cl_salv_table.

 

 

*----------------------------------------------------------------------*

     CLASS lcl_alv DEFINITION

*----------------------------------------------------------------------*

*       ALV操作类定义

*----------------------------------------------------------------------*

CLASS lcl_alv DEFINITION.

  PUBLIC SECTION.

    METHODS: getdata         "取得要显示的数据

               RETURNING value(lt_tab) TYPE ty_spfli,

             alv_full        "全屏Grid列表处理方法

               IMPORTING value(lt_tab) TYPE ty_spfli,

             main.           "主方法

ENDCLASS.                    "lcl_alv DEFINITION

 

*----------------------------------------------------------------------*

*       CLASS lcl_alv IMPLEMENTATION

*----------------------------------------------------------------------*

*       ALV操作类(实现)

*----------------------------------------------------------------------*

CLASS lcl_alv IMPLEMENTATION.

*取得要显示的数据

  METHOD getdata.

    SELECT * INTO TABLE lt_tab FROM spfli.

  ENDMETHOD.                    "getdata

 

*输出全屏网格列表的方法

  METHOD alv_full.

    DATA: lr_functions TYPE REF TO cl_salv_functions,

          lr_display   TYPE REF TO cl_salv_display_settings.

    data boolean type c.

 

    "创建实例

    TRY.

        cl_salv_table=>factory(

          IMPORTING

            r_salv_table = gr_table

          CHANGING

            t_table      = lt_tab

        ).

      CATCH cx_salv_msg.

    ENDTRY.

 

    "显示ALV的标准功能

    lr_functions = gr_table->get_functions( ).

    lr_functions->set_all( 'X' ).

 

    "设置ALV的显示样式

    lr_display = gr_table->get_display_settings( ).

    lr_display->set_striped_pattern( 'X' )."设置颜色间隔显示

    lr_display->set_list_header( 'Xin''s ALV' ). "设置ALV的抬头

    lr_display->set_horizontal_lines( '' ).  "设置水平线是否显示

    lr_display->set_vertical_lines( '' ).   "设置垂直线是否显示

 

    "显示列表

    gr_table->display( ).

  ENDMETHOD.                    "alv_full

 

*主方法整合数据

  METHOD main.

    DATA: lt_tab TYPE TABLE OF spfli.

 

    "取得要显示的数据

    lt_tab = me->getdata( ).

 

    me->alv_full( lt_tab ).

  ENDMETHOD.                    "main

ENDCLASS.                    "lcl_alv IMPLEMENTATION

 

*报表执行

START-OF-SELECTION.

  DATA  lr_alv   TYPE REF TO lcl_alv.

  CREATE OBJECT lr_alv.

  lr_alv->main( ).

你可能感兴趣的:(OO实现ALV TABLE 四:ALV的显示样式)