Sie sind auf Seite 1von 13

ALV Reports in SAP Tutorial - ABAP List Viewer

The common desired features of any report are "column alignment", sorting,
filtering, subtotals, totals etc. To implement these from scratch , a lot of coding
effort is to be put. To avoid that we can use a concept called ABAP List Viewer
(ALV).

In this tutorial you will learn:

Simple Report
Block Report
Hierarchical Reports
Display Variants

Each of these reports provide function modules which help in producing desired
output without much effort. Lets look at them in detail -

Simple Report
Important function modules in these report are -

Reuse_alv_fieldcatalog_merge
Reuse_alv_list_display
Reuse_alv_events_get
Reuse_alv_grid_display
Reuse_alv_commentary_write

REUSE_ALV_FIELDCATALOG_MERGE

This function module is used to populate a field catalog which is essential to display
the data in ALV.

If the output data is from a single dictionary table and all the columns are selected,
then we need not exclusively create the field catalog. Its enough to mention the table
name as a parameter (I_structure_name) in the REUSE_ALV_LIST_DISPLAY. But
in other cases we need to create it.

Note : Fieldcatalog can be filled manually also by filling up all the required details
into the internal table

Important parameters in are:

1. Export:

I_program_name : report id
I_internal_tabname : the internal output table
I_inclname : include or the report name where all the dynamic forms are
handled.

2. Changing

ct_fieldcat : an internal table with the type SLIS_T_FIELDCAT_ALV which is


declared in the type pool SLIS.

REUSE_ALV_LIST_DISPLAY

This is the function module which prints the data.

The important parameters are:

1. Export:

I_callback_program : report id
I_bypassing_buffer : 'X'
I_buffer_active : ' '
I_callback_pf_status_set : routine where a user can set his own pf status or
change the functionality of the existing pf status.
I_callback_user_command : routine where the function codes are handled.

I_structure name : name of the dictionary table


Is_Layout : structure to set the layout of the report
It_fieldcat : internal table with the list of all fields and their attributes which are
to be printed (this table can be populated automatically by the function)
It_events : internal table with a list of all possible events of ALV and their
corresponding form names.

2. Tables:

a. t_outtab : internal table with the data to be output

REUSE_ALV_EVENTS_GET:

Returns table of possible events for a a list type

1. Import:

Et_Events :The event table is returned with all possible CALLBACK events for the
specified list type (column 'NAME'). For events to be processed by the Callback,
their 'FORM' field must be filled. If the field is initialized, the event is ignored. The
entry can be read from the event table, the field 'FORM' filled and the entry modified
using constants from the type pool SLIS.

2. Export:

I_list_type: 0 = simple list REUSE_ALV_LIST_DISPLAY

1 = hierarchical-sequential list REUSE_ALV_HIERSEQ_LIST_DISPLAY

2 = simple block list REUSE_ALV_BLOCK_LIST_APPEND

3 = hierarchical-sequential block list REUSE_ALV_BLOCK_LIST_HS_APPEND

REUSE_ALV_GRID_DISPLAY

A new function from ABAP4.6 version, to display the results in grid rather than a
preview.

Parameters : same as reuse_alv_list_display


Note:Grid cannot handle high volumes. Functions like sort, scrolling down
consumes a lot of resources / time if the volume of data to be displayed is high.
There is no clear cut definition such that if the amount of data is X go for list or
grid but the developer has to take a call based on his experience. If not sure, then
list is the better option

REUSE_ALV_COMMENTARY_WRITE

This is used in the Top-of-page event to print the headings and other comments for
the list.

Important Parameters

It_list_commentary : Internal table with the headings of the type


slis_t_listheader.

This internal table has three fields:

1. Typ : 'H' - header, 'S' - selection, 'A' - action


2. Key : only when typ is 'S'.
3. Info : the text to be printed

Block Report
This looks like a simple report but this report has the features of sorting and filtering
only.This report is used if you have to display more than one report on the output.
Technically speaking if you have multiple internal table with data to be displayed as
separate blocks then we go for block report of ALV.

The important functions used for creating this report are:

REUSE_ALV_BLOCK_LIST_INIT
REUSE_ALV_BLOCK_LIST_APPEND
REUSE_ALV_BLOCK_LIST_DISPLAY

REUSE_ALV_BLOCK_LIST_INIT
This function module is used to set the default gui status etc. The parameters are
similar to the one used in reuse_alv_list_display or reuse_alv_grid_display

REUSE_ALV_BLOCK_LIST_APPEND

This function module adds the data to the block.

Important Parameters

1.Export :

is_layout : layout settings for block


it_fieldcat : field catalog
I_tabname : internal table name with all all possible events

2.Tables :

t_outtab : internal table with output data.

REUSE_ALV_BLOCK_LIST_DISPLAY

This function module display the list with data appended by the above function.

Parameters : All the parameters are optional.

Hierarchical Reports
Hierarchical display is used for displaying data that are related. Like sales order and
item details. Here sales order details can be the header data whereas them items in
the sales order can be the item data

The function module used for this is

REUSE_ALV_HIERSEQ_LIST_DISPLAY

Export:
I_CALLBACK_PROGRAM
I_CALLBACK_PF_STATUS_SET
I_CALLBACK_USER_COMMAND
IS_LAYOUT
It_fieldcat
It_events
I_tabname_header : Name of the internal table in the program containing the
output data of the highest hierarchy level.
I_tabname_item : Name of the internal table in the program containing the
output data of the lowest hierarchy level.
Is_keyinfo : This structure contains the header and item table field names
which link the two tables (shared key).

