Register Login

Color a Column Value in ALV Report.

Updated May 18, 2018

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.


Comments

  • 08 Oct 2014 2:51 pm Guest

    @venkatesh.

    am getting error for above condition."CELLCOLOUR" is not an internal table "OCCURS n" specification is missing


×