Important points ALV and ALV events

FM’s to remember

  • REUSE_ALV_GRID_DISPLAY. “Display ALV grid format
  • REUSE_ALV_LIST_DISPLAY. “Display ALV List format
  • REUSE_ALV_COMMENTARY_WRITE. “Display Top of page, logo, etc.
  • REUSE_ALV_FIELDCATELOGUE_MERGE. “Used to generate field catalogue
  • REUSE_ALV_EVENTS_GET. “Use events in ALV
  • REUSE_ALV_HEIRARCHY_LIST_DISPLAY. “Display ALV Hierarchy

Field Catalog

Field catalog is an internal table which is used to pass a list of fields to display in ALV report, we can set different properties to fields which are going to display in ALV.

Type Group

It is a data dictionary object which contains all the reusable user-defined types.

Example for a type group is SLIS, which contains all the user-defined types for developing ALV reports.

TYPE-POOLS is a keyword which is used to assign the type-group to a ALV report .

when we want to display some of the fields from a particular table we will use field-catalog.

How to edit and ALV report

you can use the type group SLIS property SLIS_LAYOUT_ALV, below are some of the properties. Particularly to edit feature use the below highlighted property.

For example lets look at the below code

*  WA_LAYOUT-ZEBRA = 'X' .
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .
WA_LAYOUT-EDIT = 'X' .
* WA_LAYOUT-NO_VLINE = 'X' .
* WA_LAYOUT-NO_HLINE = 'X' .

If you observe only except 2 lines everything is commented out i.e.

WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X' 

WA_LAYOUT-EDIT = 'X'

which means we are setting the column width to optimise and the layout can be edited but we have not switched on other features

similarly data declearation should be like this

DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV ."internal table for field catalog
DATA : WA_FCAT TYPE SLIS_FIELDCAT_ALV ." workarea for fieldcatalog
DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV ." for layout

ALV Events

We use function module REUSE_ALV_EVENTS_GET  to get events and use in our report.

REPORT ZALV_TEST_1.
TABLES : vbap.
TYPES : BEGIN OF TY_VBAP,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
NETWR TYPE VBAP-NETWR,
END OF TY_VBAP.
DATA : It_VBAP TYPE TABLE OF TY_VBAP .
DATA : WA_VBAP TYPE TY_VBAP .
 
DATA : i_fcat TYPE slis_t_fieldcat_alv,
wa_fcat like LINE OF i_fcat,
i_sort TYPE slis_t_sortinfo_alv,
wa_sort LIKE LINE OF i_sort,
wa_layout TYPE slis_layout_alv.
DATA : I_EVENTS TYPE SLIS_T_EVENT .
DATA : WA_EVENTS LIKE LINE OF I_EVENTS .
DATA : I_HEADING TYPE SLIS_T_LISTHEADER .
DATA : WA_HEADING LIKE LINE OF I_HEADING .
SELECT-OPTIONS : s_vbeln for vbap-vbeln.
 
PERFORM get_data.
PERFORM fieldcat.
PERFORM sort.
PERFORM GET_EVENTS .
PERFORM get_disp.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data .
SELECT VBELN
POSNR
MATNR
NETWR
FROM vbap
INTO TABLE it_vbap
WHERE vbeln in s_vbeln.
ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fieldcat .
wa_fcat-fieldname = 'VBELN'.
wa_fcat-col_pos = '1'.
wa_fcat-tabname = 'it_vbap'.
wa_fcat-seltext_m = 'sd_no'.
wa_fcat-key = 'x'.
APPEND wa_fcat to i_fcat.
 
WA_FCAT-COL_POS = '2' .
WA_FCAT-FIELDNAME = 'POSNR' .
WA_FCAT-TABNAME = 'I_VBAP' .
WA_FCAT-SELTEXT_M = 'ITEMNO' .
*  WA_FCAT-NO_OUT = 'X' .
WA_FCAT-HOTSPOT = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
 
WA_FCAT-COL_POS = '3' .
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-TABNAME = 'I_VBAP' .
WA_FCAT-SELTEXT_M = 'MATERIALNO' .
WA_FCAT-EDIT = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
 
WA_FCAT-COL_POS = '4' .
WA_FCAT-FIELDNAME = 'NETWR' .
WA_FCAT-TABNAME = 'I_VBAP' .
WA_FCAT-SELTEXT_M = 'NETPRICE' .
WA_FCAT-EMPHASIZE = 'C610'.
WA_FCAT-DO_SUM = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .
ENDFORM.                    " FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  SORT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sort .
wa_sort-fieldname = 'VBELN'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X '.
APPEND WA_SORT TO I_SORT .
ENDFORM.                    " SORT
*&---------------------------------------------------------------------*
*&      Form  GET_DISP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_disp .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
I_CALLBACK_PROGRAM                = sy-repid
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_USER_COMMAND           = ' '
*   I_CALLBACK_TOP_OF_PAGE            = ' '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  = i_
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
*   IS_LAYOUT                         =
IT_FIELDCAT                       = i_fcat
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
IT_SORT                           = i_sort
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
I_DEFAULT                         = 'S'
*   I_SAVE                            = ' '
*   IS_VARIANT                        =
IT_EVENTS                         = i_events
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
TABLES
t_outtab                          = it_vbap
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
 
ENDFORM.                    " GET_DISP
*&---------------------------------------------------------------------*
*&      Form  GET_EVENTS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_events .
 
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
* EXPORTING
*   I_LIST_TYPE           = 0
IMPORTING
ET_EVENTS             = I_EVENTS .
 
READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'TOP_OF_PAGE' .
WA_EVENTS-FORM = 'FORM_TOP_OF_PAGE' .
MODIFY  I_EVENTS FROM WA_EVENTS INDEX SY-TABIX .
 
ENDFORM.                    " GET_EVENTS
 
FORM FORM_TOP_OF_PAGE.
wa_heading-typ = 'H'.
wa_heading-info = 'sales order report'.
APPEND WA_HEADING TO I_HEADING .
 
WA_HEADING-TYP = 'S' .
WA_HEADING-KEY = 'USERNAME' .
WA_HEADING-INFO = SY-UNAME .
APPEND WA_HEADING TO I_HEADING .
 
WA_HEADING-TYP = 'A' .
WA_HEADING-KEY = 'DATE' .
WA_HEADING-INFO = SY-DATUM .
APPEND WA_HEADING TO I_HEADING .
 
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary       = i_heading
*     I_LOGO                   =
*     I_END_OF_LIST_GRID       =
*     I_ALV_FORM               =
.
 
ENDFORM.

Leave a comment