SALV教程10-列属性设定-隐藏列

2025-08-06 07:21:39 1661

本文基于SALV教程7-列属性设定-修改列标签名(label),自动优化显示宽度。

列隐藏的具体方法如下:

1,取得单个列的类引用CL_SALV_COLUMN

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

代码:

ABAP

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157

*&---------------------------------------------------------------------**& 一个简单的通过类CL_SALV_TABLE生成SALV的例子*&---------------------------------------------------------------------*REPORT z_salv_6.**----------------------------------------------------------------------** 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( ).

运行,KUNNR列被隐藏了。

隐藏列还可以通过调用cl_salv_column_list->set_technical( if_salv_c_bool_sap=>true )。

代码,隐藏RCLNT字段

ABAP

12345678910111213

DATA: lo_columns TYPE REF TO cl_salv_columns_table, lo_column TYPE REF TO cl_salv_column_list, lt_cols TYPE salv_t_column_ref, ls_cols LIKE LINE OF lt_cols. lo_columns = o_salv->get_columns( ). lt_cols = lo_columns->get( ). TRY. lo_column ?= lo_columns->get_column( 'RCLNT' ). lo_column->set_technical( if_salv_c_bool_sap=>true ). CATCH cx_salv_not_found. "#EC NO_HANDLER ENDTRY.

以上。