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.