This website is not affiliated with, sponsored by, or approved by SAP AG.

Colouring column, line and cell in ALV grid : code

Development (ABAP Development WorkBench, ABAP/4 programming)

Moderators: Snowy, thx4allthefish, YuriT, Gothmog

Colouring column, line and cell in ALV grid : code

Postby Thomas C. » Wed Jul 16, 2003 3:03 am

In order to avoid further messages about colouring in ALV grid, I've created a sample code for doing it.

You'll find the code of the report and the code of the Flow logic.
You just need to create a screen (2000 in this case) without anything in the layout, an OK-CODE and a PF-STATUS with a BACK button.

I've used OO methodology with a docking container.
All info about colour code is in comment in the code.

Hope it will help a lot of you.


Report code

Code: Select all
REPORT zcuitest_alv_07.

*****************************************************************
* Use of colours in ALV grid (cell, line and column)            *
*****************************************************************

* Table
TABLES : mara.

* Type
TYPES : BEGIN OF ty_mara,
          matnr         LIKE mara-matnr,
          matkl         LIKE mara-matkl,
          counter(4)    TYPE n,
          free_text(15) TYPE c,
          color_line(4) TYPE c,           " Line color
          color_cell    TYPE lvc_t_scol,  " Cell color
END OF ty_mara.

* Structures
DATA  : wa_mara     TYPE ty_mara,
        wa_fieldcat TYPE lvc_s_fcat,
        is_layout   TYPE lvc_s_layo,
        wa_color    TYPE lvc_s_scol.

* Internal table
DATA : it_mara     TYPE STANDARD TABLE OF ty_mara,
       it_fieldcat TYPE STANDARD TABLE OF lvc_s_fcat,
       it_color    TYPE TABLE          OF lvc_s_scol.

* Variables
DATA : okcode LIKE sy-ucomm,
       w_alv_grid          TYPE REF TO cl_gui_alv_grid,
       w_docking_container TYPE REF TO cl_gui_docking_container.


PARAMETERS : p_column AS CHECKBOX,
             p_line   AS CHECKBOX,
             p_cell   AS CHECKBOX.

START-OF-SELECTION.
  PERFORM get_data.

END-OF-SELECTION.

  PERFORM fill_catalog.
  PERFORM fill_layout.

  CALL SCREEN 2000.
*&--------------------------------------------------------------*
*&      Module  status_2000  OUTPUT
*&--------------------------------------------------------------*
*       text
*---------------------------------------------------------------*
MODULE status_2000 OUTPUT.

  SET PF-STATUS '2000'.

ENDMODULE.                 " status_2000  OUTPUT
*&---------------------------------------------------------------*
*&      Module  user_command_2000  INPUT
*&---------------------------------------------------------------*
*       text
*----------------------------------------------------------------*
MODULE user_command_2000 INPUT.

  DATA : w_okcode LIKE sy-ucomm.

  MOVE okcode TO w_okcode.
  CLEAR okcode.

  CASE w_okcode.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
  ENDCASE.

ENDMODULE.                 " user_command_2000  INPUT
*&--------------------------------------------------------------*
*&      Module  alv_grid  OUTPUT
*&--------------------------------------------------------------*
*       text
*---------------------------------------------------------------*
MODULE alv_grid OUTPUT.

  IF w_docking_container IS INITIAL.
    PERFORM create_objects.
    PERFORM display_alv_grid.
  ENDIF.

ENDMODULE.                 " alv_grid  OUTPUT
*&--------------------------------------------------------------*
*&      Form  create_objects
*&--------------------------------------------------------------*
*       text
*---------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*---------------------------------------------------------------*
FORM create_objects.

* Ratio must be included in [5..95]

  CREATE OBJECT w_docking_container
    EXPORTING
      ratio                       = 95
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      lifetime_dynpro_dynpro_link = 5
      others                      = 6.

  CREATE OBJECT w_alv_grid
    EXPORTING
      i_parent          = w_docking_container.

ENDFORM.                    " create_objects
*&--------------------------------------------------------------*
*&      Form  display_alv_grid
*&--------------------------------------------------------------*
*       text
*---------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*---------------------------------------------------------------*
FORM display_alv_grid.

  CALL METHOD w_alv_grid->set_table_for_first_display
    EXPORTING
      is_layout                     = is_layout
    CHANGING
      it_outtab                     = it_mara
      it_fieldcatalog               = it_fieldcat
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      OTHERS                        = 4.

ENDFORM.                    " display_alv_grid
*&--------------------------------------------------------------*
*&      Form  get_data
*&--------------------------------------------------------------*
*       text
*---------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*---------------------------------------------------------------*
FORM get_data.

  SELECT * FROM mara UP TO 5 ROWS.
    CLEAR : wa_mara-color_line, wa_mara-color_cell.

    MOVE-CORRESPONDING mara TO wa_mara.
    ADD 1                   TO wa_mara-counter.
    MOVE 'Blabla'           TO wa_mara-free_text.

    IF wa_mara-counter = '0002'
    AND p_line = 'X'.
* Color line
      MOVE 'C410' TO wa_mara-color_line.
    ELSEIF wa_mara-counter = '0004'
    AND p_cell = 'X'.
* Color cell
      MOVE 'FREE_TEXT' TO wa_color-fname.
      MOVE '5'         TO wa_color-color-col.
      MOVE '1'         TO wa_color-color-int.
      MOVE '1'         TO wa_color-color-inv.
      APPEND wa_color TO it_color.
      wa_mara-color_cell[] = it_color[].
    ENDIF.

    APPEND wa_mara TO it_mara.
  ENDSELECT.

