[英]Order of ALV columns (with CL_SALV_TABLE)
我有一个程序,它显示一个基于类CL_SALV_TABLE
的简单表,我想将列CURRCODE
定位在第五个位置,而不是当前的 4(在数据库表SCARR
定义的默认顺序),如下所示:
我怎样才能做到这一点?
这是当前的源代码(使用 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( ).
结果:
注意:我还使用了SET_OPTIMIZE
方法,以便所有列的宽度自动调整为它们的内容(但这与问题无关)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.