Dear SAPLearners, in this tutorial we will learn how to do cell color in ABAP ALV Grid report.
Step-by-Step Procedure
- Create an ABAP Program in SE38 transaction.
- Add an field called “CELLCOLOR” of type LVC_T_SCOL(table type) in your final internal table.
- Populate the field CELLCOLOR based on your business requirement.
- Assign CELLCOLOR to COLTAB_FIELDNAME of ALV Grid Layout structure.
- Create an ALV report using the function module REUSE_ALV_GRID_DISPLAY.
Business Scenario
In this demo example, we want to color the cell when quantity of purchase order is less than the 5.00.
ALV ABAP Source Code
*-------------------------------------------------------------*
* www.saplearners.com *
*-------------------------------------------------------------*
* Cell Color in ABAP ALV Report *
*-------------------------------------------------------------*
*--- Table declaration
TABLES: ekko.
*-- Type pool declaration
TYPE-POOLS: slis.
*--- Selection screen
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.
*--- Type declaration
TYPES: BEGIN OF lty_ekpo,
ebeln TYPE char30, " Document no.
ebelp TYPE ebelp, " Item no
matnr TYPE matnr, " Material no
werks TYPE werks_d, " Plant
ntgew TYPE entge, " Net weight
gewei TYPE egewe, " Unit of weight
cellcolor TYPE lvc_t_scol, "Cell Color
END OF lty_ekpo.
*--- Internal table declaration
DATA: lt_ekpo TYPE STANDARD TABLE OF lty_ekpo,
lt_fieldcat TYPE slis_t_fieldcat_alv.
*--- Work area declaration
DATA: wa_ekpo TYPE lty_ekpo,
wa_layout TYPE slis_layout_alv,
wa_cellcolor TYPE lvc_s_scol,
lv_index TYPE sy-tabix.
*--- Start-of-selection event
START-OF-SELECTION.
* Select data from ekpo
SELECT ebeln " Doc no
ebelp " Item
matnr " Material
werks " Plant
ntgew " Quantity
gewei " Unit
FROM ekpo
INTO CORRESPONDING FIELDS OF TABLE lt_ekpo
WHERE ebeln IN s_ebeln
AND ntgew NE '0.00'.
IF sy-subrc = 0.
SORT lt_ekpo BY ebeln ebelp matnr .
ENDIF.
*--- Set Cell colors
* COL = 1 to 7,
* INT = 1 = Intensified on, 0 = Intensified off
* INV = 1 = Text Color, 0 = Background Color
* Color the Quantity cell where quantity is less than 5
LOOP AT lt_ekpo INTO wa_ekpo.
lv_index = sy-tabix.
IF wa_ekpo-ntgew < 5.
wa_cellcolor-fname = 'NTGEW'.
wa_cellcolor-color-col = 6.
wa_cellcolor-color-int = '1'.
wa_cellcolor-color-inv = '0'.
APPEND wa_cellcolor TO wa_ekpo-cellcolor.
CLEAR: wa_cellcolor.
MODIFY lt_ekpo FROM wa_ekpo INDEX lv_index TRANSPORTING cellcolor.
ENDIF.
ENDLOOP.
*--- Field Catalog
PERFORM f_field_catalog.
*--- Layout
PERFORM f_build_layout.
END-OF-SELECTION.
* Perform to display ALV report
PERFORM f_alv_report_display.
*&---------------------------------------------------------------------*
*& Form sub_field_catalog
*&---------------------------------------------------------------------*
* Build Field Catalog
*----------------------------------------------------------------------*
* No Parameter
*----------------------------------------------------------------------*
FORM f_field_catalog .
DATA: lwa_fcat TYPE slis_fieldcat_alv.
* Build Field Catalog
lwa_fcat-col_pos = 1. "Column
lwa_fcat-fieldname = 'EBELN'. "Field Name
lwa_fcat-tabname = 'LT_EKPO'. "Internal Table Name
lwa_fcat-seltext_l = 'Doc. No'. "Field Text
APPEND lwa_fcat TO lt_fieldcat.
lwa_fcat-col_pos = 2. "Column
lwa_fcat-fieldname = 'EBELP'. "Field Name
lwa_fcat-tabname = 'LT_EKPO'. "Internal Table Name
lwa_fcat-seltext_l = 'Item No'. "Field Text
APPEND lwa_fcat TO lt_fieldcat.
CLEAR:lwa_fcat.
lwa_fcat-col_pos = 3. "Column
lwa_fcat-fieldname = 'WERKS'. "Field Name
lwa_fcat-tabname = 'LT_EKPO'. "Internal Table Name
lwa_fcat-seltext_l = 'Plant'. "Field Text
APPEND lwa_fcat TO lt_fieldcat.
CLEAR:lwa_fcat.
lwa_fcat-col_pos = 4. "Column
lwa_fcat-fieldname = 'MATNR'. "Field Name
lwa_fcat-tabname = 'LT_EKPO'. "Internal Table Name
lwa_fcat-seltext_l = 'Material'. "Field Text
APPEND lwa_fcat TO lt_fieldcat.
CLEAR:lwa_fcat.
lwa_fcat-col_pos = 5. "Column
lwa_fcat-fieldname = 'NTGEW'. "Field Name
lwa_fcat-tabname = 'LT_EKPO'. "Internal Table Name
lwa_fcat-seltext_l = 'Quantity'. "Field Text
lwa_fcat-do_sum = 'X'. "Sum
APPEND lwa_fcat TO lt_fieldcat.
CLEAR:lwa_fcat.
lwa_fcat-col_pos = 6. "Column
lwa_fcat-fieldname = 'GEWEI'. "Field Name
lwa_fcat-tabname = 'LT_EKPO'. "Internal Table Name
lwa_fcat-seltext_l = 'UOM'. "Field Text
APPEND lwa_fcat TO lt_fieldcat.
CLEAR:lwa_fcat.
ENDFORM. " sub_field_catalog
*&---------------------------------------------------------------------*
*& Form f_populate_layout
*&---------------------------------------------------------------------*
* Populate ALV layout
*----------------------------------------------------------------------*
* No Parameter
*----------------------------------------------------------------------*
FORM f_build_layout.
CLEAR wa_layout.
wa_layout-colwidth_optimize = 'X'. " Optimization of Col width
wa_layout-coltab_fieldname = 'CELLCOLOR'. " Cell color Column Name
ENDFORM. " f_populate_layout
*&---------------------------------------------------------------------*
*& Form f_alv_report_display
*&---------------------------------------------------------------------*
FORM f_alv_report_display .
* ALV report
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = wa_layout
it_fieldcat = lt_fieldcat
TABLES
t_outtab = lt_ekpo
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. " f_alv_report_display
ALV Output

Please feel free to comment and let us know your feedback. Subscribe for more updates
If you liked it, please share it! Thanks!
Other ALV ABAP Tutorials
How to add Sub-total text in ABAP ALV Grid





Comments are closed.