Sunday, May 12, 2013

How to create simple color ALV report

REPORT  zcolorALV.

TABLES: ekko.

type-pools: slis. "ALV Declarations
*Data Declaration*----------------
TYPESBEGIN 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(4type c"Used to store row color attributes
END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*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.

  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'
  exporting
  i_callback_program = gd_repid
  is_layout          = gd_layout
  it_fieldcat        = fieldcatalog[]
  i_save             = 'X'
  tables
  t_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(1type c.

  select ebeln
  ebelp
  statu
  aedat
  matnr
  menge
  meins
  netpr
  peinh
  up to 10 rows
  from ekpo
  into table it_ekko.

*Populate field with color attributes
  loop at it_ekko into wa_ekko.
    ld_color = ld_color + 1.
* Only 7 colours so need to reset color value
    if ld_color = 8.
      ld_color = 1.
    endif.

    concatenate 'C' ld_color '10' into wa_ekko-line_color.
    modify it_ekko from wa_ekko.
  endloop.

endform" DATA_RETRIEVAL


Output: 



3 comments:

  1. Hi Mohammad,
    good morning, are you fine?
    I'm Brazilian Abaper since 2007 and i would like speak with you about any things... abap, your country, work... my e-mail is leonardonobre@ibest.com.br
    you will can send e-mails for me in any times...
    i would like yours doc's about abap... congratulations...

    Leo

    ReplyDelete
    Replies
    1. Hey Leo,

      sorry i dint see your msg.. your most welcome to talk with me regarding ABAP issue..

      M Salauddin

      Delete
  2. This comment has been removed by the author.

    ReplyDelete