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.