DEMO:ALV 行、列、单元格颜色控制

来源:互联网 发布:求生之路2不同网络 编辑:程序博客网 时间:2024/06/02 01:57

搜东西偶然看到一个不错的ALV demo

 

效果

DEMO:ALV <wbr>行、列、单元格颜色控制

DEMO:ALV <wbr>行、列、单元格颜色控制

DEMO:ALV <wbr>行、列、单元格颜色控制

原文地址:http://scn.sap.com/message/1640274#1640274

 

代码

*&---------------------------------------------------------------------*
*& Report ZLM_010
*&---------------------------------------------------------------------*
*& http://scn.sap.com/message/1640274#1640274
*&---------------------------------------------------------------------*
REPORT zlm_010.


*REPORT zrich_0002 .

*****************************************************************
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
(15TYPE c,
          color_line
(4TYPE 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.

AT SELECTION-SCREEN OUTPUT.

  
PERFORM get_data.
  
PERFORM fill_catalog.

  
IF w_docking_container IS INITIAL.
    
PERFORM create_objects.
  
ENDIF.

*&--------------------------------------------------------------*
*&      Form  create_objects
*&--------------------------------------------------------------*
FORM create_objects.

  
CREATE OBJECT w_docking_container
    
EXPORTING
      ratio                       
60
    
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.

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.

  
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.
*&--------------------------------------------------------------*
*&      Form  get_data
*&--------------------------------------------------------------*
FORM get_data.

  
SELECT FROM mara UP TO ROWS.
  
CLEAR wa_mara-color_linewa_mara-color_cell.

  
MOVE-CORRESPONDING mara TO wa_mara.
  
ADD                   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 '6'         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.
*&--------------------------------------------------------------*
*&      Form  fill_catalog
*&--------------------------------------------------------------*
FORM fill_catalog.

*****************************************************************
Colour code                                                 *
Colour is 4-char field where                              *
             1st char (color property)                  *
             2nd char color code (from to 7)            *
                                 background color         *
                                 blue                     *
                                 gray                     *
                                 yellow                   *
                                 blue/gray                *
                                 green                    *
                                 red                      *
                                 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 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 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 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 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.

0 0
原创粉丝点击