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.
TYPESBEGIN 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.

DATAiw_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.
 
Output:

Comments

Popular posts from this blog

CDS Views: Table Functions with Example

Passing Dynamic Variables to SO10 TEXT

Adobe Form/PDF Form Introduction