Displaying Headings,Traffic Lights,Colors and Sum in ALV Report
ALV Report:
- Displaying ALV report with Cell color, Row color, Traffic lights, Grand Total, Sub total,Heading
*&---------------------------------------------------------------------*
*& Report ZVB_VBAP
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_vbap.
TYPE-POOLS:slis,icon.
TABLES:vbap.
TYPES: BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
matkl TYPE vbap-matkl,
kwmeng TYPE vbap-kwmeng,
meins TYPE vbap-meins,
cellcolor TYPE lvc_t_scol, "Cell color
status TYPE char4, "ICON
row_color TYPE char4, "row color
END OF ty_vbap.
DATA:iw_vbap TYPE ty_vbap,
it_vbap TYPE TABLE OF ty_vbap.
DATA: iw_fieldcat TYPE slis_fieldcat_alv,
it_fieldcat TYPE TABLE OF slis_fieldcat_alv,
it_events TYPE slis_t_event,
iw_events LIKE LINE OF it_events,
it_sort TYPE slis_t_sortinfo_alv,
iw_sort LIKE LINE OF it_sort,
is_layout TYPE slis_layout_alv,
it_header TYPE slis_t_listheader,
iw_header TYPE slis_listheader,
iw_cellcolor TYPE lvc_s_scol,
lv_index TYPE sy-tabix.
SELECTION-SCREEN BEGIN OF BLOCK b1.
SELECT-OPTIONS:s_vbeln FOR vbap-vbeln.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
SELECT vbeln
posnr
matnr
matkl
kwmeng
meins
FROM vbap
INTO CORRESPONDING FIELDS OF TABLE it_vbap
WHERE vbeln IN s_vbeln.
SORT it_vbap BY vbeln.
* code to display status field as icon
LOOP AT it_vbap INTO iw_vbap.
IF iw_vbap-kwmeng < '10'.
iw_vbap-status = icon_yellow_light.
ELSEIF iw_vbap-kwmeng = '10'.
iw_vbap-status = icon_green_light.
ELSE.
iw_vbap-status = icon_red_light.
ENDIF.
MODIFY it_vbap FROM iw_vbap.
CLEAR:iw_vbap.
ENDLOOP.
* Code to display row in a color
LOOP AT it_vbap INTO iw_vbap.
IF iw_vbap-matkl = 'YA020'.
iw_vbap-row_color = 'C51'.
ENDIF.
MODIFY it_vbap FROM iw_vbap.
ENDLOOP.
*code to add background color for cells
LOOP AT it_vbap INTO iw_vbap.
lv_index = sy-tabix.
iw_cellcolor-fname = 'MATNR'.
iw_cellcolor-color-col = '5'.
iw_cellcolor-color-inv = '1'.
APPEND iw_cellcolor TO iw_vbap-cellcolor.
CLEAR iw_cellcolor.
IF iw_vbap-vbeln > 10.
iw_cellcolor-fname = 'VBELN'.
iw_cellcolor-color-col = '6'.
iw_cellcolor-color-int = '1'.
iw_cellcolor-color-inv = '0'.
ELSEIF iw_vbap-vbeln < 10.
iw_cellcolor-fname = 'VBELN'.
iw_cellcolor-color-col = '5'.
iw_cellcolor-color-inv = '0'.
ENDIF.
APPEND iw_cellcolor TO iw_vbap-cellcolor.
CLEAR iw_cellcolor.
MODIFY it_vbap FROM iw_vbap INDEX lv_index TRANSPORTING cellcolor.
ENDLOOP.
is_layout-zebra = 'X'.
is_layout-colwidth_optimize = 'X'.
is_layout-coltab_fieldname = 'cellcolor'.
is_layout-info_fieldname = 'ROW_COLOR'.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'VBELN'.
iw_fieldcat-seltext_m = 'Sales Doc Number'.
iw_fieldcat-col_pos = '1'.
iw_fieldcat-just = 'L'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'POSNR'.
iw_fieldcat-seltext_m = 'Item Number'.
iw_fieldcat-col_pos = '2'.
iw_fieldcat-just = 'L'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'MATNR'.
iw_fieldcat-seltext_m = 'Material Number'.
iw_fieldcat-col_pos = '3'.
iw_fieldcat-outputlen = '20'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'MATKL'.
iw_fieldcat-seltext_m = 'Material Group'.
iw_fieldcat-col_pos = '4'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'KWMENG'.
iw_fieldcat-seltext_m = 'Quantity'.
iw_fieldcat-col_pos = '5'.
iw_fieldcat-just = 'L'.
iw_fieldcat-do_sum = 'X'. "Grand Total
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'MEINS'.
iw_fieldcat-seltext_m = 'UOM'.
iw_fieldcat-col_pos = '6'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'STATUS'.
iw_fieldcat-seltext_m = 'Status'.
iw_fieldcat-col_pos = '7'.
iw_fieldcat-icon = 'X'.
APPEND iw_fieldcat TO it_fieldcat.
*Code to dsipaly sub total
CLEAR:iw_sort.
iw_sort-spos = 1.
iw_sort-fieldname = 'POSNR'.
* IW_SORT-UP = 'X'.
iw_sort-subtot = 'X'.
APPEND iw_sort TO it_sort.
CLEAR:iw_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = is_layout
it_fieldcat = it_fieldcat
it_sort = it_sort
TABLES
t_outtab = it_vbap
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD1'.
ENDFORM.
FORM user_command USING p_ucomm TYPE sy-ucomm
p_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&DISP'.
MESSAGE 'Welcome to ALV Report' TYPE 'I'.
ENDCASE.
ENDFORM.
FORM top_of_page.
*& Report ZVB_VBAP
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_vbap.
TYPE-POOLS:slis,icon.
TABLES:vbap.
TYPES: BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
matkl TYPE vbap-matkl,
kwmeng TYPE vbap-kwmeng,
meins TYPE vbap-meins,
cellcolor TYPE lvc_t_scol, "Cell color
status TYPE char4, "ICON
row_color TYPE char4, "row color
END OF ty_vbap.
DATA:iw_vbap TYPE ty_vbap,
it_vbap TYPE TABLE OF ty_vbap.
DATA: iw_fieldcat TYPE slis_fieldcat_alv,
it_fieldcat TYPE TABLE OF slis_fieldcat_alv,
it_events TYPE slis_t_event,
iw_events LIKE LINE OF it_events,
it_sort TYPE slis_t_sortinfo_alv,
iw_sort LIKE LINE OF it_sort,
is_layout TYPE slis_layout_alv,
it_header TYPE slis_t_listheader,
iw_header TYPE slis_listheader,
iw_cellcolor TYPE lvc_s_scol,
lv_index TYPE sy-tabix.
SELECTION-SCREEN BEGIN OF BLOCK b1.
SELECT-OPTIONS:s_vbeln FOR vbap-vbeln.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
SELECT vbeln
posnr
matnr
matkl
kwmeng
meins
FROM vbap
INTO CORRESPONDING FIELDS OF TABLE it_vbap
WHERE vbeln IN s_vbeln.
SORT it_vbap BY vbeln.
* code to display status field as icon
LOOP AT it_vbap INTO iw_vbap.
IF iw_vbap-kwmeng < '10'.
iw_vbap-status = icon_yellow_light.
ELSEIF iw_vbap-kwmeng = '10'.
iw_vbap-status = icon_green_light.
ELSE.
iw_vbap-status = icon_red_light.
ENDIF.
MODIFY it_vbap FROM iw_vbap.
CLEAR:iw_vbap.
ENDLOOP.
* Code to display row in a color
LOOP AT it_vbap INTO iw_vbap.
IF iw_vbap-matkl = 'YA020'.
iw_vbap-row_color = 'C51'.
ENDIF.
MODIFY it_vbap FROM iw_vbap.
ENDLOOP.
*code to add background color for cells
LOOP AT it_vbap INTO iw_vbap.
lv_index = sy-tabix.
iw_cellcolor-fname = 'MATNR'.
iw_cellcolor-color-col = '5'.
iw_cellcolor-color-inv = '1'.
APPEND iw_cellcolor TO iw_vbap-cellcolor.
CLEAR iw_cellcolor.
IF iw_vbap-vbeln > 10.
iw_cellcolor-fname = 'VBELN'.
iw_cellcolor-color-col = '6'.
iw_cellcolor-color-int = '1'.
iw_cellcolor-color-inv = '0'.
ELSEIF iw_vbap-vbeln < 10.
iw_cellcolor-fname = 'VBELN'.
iw_cellcolor-color-col = '5'.
iw_cellcolor-color-inv = '0'.
ENDIF.
APPEND iw_cellcolor TO iw_vbap-cellcolor.
CLEAR iw_cellcolor.
MODIFY it_vbap FROM iw_vbap INDEX lv_index TRANSPORTING cellcolor.
ENDLOOP.
is_layout-zebra = 'X'.
is_layout-colwidth_optimize = 'X'.
is_layout-coltab_fieldname = 'cellcolor'.
is_layout-info_fieldname = 'ROW_COLOR'.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'VBELN'.
iw_fieldcat-seltext_m = 'Sales Doc Number'.
iw_fieldcat-col_pos = '1'.
iw_fieldcat-just = 'L'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'POSNR'.
iw_fieldcat-seltext_m = 'Item Number'.
iw_fieldcat-col_pos = '2'.
iw_fieldcat-just = 'L'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'MATNR'.
iw_fieldcat-seltext_m = 'Material Number'.
iw_fieldcat-col_pos = '3'.
iw_fieldcat-outputlen = '20'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'MATKL'.
iw_fieldcat-seltext_m = 'Material Group'.
iw_fieldcat-col_pos = '4'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'KWMENG'.
iw_fieldcat-seltext_m = 'Quantity'.
iw_fieldcat-col_pos = '5'.
iw_fieldcat-just = 'L'.
iw_fieldcat-do_sum = 'X'. "Grand Total
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'MEINS'.
iw_fieldcat-seltext_m = 'UOM'.
iw_fieldcat-col_pos = '6'.
APPEND iw_fieldcat TO it_fieldcat.
CLEAR iw_fieldcat.
iw_fieldcat-fieldname = 'STATUS'.
iw_fieldcat-seltext_m = 'Status'.
iw_fieldcat-col_pos = '7'.
iw_fieldcat-icon = 'X'.
APPEND iw_fieldcat TO it_fieldcat.
*Code to dsipaly sub total
CLEAR:iw_sort.
iw_sort-spos = 1.
iw_sort-fieldname = 'POSNR'.
* IW_SORT-UP = 'X'.
iw_sort-subtot = 'X'.
APPEND iw_sort TO it_sort.
CLEAR:iw_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = is_layout
it_fieldcat = it_fieldcat
it_sort = it_sort
TABLES
t_outtab = it_vbap
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD1'.
ENDFORM.
FORM user_command USING p_ucomm TYPE sy-ucomm
p_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN '&DISP'.
MESSAGE 'Welcome to ALV Report' TYPE 'I'.
ENDCASE.
ENDFORM.
FORM top_of_page.
Refresh : it_header.
iw_header-typ = 'H'. "Display headers i.e Big Font
iw_header-info = 'SO Item Details'.
APPEND iw_header TO it_header.
CLEAR iw_header.
iw_header-typ = 'S'. "Display key and value pairs
iw_header-key = 'Date:' .
CONCATENATE sy-datum+6(2)
sy-datum+4(2)
sy-datum(4)
INTO iw_header-info
SEPARATED BY '/'.
APPEND iw_header TO it_header.
CLEAR iw_header.
iw_header-typ = 'A'. "Display Headers in Arial font
iw_header-info = 'SAP ALV Report'.
APPEND iw_header TO it_header.
CLEAR iw_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_header
* I_LOGO = ' '
* I_END_OF_LIST_GRID = ' '
* I_ALV_FORM =
.
ENDFORM.
iw_header-typ = 'H'. "Display headers i.e Big Font
iw_header-info = 'SO Item Details'.
APPEND iw_header TO it_header.
CLEAR iw_header.
iw_header-typ = 'S'. "Display key and value pairs
iw_header-key = 'Date:' .
CONCATENATE sy-datum+6(2)
sy-datum+4(2)
sy-datum(4)
INTO iw_header-info
SEPARATED BY '/'.
APPEND iw_header TO it_header.
CLEAR iw_header.
iw_header-typ = 'A'. "Display Headers in Arial font
iw_header-info = 'SAP ALV Report'.
APPEND iw_header TO it_header.
CLEAR iw_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_header
* I_LOGO = ' '
* I_END_OF_LIST_GRID = ' '
* I_ALV_FORM =
.
ENDFORM.
Output:
Comments
Post a Comment