ABAP - Add Color in ALV ListGrid Display

4

Click here to load reader

description

ABAP - Add Color in ALV ListGrid Display

Transcript of ABAP - Add Color in ALV ListGrid Display

REPORT zdemo_alvgrid .TABLES: ekko.

type-pools: slis. "ALV Declarations*Data Declaration*----------------TYPES: BEGIN 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(4) type c, "Used to store row color attributesEND OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,wa_ekko TYPE t_ekko.*ALV data declarationsdata: 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).gd_layout-info_fieldname = 'LINE_COLOR'.

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'exportingi_callback_program = gd_repidis_layout = gd_layoutit_fieldcat = fieldcatalog[]i_save = 'X'*is_variant = z_templatetablest_outtab = it_ekko .

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 ebelnebelpstatuaedatmatnrmengemeinsnetprpeinhup to 10 rowsfrom ekpointo table it_ekko.

*Populate field with color attributesloop 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 valueif 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