问题描述
我的表有大约 300 列,我只想显示其中的 10 列并指定哪些列。我正在与 CL_SALV_TABLE
合作。
解决方法
您需要使用 Column 对象(类 SET_VISIBLE
)的方法 CL_SALV_COLUMN
。有关详细信息,请参阅 chapter "Set the Visibility of the Column" of page "Columns (General)"。
这个 Minimal reproducible 示例仅显示表 SPRAS
中的列 LAISO
和 T002
,所有其他列都隐藏:
DATA: t002_lines TYPE TABLE OF t002,salv TYPE REF TO cl_salv_table,columns TYPE salv_t_column_ref.
FIELD-SYMBOLS <column> TYPE salv_s_column_ref.
SELECT * FROM t002 INTO TABLE t002_lines.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = salv
CHANGING
t_table = t002_lines.
LOOP AT salv->get_columns( )->get( ) ASSIGNING <column>.
CASE <column>-columnname.
WHEN 'SPRAS' OR 'LAISO'.
<column>-r_column->set_visible( if_salv_c_bool_sap=>true ).
WHEN OTHERS.
<column>-r_column->set_visible( if_salv_c_bool_sap=>false ).
ENDCASE.
ENDLOOP.
salv->display( ).