繁体   English   中英

ALV 列的顺序(使用 CL_SALV_TABLE)

[英]Order of ALV columns (with CL_SALV_TABLE)

我有一个程序,它显示一个基于类CL_SALV_TABLE的简单表,我想将列CURRCODE定位在第五个位置,而不是当前的 4(在数据库表SCARR定义的默认顺序),如下所示:

带有要移动的列的简单 ALV 输出

我怎样才能做到这一点?

这是当前的源代码(使用 ABAP 7.40 版编译):

  SELECT * FROM scarr INTO TABLE @DATA(scarr_s).

  cl_salv_table=>factory(
    IMPORTING
      r_salv_table = DATA(salv)
    CHANGING
      t_table      = scarr_s ).

  salv->display( ).

注意:如果你想复制并且表SCARR是空的,执行程序SAPBC_DATA_GENERATOR来填充它。

在调用display方法之前,您必须分两步完成:

  • 调用该方法GET_COLUMNS (类ALV实例CL_SALV_TABLE ),以获取类的实例CL_SALV_COLUMNS_TABLE对应于所有列。

  • 后一个类有一个方法SET_COLUMN_POSITION来更改给定列的位置,该列的名称作为参数传递。

这是源代码:

  SELECT * FROM scarr INTO TABLE @DATA(scarr_s).

  cl_salv_table=>factory(
    IMPORTING
      r_salv_table = DATA(salv)
    CHANGING
      t_table      = scarr_s ).

  salv->get_columns( )->set_column_position( columnname = 'CURRCODE' position = 5 ). " <== ADD THIS LINE

  salv->get_columns( )->set_optimize( ).
  salv->display( ).

结果:

列按预期移动的简单 ALV 输出

注意:我还使用了SET_OPTIMIZE方法,以便所有列的宽度自动调整为它们的内容(但这与问题无关)。

暂无
暂无

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

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