ALV 设置每行的颜色

有时候有这样的需求,要求设置每一行的颜色。 思路是: 在要输出的内表中加多一个field,把这个field作为layout中控制颜色的字段info_fieldname。

本文转载于: http://www.abap-tutorials.com/2009/09/17/abap-program-to-add-colors-in-alv-grid/ 

废话少说,且看代码:

 

TABLES: ekko.

TYPE-POOLS: slis. "ALV Declarations
*Data Declaration*----------------
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
line_color(4TYPE c, "Used to store row color attributes
END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.

*Start-of-selection.
START-OF-SELECTION.

  PERFORM data_retrieval.

  PERFORM build_fieldcatalog.

  PERFORM build_layout.

  PERFORM display_alv_report.

*&---------------------------------------------------------------------
**& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------
** Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog.

  fieldcatalog-fieldname 'EBELN'.
  fieldcatalog-seltext_m 'Purchase Order'.
  fieldcatalog-col_pos 0.
  fieldcatalog-outputlen 10.
  fieldcatalog-emphasize 'X'.
  fieldcatalog-key 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname 'EBELP'.
  fieldcatalog-seltext_m 'PO Item'.
  fieldcatalog-col_pos 1.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname 'STATU'.
  fieldcatalog-seltext_m 'Status'.
  fieldcatalog-col_pos 2.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname 'AEDAT'.
  fieldcatalog-seltext_m 'Item change date'.
  fieldcatalog-col_pos 3.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname 'MATNR'.
  fieldcatalog-seltext_m 'Material Number'.
  fieldcatalog-col_pos 4.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname 'MENGE'.
  fieldcatalog-seltext_m 'PO quantity'.
  fieldcatalog-col_pos 5.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname 'MEINS'.
  fieldcatalog-seltext_m 'Order Unit'.
  fieldcatalog-col_pos 6.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname 'NETPR'.
  fieldcatalog-seltext_m 'Net Price'.
  fieldcatalog-col_pos 7.
  fieldcatalog-outputlen 15.
  fieldcatalog-datatype 'CURR'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname 'PEINH'.
  fieldcatalog-seltext_m 'Price Unit'.
  fieldcatalog-col_pos 8.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.
ENDFORM. " BUILD_FIELDCATALOG

*&---------------------------------------------------------------------
**& Form BUILD_LAYOUT
*&---------------------------------------------------------------------
** Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.
  gd_layout-no_input          'X'.
  gd_layout-colwidth_optimize 'X'.
  gd_layout-totals_text       'Totals'(201).
  gd_layout-info_fieldname    'LINE_COLOR'.

ENDFORM. " BUILD_LAYOUT

*&---------------------------------------------------------------------
**& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------
** Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
  gd_repid sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
  i_callback_program gd_repid
  is_layout          gd_layout
  it_fieldcat        fieldcatalog[]
  i_save             'X'
*is_variant = z_template
  TABLES
  t_outtab          it_ekko .

ENDFORM. " DISPLAY_ALV_REPORT

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值