仅显示 ALV 中的某些字段

Display only certain fields in ALV

我的 table 有大约 300 列,我只想显示其中的 10 列并指定哪些列。我正在与 CL_SALV_TABLE.

合作

谁能帮我解决这个问题或给我提示?非常感谢您!

您需要使用 Column 对象的方法 SET_VISIBLE (class CL_SALV_COLUMN)。有关详细信息,请参阅 chapter "Set the Visibility of the Column" of page "Columns (General)".

此最小可重现示例仅显示 table T002 中的 SPRASLAISO 列,所有其他列均已隐藏:

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