以ALV方式输出报表的时候,有一个属性是必须设置的,指定ALV要输出的字段和字段的名称(也就是fieldcat属性)。通常有两种方法来获取要输出的字段和名称:手动往内部表中添加、调用函数实现。
1、手动添加:这种方法是要往内部表中添加要输出的字段,常用到这几个属性 col_pos (指定输出在第几列) fieldname (待输出的字段) seltext_l (文本描述分为长短中三种)一般有了上面三个字段,就可以指定ALV的输出列的字段了。代码示例如下。(在调用函数 REUSE_ALV_GRID_DISPLAY 时,只需把t_fieldcat赋值给 EXPORTING 下的 it_fieldcat就可以了 )
CLEAR w_fieldcat.
w_fieldcat-col_pos = '1'.
w_fieldcat-fieldname = 'BUKRS'.
w_fieldcat-seltext_l = '公司代码'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-col_pos = '2'.
w_fieldcat-fieldname = 'LIFNR'.
w_fieldcat-seltext_l = '供应商代码'.
APPEND w_fieldcat TO t_fieldcat.
2、调用函数实现 在调用函数之前,需要手工建立一个structure,该structure的结果必须和你存储待输出数据的内部表的结构一致! 然后调用函数 REUSE_ALV_FIELDCATALOG_MERGE ,通过这个函数实现把要显示输出的列,传给 it_field ,示例代码如下
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
如果我们要设置列的其他属性。就要loop循环it_field来实现了。
第一种方法,对应字段比较少的内部表使用时比较方便,但如果要显示的字段很多的话,第二种方法更为实用!