天天看點

DEMO:ALV 行、列、單元格顔色控制_SAP劉夢_新浪部落格

搜東西偶然看到一個不錯的ALV demo

效果

​​

DEMO:ALV 行、列、單元格顔色控制_SAP劉夢_新浪部落格

​​​

​​

DEMO:ALV 行、列、單元格顔色控制_SAP劉夢_新浪部落格

​​

​​

DEMO:ALV 行、列、單元格顔色控制_SAP劉夢_新浪部落格

​​

原文位址: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(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.

 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 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 '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 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.      

歡迎關注訂閱号:SAP學習記錄 (SAPlearning )

​​

繼續閱讀