Abap ALV列的顺序(带CL_SALV_表)

Abap ALV列的顺序(带CL_SALV_表),abap,alv,Abap,Alv,我有一个程序,它根据类CL\u SALV\u table显示一个简单的表,我想将列CURRCODE定位在第五个位置,而不是当前的4个位置(数据库表SCARR中定义的默认顺序),如下所示: 我该怎么做 以下是当前的源代码(使用ABAP 7.40版编译): 注意:如果要复制,并且表SCARR为空,请执行程序SAPBC\u DATA\u GENERATOR,以填充该表。在调用方法display之前,必须分两步执行该操作: 调用ALV实例(类的CL\u SALV\u表的)的GET\u COLUMNS

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

我该怎么做

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


注意:如果要复制,并且表
SCARR
为空,请执行程序
SAPBC\u DATA\u GENERATOR
,以填充该表。

在调用方法
display
之前,必须分两步执行该操作:

  • 调用ALV实例(类的
    CL\u SALV\u表的
    )的
    GET\u COLUMNS
    )方法,以获取与所有列相对应的类的
    CL\u SALV\u COLUMNS\u表的实例

  • 后一个类有一个方法
    SET\u COLUMN\u 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( ).
选择*从SCAR进入表格@数据(SCAR)。
cl_salv_表=>工厂(
进口
r_salv_表=数据(salv)
改变
t_table=scar_s)。
salv->get_columns()->set_column_position(columnname='CURRCODE'position=5)。“获取列()->设置列优化()。
salv->display()。
结果:

注意:我还使用了方法
SET\u OPTIMIZE
,以便自动调整所有列的宽度以适应其内容(但这与问题无关)

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