Row wise colour changed concept in report


*&-------------------------------------------------------------*
*& Report  ZDEMO_ALVGRID                                       *
*&                                                             *
*&-------------------------------------------------------------*
*&                                                             *
*& Example of a simple ALV Grid Report                         *
*& ...................................                         *
*&                                                             *
*& The basic ALV grid, Enhanced to display each row in a       *
*& different colour                                            *
*&-------------------------------------------------------------*
REPORT  zdemo_alvgrid                 .
TABLES:     ekko.
TYPE-POOLSslis.                                 "ALV Declarations
*Data Declaration
*----------------
TYPESBEGIN OF t_ekko,
  ebeln 
TYPE ekpo-ebeln,
  ebelp 
TYPE ekpo-ebelp,
  statu 
TYPE ekpo-statu,
  aedat 
TYPE ekpo-aedat,
  matnr 
TYPE ekpo-matnr,
  menge 
TYPE ekpo-menge,
  meins 
TYPE ekpo-meins,
  netpr 
TYPE ekpo-netpr,
  peinh 
TYPE ekpo-peinh,
  line_color
(4TYPE c,     "Used to store row color attributes
 
END OF t_ekko.
DATAit_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
      wa_ekko 
TYPE t_ekko.
*ALV data declarations
DATAfieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gd_tab_group 
TYPE slis_t_sp_group_alv,
      gd_layout    
TYPE slis_layout_alv,
      gd_repid     
LIKE sy-repid.

************************************************************************
*Start-of-selection.
START-OF-SELECTION.

  
PERFORM data_retrieval.
  
PERFORM build_fieldcatalog.
  
PERFORM build_layout.
  
PERFORM display_alv_report.

*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog.
* There are a number of ways to create a fieldcat.
* For the purpose of this example i will build the fieldcatalog manualy
* by populating the internal table fields individually and then
* appending the rows. This method can be the most time consuming but can
* also allow you  more control of the final product.
* Beware though, you need to ensure that all fields required are
* populated. When using some of functionality available via ALV, such as
* total. You may need to provide more information than if you were
* simply displaying the result
*               I.e. Field type may be required in-order for
*                    the 'TOTAL' function to work.

  fieldcatalog
-fieldname   'EBELN'.
  fieldcatalog-seltext_m   
'Purchase Order'.
  fieldcatalog-col_pos     
0.
  fieldcatalog-outputlen   
10.
  fieldcatalog
-emphasize   'X'.
  fieldcatalog
-key         'X'.
*  fieldcatalog-do_sum      = 'X'.
*  fieldcatalog-no_zero     = 'X'.
  
APPEND fieldcatalog TO fieldcatalog.
  
CLEAR  fieldcatalog.

  fieldcatalog
-fieldname   'EBELP'.
  fieldcatalog-seltext_m   
'PO Item'.
  fieldcatalog-col_pos     
1.
  
APPEND fieldcatalog TO fieldcatalog.
  
CLEAR  fieldcatalog.

  fieldcatalog
-fieldname   'STATU'.
  fieldcatalog-seltext_m   
'Status'.
  fieldcatalog-col_pos     
2.
  
APPEND fieldcatalog TO fieldcatalog.
  
CLEAR  fieldcatalog.

  fieldcatalog
-fieldname   'AEDAT'.
  fieldcatalog-seltext_m   
'Item change date'.
  fieldcatalog-col_pos     
3.
  
APPEND fieldcatalog TO fieldcatalog.
  
CLEAR  fieldcatalog.

  fieldcatalog
-fieldname   'MATNR'.
  fieldcatalog-seltext_m   
'Material Number'.
  fieldcatalog-col_pos     
4.
  
APPEND fieldcatalog TO fieldcatalog.
  
CLEAR  fieldcatalog.

  fieldcatalog
-fieldname   'MENGE'.
  fieldcatalog-seltext_m   
'PO quantity'.
  fieldcatalog-col_pos     
5.
  
APPEND fieldcatalog TO fieldcatalog.
  
CLEAR  fieldcatalog.

  fieldcatalog
-fieldname   'MEINS'.
  fieldcatalog-seltext_m   
'Order Unit'.
  fieldcatalog-col_pos     
6.
  
APPEND fieldcatalog TO fieldcatalog.
  
CLEAR  fieldcatalog.

  fieldcatalog
-fieldname   'NETPR'.
  fieldcatalog-seltext_m   
'Net Price'.
  fieldcatalog-col_pos     
7.
  fieldcatalog-outputlen   
15.
  fieldcatalog-datatype     
'CURR'.
  
APPEND fieldcatalog TO fieldcatalog.
  
CLEAR  fieldcatalog.

  fieldcatalog
-fieldname   'PEINH'.
  fieldcatalog-seltext_m   
'Price Unit'.
  fieldcatalog-col_pos     
8.
  
APPEND fieldcatalog TO fieldcatalog.
  
CLEAR  fieldcatalog.
ENDFORM.                    " BUILD_FIELDCATALOG

*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.
  gd_layout-no_input          
'X'.
  gd_layout-colwidth_optimize 
'X'.
  gd_layout-totals_text       
'Totals'(201).
* Set layout field for row attributes(i.e. color)
  gd_layout-info_fieldname 
=      'LINE_COLOR'.
*  gd_layout-totals_only        = 'X'.
*  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
*                                         "click(press f2)
*  gd_layout-zebra             = 'X'.
*  gd_layout-group_change_edit = 'X'.
*  gd_layout-header_text       = 'helllllo'.
ENDFORM.                    " BUILD_LAYOUT

*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
  gd_repid 
sy-repid.
  
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       
EXPORTING
            i_callback_program      
gd_repid
*            i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
*            i_callback_user_command = 'USER_COMMAND'
*            i_grid_title           = outtext
            is_layout               
gd_layout
            it_fieldcat             
fieldcatalog[]*            it_special_groups       = gd_tabgroup
*            IT_EVENTS                = GT_XEVENTS
            i_save                  
'X'
*            is_variant              = z_template

       
TABLES
            t_outtab                
it_ekko
       
EXCEPTIONS
            program_error           
1
            
OTHERS                  2.
  
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  
ENDIF.
ENDFORM.                    " DISPLAY_ALV_REPORT

*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval.
  
DATAld_color(1TYPE c.

  
SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
   
UP TO 10 ROWS
    
FROM ekpo
    
INTO TABLE it_ekko.
*Populate field with color attributes
  
LOOP AT it_ekko INTO wa_ekko.
* Populate color variable with colour properties
* Char 1 = C (This is a color property)
* Char 2 = 3 (Color codes: 1 - 7)
* Char 3 = Intensified on/off ( 1 or 0 )
* Char 4 = Inverse display on/off ( 1 or 0 )
*           i.e. wa_ekko-line_color = 'C410'
    ld_color 
ld_color + 1.
* Only 7 colours so need to reset color value
    
IF ld_color 8.
      ld_color 
1.
    
ENDIF.
    
CONCATENATE 'C' ld_color '10' INTO wa_ekko-line_color.
*  wa_ekko-line_color = 'C410'.
    
MODIFY it_ekko FROM wa_ekko.
  
ENDLOOP.
ENDFORM.                    " DATA_RETRIEVAL

Output:

Share this

Related Posts

1 comments :

comments
19 September 2016 at 10:15 delete This comment has been removed by the author.
avatar