Color a Column Value in ALV Report

Example of how to color a column value in ALV Report.

REPORT  z_colour NO STANDARD PAGE HEADING  .

TABLES :pa0002.

  TYPE-POOLS: slis.                 "ALV Declarations

DATA : BEGIN OF it OCCURS 0,
      pernr LIKE pa0001-pernr,
      rufnm LIKE pa0002-rufnm,
      cell_colour TYPE lvc_t_scol,    "Cell colour
       END OF it.

SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME.
SELECT-OPTIONS :s_pnum  FOR pa0002-pernr .
SELECTION-SCREEN END OF BLOCK main.

*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH
HEADER LINE,
      gd_layout    TYPE slis_layout_alv,
      gd_repid     LIKE sy-repid,
      gt_sort     TYPE slis_t_sortinfo_alv.

* To colour a cell.
  DATA ls_cellcolour TYPE lvc_s_scol.

START-OF-SELECTION.
  PERFORM data_retrieval.
  PERFORM build_fieldcatalog.
  PERFORM build_layout.
  PERFORM display_alv_report.
END-OF-SELECTION.
  FREE : it.

FORM build_fieldcatalog .
  fieldcatalog-fieldname   = 'PERNR'.
  fieldcatalog-seltext_m   = 'Personnel No.'.
  fieldcatalog-col_pos     =  0.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'RUFNM'.
  fieldcatalog-seltext_m   = 'Name'.
  fieldcatalog-col_pos     =  0.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.
ENDFORM.

FORM build_layout .
  gd_layout-no_input          = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-totals_text       = 'Totals'(256).
  gd_layout-coltab_fieldname = 'CELL_COLOUR'.

ENDFORM.                    " build_layout

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                   = 'A'
    TABLES
      t_outtab                 = it
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
  ENDIF.
ENDFORM.                    " display_alv_report

FORM data_retrieval .
select pernr rufnm from pa0002 into corresponding
fields of table it where pernr in s_pnum.
  LOOP AT it.
*Now based on the value of the field pernr we can
change the cell colour of the field rufnm or pernr.
    IF it-pernr eq '10001' .
      ls_cellcolour-fname = 'RUFNM'.
      ls_cellcolour-color-col = '5'.
      ls_cellcolour-color-int = '1'.
      ls_cellcolour-color-inv = '0'.
      APPEND ls_cellcolour TO it-cell_colour.
      IF sy-subrc EQ 0.
        MODIFY it.
      ENDIF.
    ENDIF.
  ENDLOOP.
ENDFORM.

Tips by : Vinod

More Abapers Questions:

ABAP Books List
ABAP/4 Certification, Programming and Object Oriented Programming Books

Smart Forms
SAP Smartforms

ABAP Menu:
ABAP Example Hints and Tips

Return to Index:-
SAP ABAP/4 Programming, Basis Administration, Configuration Hints and Tips

(c) www.gotothings.com All material on this site is Copyright.
Every effort is made to ensure the content integrity.  Information used on this site is at your own risk.
All product names are trademarks of their respective companies.  The site www.gotothings.com is in no way affiliated with SAP AG.
Any unauthorised copying or mirroring is prohibited.