You are on page 1of 53

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

Objectives
The

participants will be able to :

Describe the features and advantages of ALV.


Describe the different function modules that should be
used to properly produce a report output in ALV.
Create simple ALV reports.
Format the layout of the ALV reports.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

ALV (ABAP List Viewer)


ABAP List Viewer (ALV) is a simple, user

friendly and better looking reporting tool as


compared to the usage of write statements in
a conventional / interactive report.
SAP provides a set of ALV (ABAP LIST VIEWER)
function modules, which can be put into use to
embellish the output of a report. This set of
ALV functions is used to enhance the
readability and functionality of any report
output.
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

Advantages of ALV
Looks

better.
User friendly

Filtering / Sorting
Layout Change / Save
Summation, Download to excel, E-Mail
Data can be open for input / change etc.

Better

Event handling
Width of more than 256 characters possible
Programming overhead of mentioning exact
positions in write statements not needed.
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

ALV Features

Email
Change
Layout
Download to
Excel
Filtering
Sorting
Column
Heading
Row(s)
Selection

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

ALV Features (Contd.)

Display
Graphics

Fields
Open For
Input

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

ALV Programming
Two Approaches
Conventional (Using SAP Standard Function
Modules).
Object Oriented (Using SAP Standard Classes
and Methods).

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

Common ALV functions


The

commonly used ALV function modules are:

REUSE_ALV_VARIANT_DEFAULT_GET
REUSE_ALV_VARIANT_F4
REUSE_ALV_VARIANT_EXISTENCE
REUSE_ALV_EVENTS_GET
REUSE_ALV_COMMENTARY_WRITE
REUSE_ALV_FIELDCATALOG_MERGE
REUSE_ALV_POPUP_TO_SELECT
REUSE_ALV_LIST_DISPLAY
REUSE_ALV_GRID_DISPLAY

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

Major Steps to construct an


ALV Report

Step 1 : Data Declaration.

Step 2 : Selecting the Variant for initial list display (Default Variant).
Optional : Used only if report layout is maintained through variant management.

Step 3 : Defining output characteristics: preparing display Field-catalog.

Step 4 : Build a table for Events, which are used for firing both user commands
and the system dependent events i.e. top of page, end of page etc.
Optional : Required if the report has custom buttons, interactive properties etc or you
need to display something at the top of page or end of page sections.

Step 5 : Build the Layout for report display.

Continued to next slide

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

Major Steps to construct an


ALV
Report
(Contd.)
Step 6 : Get the Selection Screen information in the report

output.
Optional : Required only if you need to display selection screen
values in the report
output.

Step 7 : Specify the Sorting and/or Subtotaling of the basic list.


Optional : Required when sorting and/or subtotaling is required
for some columns in the report output.
Step 8 : Finally display report output, using the following ALV

functions
modules:
1. REUSE_ALV_FIELDCATALOG_MERGE
2. REUSE_ALV_LIST_DISPLAY
Or
REUSE_ALV_GRID_DISPLAY

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

10

Step 1: Data Declaration

SAP Standard type pools: SLIS , KKBLO .

SAP Standard tables types taken from the type pools are:
SLIS_LAYOUT_ALV ,
SLIS_T_FIELDCAT_ALV,
SLIS_T_LISTHEADER,
SLIS_T_EVENT,
SLIS_SELFIELD.

Internal tables to be used in the program declared based on the above


table types:
DATA: I_LAYOUT TYPE SLIS_LAYOUT_ALV,
I_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
I_HEADING TYPE SLIS_T_LISTHEADER,
I_EVENTS TYPE SLIS_T_EVENT.
TYPES: KKBLO_SELFIELD TYPE SLIS_SELFIELD.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

11

Step 2: Selecting the Variant for initial


list display (Default Variant).
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
* EXPORTING
I_SAVE
= Variant save condition
( A=all, U = user-specific )
CHANGING
cs_variant
= Internal table
containing the program name ( and the
default variant:
Optional )
* EXCEPTIONS
* WRONG_INPUT
=1
* NOT_FOUND
=2
* PROGRAM_ERROR
=3
* OTHERS
= 4.
.
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

12

ALV Function Modules :


CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
REUSE_ALV_VARIANT_F4
EXPORTING
*
*
*
*
*
*
*
*
*
*
*
*

is_variant
I_TABNAME_HEADER
I_TABNAME_ITEM
IT_DEFAULT_FIELDCAT
I_SAVE
I_DISPLAY_VIA_GRID
IMPORTING
E_EXIT
ES_VARIANT
EXCEPTIONS
NOT_FOUND
PROGRAM_ERROR
OTHERS

March-2005

