仅显示 ALV 中的某些字段

问题描述

我的表有大约 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 中的列 LAISOT002,所有其他列都隐藏:

  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( ).