列属性设定-隐藏列

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

列隐藏的具体方法如下:

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

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

列属性设定-隐藏列

代码:

 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 *&---------------------------------------------------------------------* *& 一个简单的通过类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  
1 2 3 4 5 6 7 8 9 10 11 12 13     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.

以上。

上一篇:显示设定


下一篇:SALV双击事件,相应另一个SALV