=
=
=
=''
=''
=
=
=1
=2
= 3.

Overview of ABAP List Viewer (ALV) | 5.01

13

ALV Function Modules :


REUSE_ALV_VARIANT_EXISTENCE
CALL FUNCTION
'REUSE_ALV_VARIANT_EXISTENCE'
* EXPORTING
* I_SAVE
=''
CHANGING
cs_variant
=
* EXCEPTIONS
* WRONG_INPUT
=1
* NOT_FOUND
=2
* PROGRAM_ERROR
=3
* OTHERS
= 4.
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

14

Step 3: Defining output


characteristics:
preparing
A field catalog is prepared using the internal
display
Field-catalog
table (I_FIELDCAT)
of type

SLIS_T_FIELDCAT_ALV.
The field catalog for the output table is builtup in the caller's coding. The build-up can be
completely or partially automated by calling
the REUSE_ALV_FIELDCATALOG_MERGE
module.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

15

Specifying attributes for


fields
in
Field
Catalog
All the values entered in the catalog is specific to the

particular field whose name is entered in the field


FIELDNAME of the field catalog structure. The name of the
table is also entered in the corresponding Fieldname
TABNAME of the structure.
Some important attributes that can be defined for a field are:
Col_pos (column position)
Fieldname (field name)
Tabname (internal output table)
Ref_fieldname (reference field name)
Ref_tabname (reference table/structure field name

Link to currency unit


Cfieldname (currency unit field name)
Ctabname (internal currency unit field output table)
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

16

Specifying attributes for


fields
in
Field
Catalog
Link to measurement unit
(Contd.)
Qfieldname (measurement unit field name)

Qtabname

(internal measurement unit field


output table)
Outputlen (column width)
Key (key column)
No_out (field in field list)
Emphasize (highlight columns in color)
Hotspot (column as hotspot)
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

17

Specifying attributes for


fields
in
Field
Catalog
Fix_column (fix column)
Do_sum (sum over column)
(Contd.)
No_sum (sums forbidden)
Icon
Just (justification)
Lzero (leading zeros)
No_sign (no +/- sign)
Edit_mask (field formatting)
The following parameters are used for customizing

the texts in the heading of the output of the columns.


Seltext_l (long field label)
Seltext_m (medium field label)
Seltext_s (short field label)

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

18

Step 4: Build a table for


*Internal Table needed for events
Events
DATA: i_events TYPE slis_t_event.
*Calling Function module to populate table
with possible events
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type
=0
IMPORTING
et_events
= i_events
EXCEPTIONS
list_type_wrong = 1
OTHERS
= 2.
SORT i_events BY name.
Continued to next page
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

19

Step 4: Build a table for


Events (Contd.)
SORT i_events BY name.

*Reading events table


READ TABLE i_events
WITH KEY name = 'TOP_OF_PAGE' BINARY
SEARCH.
IF sy-subrc IS INITIAL.
*Assign event name to variable
MOVE 'TOP_OF_PAGE' TO i_events-form.
MODIFY i_events INDEX sy-tabix.
ENDIF.
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

20

Step 5: Build the Layout for


report
display
A layout is build for the report output description

USING the internal table for Layout (I_LAYOUT).


The layout parameters are described under the
following heads:
Display options
Exceptions
Totals
Interaction
Detail screen
Color
Other

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

21

Preparing the Layout


(Contd.)
DATA: st_layout TYPE slis_layout_alv, " ALV Layout
st_layout-box_fieldname
st_layout-get_selinfos
select records
st_layout-colwidth_optimize
coloumn width
st_layout-no_keyfix
fields

March-2005

= 'BOX'.
= 'X'.

" Box Fieldname


" Get info of

= 'X'.

" To optimize

= 'X'.

Overview of ABAP List Viewer (ALV) | 5.01

" To scroll Key

22

Step 6 : Get the Selection


Screen
information
in
the
For this you need to set the parameter
report
output. of the Layout structure
LAYOUT-GET_SELINFOS
If the calling program is a report with an

ABAP/4 selection screen, setting this


parameter makes ALV read the selection
screen again. If the selections are read
successfully, a pushbutton, via which the user
can call a popup which lists the report
selections in a simple form, becomes active
on the results list output by ALV.
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

23

Step 7 : Specify the Sorting


and/or
Subtotaling
of
the
The Table IT_SORT is populated with the sort criteria for
the different fields.
basic
list.
The caller specifies the Sorting and/or Subtotaling of
the basic list in the internal table IT_SORT.
This internal table has the following fields:

spos : Sort sequence


fieldname : Internal output table field name
tabname : Only relevant for hierarchical-sequential lists.

Name of the internal output table.


up : 'X' = sort in ascending order
down : 'X' = sort in descending order
subtot : 'X' = subtotal at group value change
group : '* ' = new page at group value change ,'UL' =
underline at group value change
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

24

Step 8 : Display the Report


output

Finally display report output, using the


1.following ALVREUSE_ALV_FIELDCATALOG_MERGE
functions modules:

2.

REUSE_ALV_LIST_DISPLAY
OR
REUSE_ALV_GRID_DISPLAY

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

25

Display ALV List


CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = WS_REPNAME
I_STRUCTURE_NAME
= Internal
output table field name
IS_LAYOUT
= I_LAYOUT
IT_FIELDCAT
= I_FIELDTAB
I_DEFAULT
= 'A'
I_SAVE
= 'A'
IS_VARIANT
= 'X'
IT_EVENTS
= I_EVENTS[]
IT_SORT
= I_SORT
IS_SEL_HIDE
= I_SELINFO
TABLES
T_OUTTAB
= Internal
output table field name.
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

26

ALV Function Modules :


Important
Parameters
I_CALLBACK_USER_COMM

EXPORTING

IMPORTING
I_CALLBACK_PROGRAM

March-2005

REUSE_ALV_GRID_DISPLAY

REUSE_ALV_LIST_DISPLAY

AND
I_STRUCTURE_NAME
IS_LAYOUT
IT_FIELDCAT
IT_EXCLUDING
IT_SPECIAL_GROUPS
IT_SORT
IT_FILTER
IS_SEL_HIDE
I_DEFAULT
I_SAVE
IS_VARIANT
IS_PRINT

E_EXIT_CAUSED_BY_CALLER

Overview of ABAP List Viewer (ALV) | 5.01

ES_EXIT_CAUSED_BY_USER

TABLES
T_OUTTAB

27

Simple Program Walkthrough :


REUSE_ALV_LIST_DISPLAY
REPORT Y_DEMO_ALV_LIST NO STANDARD
HEADING.

PAGE

* Data to be displayed
DATA: I_SFLIGHT TYPE TABLE OF SFLIGHT.

* Selection
SELECT * FROM SFLIGHT INTO TABLE I_SFLIGHT.

* Call ABAP List Viewer (ALV)


CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
TABLES
T_OUTTAB
= I_SFLIGHT.
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

28

Result:
REUSE_ALV_LIST_DISPLAY

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

29

Demonstration
Creation of a simple ALV list report using the

function module REUSE_ALV_LIST_DISPLAY.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

30

Practice
Creation of a simple ALV list report using the

function module REUSE_ALV_LIST_DISPLAY.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

31

Simple Program Walkthrough:


REUSE_ALV_GRID_DISPLAY
REPORT Y_DEMO_ALV_GRID .
* Data to be displayed
DATA: I_SFLIGHT TYPE TABLE OF SFLIGHT.
* Selection
SELECT * FROM SFLIGHT INTO TABLE
I_SFLIGHT.
* Call ABAP List Viewer (ALV)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
TABLES
T_OUTTAB
= I_SFLIGHT.
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

32

Result :
REUSE_ALV_GRID_DISPLAY

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

33

Demonstration
Create a simple ALV grid report using the

function module REUSE_ALV_GRID_DISPLAY

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

34

Practice
Create a simple ALV grid report using the

function module REUSE_ALV_GRID_DISPLAY

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

35

Simple Program Walkthrough:

Including Title in the Report for GRID DISPLAY

Title

In the PARAMETERS give


I_GRID_TITLE = 'Flight Information and Call the function
'REUSE_ALV_GRID_DISPLAY'

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

36

Simple Program Walkthrough:


Using FIELDCAT to Position Columns
DATA: i_fcat TYPE slis_t_fieldcat_alv,
wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'I_SFLIGHT'.
wa_fcat-col_pos = '1'.
wa_fcat-fieldname = 'CARRID'.
append wa_fcat to i_fcat.
wa_fcat-col_pos = '2'.
wa_fcat-fieldname = 'FLDATE'.
append wa_fcat to i_fcat.

wa_fcat-fieldname = 'CURRENCY'.
wa_fcat-no_out = 'X'.
APPEND wa_fcat TO i_fcat.
wa_fcat-fieldname = 'PLANETYPE'.
wa_fcat-no_out = 'X'.
APPEND wa_fcat TO i_fcat.

In the function module pass :


IT_FIELDCAT = i_fcat

wa_fcat-col_pos = '3'.
wa_fcat-fieldname = 'CONNID'.
append wa_fcat to i_fcat.
wa_fcat-col_pos = '4'.
wa_fcat-fieldname = 'PRICE'.
APPEND wa_fcat TO i_fcat.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

37

Result :

PRICE
CONNID
FLDATE
CARRID

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

38

Demonstration
Creating a simple ALV report by populating

the field catalog table, using the function


module REUSE_ALV_GRID_DISPLAY.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

39

Practice
Creating a simple ALV report by populating

the field catalog table, using the function


module REUSE_ALV_GRID_DISPLAY.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

40

Simple Program Walkthrough:


Changing the Default Status Bar of
1.Go to Transaction SE41(Menu Painter).
ALV
2.Give the Program as SAPLKKBL and the Status as STANDARD.

3.Now copy the STANDARD status of the Program SAPLKKBL to a

customized status YALVGRID for Program Y_DEMO_ALV_GRID.


4.Go to the Program Y_DEMO_ALV_GRID and create a Subroutine
SET_PF_STATUS using rt_extab TYPE SLIS_T_EXTAB for setting
the standard ALV PF-STATUS to the customized PF-STATUS
YALVGRID.

FORM set_pf_status USING


slis_t_extab.

p_rt_extab TYPE

SET PF-STATUS 'YALVGRID'.


ENDFORM.
March-2005

" set_pf_status

Overview of ABAP List Viewer (ALV) | 5.01

41

Simple Program
Walkthrough:
Changing the Default Status
Bar of ALV (Contd.)

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

42

Simple Program Walkthrough:


Changing the Default Status Bar of ALV
(Contd.)
Call the function module
REUSE_ALV_GRID_DISPLAY as:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME
= 'SFLIGHT'
I_CALLBACK_PROGRAM
=
'Y_DEMO_ALV_GRID'
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
IT_FIELDCAT = i_fcat
I_GRID_TITLE
= 'Flight Information'
TABLES
T_OUTTAB
= I_SFLIGHT.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

43

Result : Changing the


Default Status Bar of ALV
(Contd.)
Custom Button
for adding extra
functionality

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

44

Demonstration
Creating a simple ALV report by changing the

default status bar, using the function module


REUSE_ALV_GRID_DISPLAY.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

45

Practice
Creating a simple ALV report by changing the

default status bar, using the function module


REUSE_ALV_GRID_DISPLAY.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

46

Simple Program
Walkthrough : Adding
Function Codes

Create a Subroutine user_command USING v_ucomm LIKE sy-ucomm


v_selfield TYPE slis_selfield.
During the Call to the function module REUSE_ALV_GRID_DISPLAY, add
another parameter I_CALLBACK_USER_COMMAND =
USER_COMMAND.

FORM user_command USING v_ucomm LIKE syucomm


v_selfield TYPE
slis_selfield.
CASE v_ucomm.
WHEN 'BACK'.
* When Back button is pressed is pressed leave list
LEAVE LIST-PROCESSING.
ENDCASE.
ENDFORM.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

47

Simple Program
Walkthrough : Make some
wa_fcat-col_pos
= editable
'4'.
Make theEditable
field PRICE
by updating the field catalog.
fields

To make PRICE
wa_fcat-fieldname = 'PRICE'.
field editable
wa_fcat-edit = 'X'.

append wa_fcat to i_fcat.


clear wa_fcat.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

48

Result : Field Editable

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

49

Demonstration
Creating a simple ALV report by making one

of its column editable, using the function


module REUSE_ALV_GRID_DISPLAY.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

50

Practice
Creating a simple ALV report by making one

of its column editable, using the function


module REUSE_ALV_GRID_DISPLAY.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

51

Summary
ABAP List Viewer (ALV) is a simple, user friendly and better

looking reporting tool as compared to the usage of write


statements in a conventional / interactive report.
ALV report has several inbuilt User Friendly properties as:
Filtering / Sorting
Layout Change / Save
Summation, Download to excel, E-Mail
Data can be open for input / change etc.

The main ALV Function Modules are:


REUSE_ALV_LIST_DISPLAY
REUSE_ALV_GRID_DISPLAY
REUSE_ALV_FIELDCATALOG_MERGE
Status STANDARD of the main program SAPLKKBL is copied

and then changed to create a new customized GUI status for


any ALV report.

March-2005

Overview of ABAP List Viewer (ALV) | 5.01

52

Questions
What is ALV ?
What are the main differences between an ALV report and

a classical report?
What are the main function modules used to create an
ALV List?
What are the main differences between ALV list and ALV
grid?
What are the different ways to populate the FIELD
CATALOG table?
How can we change the default status bar of an ALV List?
How can we handle custom function code in ALV ?
How can we make a certain columns of an ALV list
editable?
March-2005

Overview of ABAP List Viewer (ALV) | 5.01

53