ABAP ALV控件设置单元格颜色DEMO

我们需要控制ALV控件单元格的颜色,满足复杂的需求,这是一个ABAP  ALV 控件单元格颜色设置的DEMO。

DEMO运行的效果:

注意数据结构和逻辑:其实在数据表的每一行中,还要加入一张表,用来放这一行,多个列字段的颜色信息。

全部代码如下,以后再来详解:

*&---------------------------------------------------------------------*
*& REPORT ZALV
*&---------------------------------------------------------------------*
*& 刘欣 2020.3.12
*&---------------------------------------------------------------------*


REPORT ZALV.

TYPE-POOLS: SLIS.

DATA GT_FC TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

DATA: BEGIN OF ITAB_TEST OCCURS 0,
        COL1(4) TYPE C,
        COL2(4) TYPE C,
        COL3(4) TYPE C,
        COL4(4) TYPE C,
        COL5(4) TYPE C,
        COL6(4) TYPE C,
      END OF ITAB_TEST .


* 显示单元格颜色
DATA: BEGIN OF GT_TABLE OCCURS 0.
        INCLUDE STRUCTURE ITAB_TEST.
DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV.
DATA: END OF GT_TABLE.


START-OF-SELECTION.
PERFORM CREATE_DATA. "构建内表数据

END-OF-SELECTION.
PERFORM FIELDCAT_BUILD. "构建列表头
PERFORM SHOW_ALV_3.



*&---------------------------------------------------------------------*
*&      FORM CREATE_DATA
*&---------------------------------------------------------------------*
*      构建内表数据
*----------------------------------------------------------------------*
FORM CREATE_DATA.

DATA:  GV_INDEX     TYPE C.

DATA: GT_COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE."单元格颜色属性内表

REFRESH GT_TABLE.

WHILE SY-INDEX < 8.

    GV_INDEX = SY-INDEX.

    CONCATENATE GV_INDEX '00' INTO GT_TABLE-COL1.
    CONCATENATE GV_INDEX '01' INTO GT_TABLE-COL2.
    CONCATENATE GV_INDEX '10' INTO GT_TABLE-COL3.


*  1:海蓝;2:浅清;3:黄色;4:浅蓝;5:青色;6:红色;7:橙色

*     (1)颜色
*     (2)颜色加强
*     (3)末位为0时,表示底色(颜色按首位数字);
*          末位为1时,表示字体颜色(颜色按首位数字);
*          末位为其它颜色时,则表示底色为ALV的默认颜色;

    REFRESH GT_COLOR.

    " COL1字段
    GT_COLOR-FIELDNAME = 'COL1'.
    GT_COLOR-COLOR-COL = GV_INDEX.
    GT_COLOR-COLOR-INT = '0'.
    GT_COLOR-COLOR-INV = '0'.
    APPEND GT_COLOR.


    " COL2字段
    GT_COLOR-FIELDNAME = 'COL2'.
    GT_COLOR-COLOR-COL = GV_INDEX.
    GT_COLOR-COLOR-INT = '0'.
    GT_COLOR-COLOR-INV = '1'.
    APPEND GT_COLOR.


    " COL3字段
    GT_COLOR-FIELDNAME = 'COL3'.
    GT_COLOR-COLOR-COL = GV_INDEX.
    GT_COLOR-COLOR-INT = '1'.
    GT_COLOR-COLOR-INV = '0'.
    APPEND GT_COLOR.


        " COL4字段
    GT_COLOR-FIELDNAME = 'COL4'.
    GT_COLOR-COLOR-COL = GV_INDEX.
    GT_COLOR-COLOR-INT = '1'.
    GT_COLOR-COLOR-INV = '0'.
    APPEND GT_COLOR.



        " COL5字段
    GT_COLOR-FIELDNAME = 'COL15'.
    GT_COLOR-COLOR-COL = GV_INDEX.
    GT_COLOR-COLOR-INT = '1'.
    GT_COLOR-COLOR-INV = '0'.
    APPEND GT_COLOR.



        " COL6字段
    GT_COLOR-FIELDNAME = 'COL6'.
    GT_COLOR-COLOR-COL = 6.
    GT_COLOR-COLOR-INT = '1'.
    GT_COLOR-COLOR-INV = '0'.
    APPEND GT_COLOR.


    GT_TABLE-COLOR[] = GT_COLOR[].
    APPEND GT_TABLE.

ENDWHILE.

ENDFORM.                    "CREATE_DATA



************************************************************************
FORM FIELDCAT_BUILD.

DEFINE HONG.

      GT_FC-FIELDNAME = &1. "字段
      GT_FC-SELTEXT_M = &2. "字段描述

      APPEND GT_FC.


END-OF-DEFINITION.


HONG 'COL1' 'COL1txt' .
HONG 'COL2' 'COL24234' .
HONG 'COL3' 'COL34324' .
HONG 'COL4' 'COL44234' .
HONG 'COL5' 'COL553454' .
HONG 'COL6' 'COL6dfsf' .


ENDFORM.                    "FIELDCAT_BUILD


*&---------------------------------------------------------------------*
*&      FORM SHOW_ALV_3
*&---------------------------------------------------------------------*
*       显示内表 3   单元格颜色
*----------------------------------------------------------------------*
FORM SHOW_ALV_3.
DATA: ALV_LAYOUT       TYPE SLIS_LAYOUT_ALV.

ALV_LAYOUT-COLTAB_FIELDNAME = 'COLOR'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID
      IT_FIELDCAT        = GT_FC[]
      IS_LAYOUT          = ALV_LAYOUT
      I_SAVE             = 'U'
    TABLES
      T_OUTTAB           = GT_TABLE
    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.                                                    "SHOW_ALV_3                                            "SHOW_ALV_3

猜你喜欢

转载自blog.csdn.net/ot512csdn/article/details/104831229