ENDFORM.                    " get_data
*&--------------------------------------------------------------*
*&      Form  fill_catalog
*&--------------------------------------------------------------*
*       text
*---------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*---------------------------------------------------------------*
FORM fill_catalog.

*****************************************************************
* Colour code :                                                 *
* Colour is a 4-char field where :                              *
*              - 1st char = C (color property)                  *
*              - 2nd char = color code (from 0 to 7)            *
*                                  0 = background color         *
*                                  1 = blue                     *
*                                  2 = gray                     *
*                                  3 = yellow                   *
*                                  4 = blue/gray                *
*                                  5 = green                    *
*                                  6 = red                      *
*                                  7 = orange                   *
*              - 3rd char = intensified (0=off, 1=on)           *
*              - 4th char = inverse display (0=off, 1=on)       *
*                                                               *
* Colour overwriting priority :                                 *
*   1. Line                                                     *
*   2. Cell                                                     *
*   3. Column                                                   *
*****************************************************************
  DATA : w_position TYPE i VALUE '1'.

  CLEAR wa_fieldcat.
  MOVE w_position TO wa_fieldcat-col_pos.
  MOVE 'MATNR'    TO wa_fieldcat-fieldname.
  MOVE 'MARA'     TO wa_fieldcat-ref_table.
  MOVE 'MATNR'    TO wa_fieldcat-ref_field.
  APPEND wa_fieldcat TO it_fieldcat.

  ADD 1 TO w_position.

  CLEAR wa_fieldcat.
  MOVE w_position TO wa_fieldcat-col_pos.
  MOVE 'MATKL'    TO wa_fieldcat-fieldname.
  MOVE 'MARA'     TO wa_fieldcat-ref_table.
  MOVE 'MATKL'    TO wa_fieldcat-ref_field.
* Color column
  IF p_column = 'X'.
    MOVE 'C610'     TO wa_fieldcat-emphasize.
  ENDIF.
  APPEND wa_fieldcat TO it_fieldcat.

  ADD 1 TO w_position.

  CLEAR wa_fieldcat.
  MOVE w_position TO wa_fieldcat-col_pos.
  MOVE 'COUNTER'  TO wa_fieldcat-fieldname.
  MOVE 'N'        TO wa_fieldcat-inttype.
  MOVE '4'        TO wa_fieldcat-intlen.
  MOVE 'Counter'  TO wa_fieldcat-coltext.
  APPEND wa_fieldcat TO it_fieldcat.

  ADD 1 TO w_position.

  CLEAR wa_fieldcat.
  MOVE w_position  TO wa_fieldcat-col_pos.
  MOVE 'FREE_TEXT' TO wa_fieldcat-fieldname.
  MOVE 'C'         TO wa_fieldcat-inttype.
  MOVE '20'        TO wa_fieldcat-intlen.
  MOVE 'Text'      TO wa_fieldcat-coltext.
  APPEND wa_fieldcat TO it_fieldcat.

ENDFORM.                    " fill_catalog
*&--------------------------------------------------------------*
*&      Form  fill_layout
*&--------------------------------------------------------------*
*       text
*---------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*---------------------------------------------------------------*
FORM fill_layout.

* Field that identify color line in internal table
  MOVE 'COLOR_LINE' TO is_layout-info_fname.

* Field that identify cell color in inetrnal table
  MOVE 'COLOR_CELL' TO is_layout-ctab_fname.

ENDFORM.                    " fill_layout



Flow logic code

Code: Select all
PROCESS BEFORE OUTPUT.

  MODULE status_2000.

  MODULE alv_grid.

PROCESS AFTER INPUT.

  MODULE user_command_2000.
Regards,
Thomas.
Thomas C.
 
Posts: 83
Joined: Wed Jan 22, 2003 5:26 am
Location: Belgium

Postby Hans Germany » Wed Jul 16, 2003 3:40 am

Hi Thomas,
many thanks, an interesting sample. :D

Hans
Germany
Hans Germany
 

Re: Colouring column, line and cell in ALV grid : code

Postby Bigrad » Tue Oct 06, 2009 11:08 am

Nice!! Thanks you realy help mi!
Bigrad
 
Posts: 1
Joined: Tue Oct 06, 2009 11:06 am

Re: Colouring column, line and cell in ALV grid : code

Postby Rich » Thu Oct 08, 2009 2:53 am

Would you like me to include this in the Abappers Knowledge corner ?
Regards

Rich

Image
Abap KC:http://www.richard-harper.me.uk/Kb
SFMDR:http://www.se37.com
Rich
 
Posts: 7112
Joined: Thu Oct 31, 2002 4:47 pm
Location: Liverpool

Re: Colouring column, line and cell in ALV grid : code

Postby VLozano » Thu Oct 08, 2009 8:09 am

Do it, please. Give him credit, as you do usually, and put it in.
Tuly Idiots
Because we know we are part of the problem
VLozano
 
Posts: 5140
Joined: Mon Sep 13, 2004 8:17 am
Location: Idiocity

Re: Colouring column, line and cell in ALV grid : code

Postby kerum » Wed Apr 28, 2010 4:17 am

Hi,

here you can find a preview of a whole ALV color palette:
http://www.kerum.pl/infodepot/00005

Regards,
K.
kerum
 
Posts: 33
Joined: Thu Sep 04, 2003 8:23 am


Return to ABAP

Who is online

Users browsing this forum: No registered users and 5 guests





This website is not affiliated with, sponsored by, or approved by SAP AG.