十、SALV 列属性设定-隐藏列

9603 admin
刘诗雯世界杯

列属性设定-隐藏列

一、主要功能

主要是通过CL_SALV_COLUMN中的方法SET_VISIBLE()来决定列是否隐藏字段

取得单个列的类引用CL_SALV_COLUMN

调用类CL_SALV_COLUMN中的方法SET_VISIBLE()来决定列是否隐藏字段

二、实现与代码

*&---------------------------------------------------------------------*

*& 一个简单的通过类CL_SALV_TABLE生成SALV的例子

*&---------------------------------------------------------------------*

REPORT ZABAP_SALV10.

*

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

* CLASS lcl_report DEFINITION

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

CLASS lcl_report DEFINITION.

*

PUBLIC SECTION.

*

* 定义SALV输出内表

TYPES: BEGIN OF ty_vbak,

vbeln TYPE vbak-vbeln,

erdat TYPE erdat,

auart TYPE auart,

kunnr TYPE kunnr,

END OF ty_vbak.

*

DATA: t_vbak TYPE STANDARD TABLE OF ty_vbak.

*

* ALV reference

DATA: o_alv TYPE REF TO cl_salv_table.

*

METHODS:

* 抽取数据

get_data,

*

* 生成输出内容

generate_output.

*

*$*$*.....CODE_ADD_1 - Begin..................................1..*$*$*

*

* 定义private method来设定SALV不同特性

PRIVATE SECTION.

METHODS:

set_pf_status CHANGING co_alv TYPE REF TO cl_salv_table.

METHODS:

set_columns CHANGING co_alv TYPE REF TO cl_salv_table.

*$*$*.....CODE_ADD_1 - End....................................1..*$*$*

ENDCLASS. "lcl_report DEFINITION

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

* CLASS lcl_report IMPLEMENTATION

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

* 类实现

CLASS lcl_report IMPLEMENTATION.

*

METHOD get_data.

* 抽取数据

SELECT vbeln

erdat

auart

kunnr

INTO TABLE t_vbak

FROM vbak

UP TO 20 ROWS.

*

ENDMETHOD. "get_data

*.......................................................................

METHOD generate_output.

* New ALV instance

* We are calling the static Factory method which will give back

* the ALV object reference.

*

* exception class

DATA: lx_msg TYPE REF TO cx_salv_msg.

TRY.

cl_salv_table=>factory(

IMPORTING

r_salv_table = o_alv

CHANGING

t_table = t_vbak ).

CATCH cx_salv_msg INTO lx_msg.

ENDTRY.

*

*$*$*.....CODE_ADD_2 - Begin..................................2..*$*$*

*

* In this area we will call the methods which will set the

* different properties to the ALV

* 调用status设置方法

CALL METHOD set_pf_status

CHANGING

co_alv = o_alv.

* 调用设置列的方法

CALL METHOD me->set_columns

CHANGING

co_alv = o_alv.

*$*$*.....CODE_ADD_2 - End....................................2..*$*$*

*

*

* 调用Display方法将数据输出到屏幕上

o_alv->display( ).

*

ENDMETHOD. "generate_output

*

*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*

*

* In this area we will implement the methods which are defined in

* the class definition

* status设置方法实现

METHOD set_pf_status.

DATA: lo_functions TYPE REF TO cl_salv_functions_list.

* 设置默认的标准状态栏

lo_functions = co_alv->get_functions( ).

lo_functions->set_default( abap_true ).

ENDMETHOD.

METHOD set_columns.

*

DATA: lo_cols TYPE REF TO cl_salv_columns.

*...Process individual columns

DATA: lo_column TYPE REF TO cl_salv_column.

*...取得全部列的对象

lo_cols = o_alv->get_columns( ).

*

* 设置自动优化列宽度

lo_cols->set_optimize( 'X' ).

*

* 修改列KUNNR的标签名字和输出长度

TRY.

* 取得单个列的对象

lo_column = lo_cols->get_column( 'KUNNR' ).

lo_column->set_long_text( 'Sold-To Party' ).

lo_column->set_medium_text( 'Sold-To Party' ).

lo_column->set_short_text( 'Sold-To' ).

lo_column->set_output_length( 15 ).

* 隐藏列

lo_column->set_visible( value = if_salv_c_bool_sap=>false ).

CATCH cx_salv_not_found. "#EC NO_HANDLER

ENDTRY.

*

ENDMETHOD. "SET_COLUMNS

*$*$*.....CODE_ADD_3 - End....................................3..*$*$*

*

ENDCLASS. "lcl_report IMPLEMENTATION

START-OF-SELECTION.

DATA: lo_report TYPE REF TO lcl_report.

CREATE OBJECT lo_report.

* 抽取数据

lo_report->get_data( ).

* 生成SALV

lo_report->generate_output( ).

三、执行结果

什么什么豨勇的成语 玉佛吊坠大概价格在多少 玉佛吊坠多少钱能买到真的