繁体   English   中英

仅显示 ALV 中的某些字段

[英]Display only certain fields in ALV

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

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

您需要使用方法SET_VISIBLE列对象(类CL_SALV_COLUMN )。 更多信息请参见“列(常规)”页面的“设置列的可见性”一章

这个最小的可重复的例子只显示了列SPRASLAISO从表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( ).

此代码用于隐藏表中除指定列之外的所有列。

  1. 该表作为“t002”类型的行表传递,然后通过调用其“工厂”方法创建“CL_SALV_TABLE”class 的实例。
  2. 然后,通过“get_columns”方法遍历表的所有列,并为每一列分配一个字段符号。
  3. 对于每一列,检查其名称,如果是“SPRAS”或“LAISO”,则使用“Column”object 的“set_visible”方法并将“true”作为参数传递使其可见。
  4. 如果该列不是“SPRAS”或“LAISO”,则通过将“false”作为参数传递来隐藏它。
  5. 最后,调用“salv”object 的“display”方法来显示带有隐藏列的表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM