转:设置ALV单元格颜色

 

*&---------------------------------------------------------------------*
*& 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-pools: slis.                                 "ALV Declarations
*Data Declaration
*----------------
data: BEGIN OF t_ekko OCCURS 0,
      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,
      coltab TYPE slis_t_specialcol_alv,
END OF t_ekko.

DATA: it_ekko like t_ekko occurs 0 with header line,
      wa_ekko like t_ekko occurs 0 with header line.

*ALV data declarations
data: fieldcatalog 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'.
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-coltab_fieldname = 'COLTAB'.
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.
data: ld_color(1) type c.

select ebeln ebelp statu aedat matnr menge meins netpr peinh
into corresponding fields of it_ekko from ekpo.
APPEND IT_EKKO.
CLEAR IT_EKKO.
ENDSELECT.

*Populate field with color attributes
DATA l_alvcolor TYPE slis_specialcol_alv.
loop at it_ekko into wa_ekko.
* Colour cells
IF WA_EKKO-EBELP = '000030'.
CLEAR gd_layout.
l_alvcolor-fieldname = 'EBELP'.
l_alvcolor-color-col = 6.       "<--- colour number
l_alvcolor-color-int = 0.       "<--- intensified flag
l_alvcolor-nokeycol = 'X'.     "<--- key column flag
APPEND l_alvcolor TO WA_EKKO-coltab.
ENDIF.

* CLEAR l_alvcolor.
* l_alvcolor-fieldname = 'EBELN'.
* l_alvcolor-color-col = 6.       "<--- colour number
* l_alvcolor-color-int = 1.       "<--- intensified flag
* l_alvcolor-nokeycol = SPACE.     "<--- key column flag
* APPEND l_alvcolor TO WA_EKKO-coltab.

modify it_ekko from wa_ekko.
endloop.
endform.                    " DATA_RETRIEVAL

原址:http://blog.myspace.cn/e/401734929.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值