Tables

t_outtab_header : Header table with data to be output


t_outtab_item : Name of the internal table in the program containing the
output data of the lowest hierarchy level.

All the definitions of internal tables, structures and constants are declared in a type-
pool called SLIS. This internal table can be populated automatically by using
REUSE_ALV_FIELDCATALOG_MERGE'.

Display Variants
Display variants are used to set the default properties of an alv output like sort
criteria, filtering criteria, totaling and subtotaling etc
Display variants can be user specific and standard (standard variants can be
used by any user )
Kind of display variants that can be saved is controlled by the parameter
i_save that is passed in function modules reuse_alv_list_display /
reuse_alv_grid_display
You can provide an option on the selection screen to select what display
variant to be used

The common function modules related to selecting / validating display variants are
1. Reuse_alv_variant_default_get
2. Reuse_alv_variant_f4
3. Reuse_alv_variant_existence

Thats all to ABAP- ALV programming!

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

Syntax :
TYPE-POOLS SLIS . "TO USE FIELD CATALOG WE HAVE TO INCLUDE SLIS TYPE-POOLS
DATA : <IT_FCAT> TYPE SLIS_T_FIELDCAT_ALV . "INTERNAL TABLE FOR FIELD CATALOG
DATA : <WA_FCAT> TYPE SLIS_FIELDCAT_ALV . " WORK AREA FOR FIELD CATLOG

Options/properties of field catalog.

WA_FCAT-COL_POS = '1' . "Specify position of a field


WA_FCAT-FIELDNAME = 'MATNR' . "Specify field name
WA_FCAT-TABNAME = 'IT_MARA' . "Specify internal table name
WA_FCAT-SELTEXT_M = 'MATERIALNO' . "Specify text to display column header
WA_FCAT-KEY = 'X' . "Specify if it is a key field
APPEND WA_FCAT TO IT_FCAT . "Append to field catalog internal table

Useful resource Using append in SAP ABAP and also Using Clear in SAP ABAP
Requirement: Develop an ALV report to display Material no (MATNR), Material type (MTART), Industry
Sector (MBRSH) and Basic Unit Of measure (MEINS) for a range of material input (Select-Options).
To develop above report, we have to use field catalog (because we have to display four
fields only from MARA) and we have to pass field catalog parameter to Function
ModuleREUSE_ALV_GIRD_DISPLAY.

REPORT ZSAPN_ALV_FCAT.
TABLES : MARA.
TYPE-POOLS SLIS .

TYPES : BEGIN OF TY_MARA, "User defined internal table type


MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.

DATA : IT_MARA TYPE TABLE OF TY_MARA .


DATA : WA_MARA TYPE TY_MARA .

DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV .


DATA : WA_FCAT LIKE LINE OF IT_FCAT .
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.

START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT.

END-OF-SELECTION .
PERFORM DISP_ALV .

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT MATNR MTART MBRSH MEINS FROM MARA
INTO TABLE IT_MARA
WHERE MATNR IN S_MATNR.
.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form DISP_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISP_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FCAT "PASS FIELD CATALOG TO ALV
TABLES
T_OUTTAB = IT_MARA.

ENDFORM. " DISP_ALV


*&---------------------------------------------------------------------*
*& Form CREATE_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_FCAT .
WA_FCAT-COL_POS = '1' .
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'MATERIALNO' .
WA_FCAT-KEY = 'X' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '2' .
WA_FCAT-FIELDNAME = 'MTART' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'MATERIALTYPE' .
* WA_FCAT-NO_OUT = 'X' .
WA_FCAT-HOTSPOT = 'X' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '3' .
WA_FCAT-FIELDNAME = 'MBRSH' .
WA_FCAT-REF_FIELDNAME = 'MBRSH' .
WA_FCAT-REF_TABNAME = 'MARA' .
* WA_FCAT-TABNAME = 'IT_MARA' .
* WA_FCAT-SELTEXT_M = 'INDSECTOR' .
* WA_FCAT-EDIT = 'X' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '4' .
WA_FCAT-FIELDNAME = 'MEINS' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'MAT.UNITS' .
WA_FCAT-EMPHASIZE = 'C610'.
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

ENDFORM. " CREATE_FCAT

Field Catalog Merge Not Recommended


Field Catalog can be generated in two ways, one is manual with field catalog internal
table and another one is with automatic field catalog generation...like below one,
but this one uses old syntax, this one is obsolete and is not recommended.

*&---------------------------------------------------------------------*
*& Report ZALV_WITH_FCAT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZALV_WITH_FCAT_MERGE.

TYPE-POOLS SLIS .

DATA : BEGIN OF I_MARA OCCURS 0,


MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MBRSH LIKE MARA-MBRSH,
MEINS LIKE MARA-MEINS,
END OF I_MARA.
DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV .
DATA : WA_FCAT LIKE LINE OF I_FCAT .

START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT_MERGE .

END-OF-SELECTION .
PERFORM DISP_ALV .

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
SELECT * FROM MARA
INTO CORRESPONDING FIELDS OF TABLE I_MARA
.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form DISP_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISP_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = I_FCAT
TABLES
T_OUTTAB = I_MARA.

ENDFORM. " DISP_ALV


*&---------------------------------------------------------------------*
*& Form CREATE_FCAT_MERGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_FCAT_MERGE .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'I_MARA'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = I_FCAT.
ENDFORM. " CREATE_FCAT_MERGE

Das könnte Ihnen auch gefallen