You are on page 1of 16

f

Report Development Tools

Error! No text of specified style in document. Error! No text of specified style in document.
Where to Learn More

Overview
If it becomes necessary to write ABAP code to create your reports, then consider
using the ABAP List Viewer (ALV) to simplify your development. Available in the
R/3 System since Release 3.1, the ABAP List Viewer supports many of the
standard R/3 reports. The ALV provides additional program code you can quickly
add to any custom report for any SAP module.
Many reports developed for Release 4.0 (and later) utilize the ABAP List Viewer.
Additionally, many older standard R/3 reports (and reporting tools) have been
modified to include the ABAP List Viewer.
The ABAP List Viewer can be used with any application component or module in
the R/3 System. We recommend that developers should adopt ABAP List Viewer
as a design principle in all report development activities that occur in your
organization.
Note: At the time of press, limited technical support is available for the ABAP
List Viewer. However, we believe that support limitations should not prevent
you from taking advantage of the functionality offered by ALV.

What Is The ABAP List Viewer?


The ALV is a set of function modules that are added to program code. Programs
created before Release 3.1 can be enhanced with the ALV by adding links to the
function modules. Developers can use the functionality of the ALV when creating
new reports, thus saving time which might otherwise have been spent on report
enhancement. Using the ALV also provides a uniform user-interface and list
format for ABAP reports. This standardization helps eliminate redundant
functions.
The ABAP List Viewer enables both simple and sequential (hierarchical) report
lists. Simple lists contain a number of non-hierarchical, user-defined columns.
Sequential lists contain columns that consist of column headings and their
subordinate rows.
Goals of ALV

The primary goals of the ABAP List Viewer are to provide:


Users with a consistent, user-friendly, and functional method of
manipulating the data which appears on report lists.
ABAP developers with an efficient and consistent method of programming
functions that are commonly needed or requested in reports.

Reporting Made Easy

Error! No text of specified style in document. Error! No text of specified style in document.
Review

ABAP List Viewer: Cost Versus Benefit Analysis


Before taking advantage of the features of ALV, developers may want to consider
the benefits gained versus the extra time taken to include ALV in report
development. The following table shows estimates of time expenditures in report
development. Note that an estimated 50% of report developers time is
consumed by building fancy features and enhancing the look-and-feel of
custom reports.
ABAP Report Development Activity Without ALV

Percentage of Time Taken to Complete

Finding the right tables and table relationships


that need to be included in order for the
program to be written

50%

Providing fancy features, such as sorting,


subtotals, and interactivity

30%

Enhancing the look of the report with column


headings, vertical lines, and color

20%

Total

100%

SAP developed the ABAP List Viewer to help reduce the time and effort spent on
some of the report development activities. By using the ALV in the programming
of custom reports, you could reduce the development time by an estimated 40%
(see table below).
ABAP Report Development Activity With ALV

Percentage of Time Taken to Complete

Finding the right tables and table relationships


that need to be included in order for the
program to be written

50%

Preparing field catalog and sort sequence for


ALV
Providing fancy features, such as sorting,
subtotals, and interactivity

1%

Enhancing the look of the report with column


headings, vertical lines, and color

0%

Total

60%

9%

Although, the use of ALV adds one more development activity (that is,
preparation of the field catalog), the development time spent on other activities
is either eliminated or vastly reduced.

Report Development Tools

Error! No text of specified style in document. Error! No text of specified style in document.
Where to Learn More

Report Lists Without ABAP List Viewer


When a report is written, the report list (output) depends almost entirely on how
the developer programmed the report.
Shown below is a sample report list where the programmer did not to use the
ABAP List Viewer. For illustration purposes, consider a report that was simply
written (using the WRITE command) to the screen. The output of a report created
with just the WRITE statement is shown below:

Function bar is blank


No column headings

List data is dead. It is simply a


so-called data dump

A key point to note is that the function bar is blank. In addition, the data in the
list is dead which means that data listed cannot be used for any further data
retrieval. It is essentially a data-dump. Among other things, there are no
headings for the columns. Any additional functionality would have to be
programmed. In short, the interface between the data you see on the screen and
the users eyes (the GUI) is limited and bland.
Report users routinely ask for additional features in their reports. Often they are
looking for the ability to:
Hint: These
functions are
all available
in ALV

Sort
Resize rows
Double-click on one information element to jump to another information
element
Perform basic calculations
Download stylized spreadsheets
Display several colors
Visually separate various pieces of information on the screen

Reporting Made Easy

Error! No text of specified style in document. Error! No text of specified style in document.
Review

However, for the most part, these features need to be programmed into the list
as added functionality to the output of the report. While some of these added
functions are relatively easy to program, the manner in which this added
functionality works may vary greatly. For example, one programmer may decide
to enable a single-click as sufficient user input to jump to a next level of
information, while another programmer requires a double-click. Similarly, one
programmer may set the output of a field at 10 characters long, but another
programmer may program it as 20 characters.

Report Lists With ABAP List Viewer


When you insert the ALV code in your ABAP report program, the report list comes
alive.
Compare the ALV-enabled list shown on page A-6 with the list shown on the
previous page. Although the data is the same, the program has been changed to
incorporate the ALV function modules.
With the ALV, the user is presented with a standard interface which, from the
outset, includes:
Headers for the columns that appear on the list.

Colors that correspond to indented key information

Buttons that appear on the function bar (some of whose functions will be
introduced in the pages that follow)
A feature-rich function bar gives
the user commonly requested
functionality
Function bar is blank
Column headings make data
easier to understand

List data is alive

As you review the additional functionality shown above, remember that without
the ALV each function would have to be programmed into the report.

Report Development Tools

Error! No text of specified style in document. Error! No text of specified style in document.
Where to Learn More

Note: This appendix introduces you to some of the functions that the ALV
makes possible. However, this appendix does not cover the full breadth of ALV
functionality. For more information, refer to the ALV documentation in the R/3
online documentation:
R/3 Library CA-Cross-Application Components General Application
Functions ABAP List Viewer

Guided Tour

This guided tour shows possible ways a user could interact with an ALV-enabled report list.
In an ALV-enabled report list, a user
can select a particular column and
execute a subsequent function, if
desired.

2
1

1. Select the column for Sales doc.


With ALVs added functionality
the color of the selected column
can be changed, making it easy
for the report user to know
which column has been
selected.
2. Choose Filter. With the filter
option, a user can call up a
desired subset of information on
the output list.

3. Set the filter for the sales


documents to be viewed. In this
instance, the user only wants to
views sales documents that are
between the numbers 1000 and
2000.

4. Choose Copy to invoke the ALV


to filter the list.

Reporting Made Easy

Error! No text of specified style in document. Error! No text of specified style in document.
Review

5. The resulting filtered list is


shown to the right. To return to
the previous list, a user can
simply click the arrow buttons
without having to exit and reexecute the report.

6. If not all columns of the report


are of interest to the user, the
unwanted columns can be
hidden. This can be
accomplished by setting the
current variant to include only
the desired columns. To hide (or
to view previously hidden
columns), choose Display
variant.

In the popup window, the columns


that currently appear in the list are
shown in the left section. Hidden
fields (if any) appear on the right
section. In this example, all fields
appear.
7. To make one column disappear,
select the row which lists the
column you want to hide. In this
example, we select Material
Group.

7
8

8. Then, click the single rightarrow button to move the


selected column (Material
group) to the hidden fields
section.

Report Development Tools

Error! No text of specified style in document. Error! No text of specified style in document.
Where to Learn More

The Material Group is now one of


the hidden fields.
9. For this change to take effect,
choose Copy.

The new output list appears. The


original list may be revisited by
simply choosing the current
variant.

Reporting Made Easy

Error! No text of specified style in document. Error! No text of specified style in document.
Review

Technical Notes
In order for the reports to provide the consistency, flexibility, and userfriendliness of the ALV, it is necessary to include certain statements in the
reports program code. This section is intended for those who actually write the
code for reports.
To include the ALV in a report, the following basic steps must completed:
1. Declare data areas for List Viewer.
2. Declare the internal table to store selected data.
3. Select data into internal table.
4. Build the field catalogs.
5. Build event catalogs.
6. Start ABAP List Viewer using SAPs standard delivered function modules (see
TechTalk below).
7. Process call back events.
In the standard R/3 System, SAP delivers several function modules related to
the ALV.
Use the following function modules with Release 4.0:
REUSE_ALV_LIST_DISPLAY (this is the primary function module) or other
function modules that begin with the name REUSE_ALV*.

K_KKB_LIST_DISPLAY is still available but should no longer be used!

Review the sample program on page 10 which shows the coding related to each
of steps listed above.
Note: The source code that appears on page 10 was used to create the
sample ALV-enabled report list presented in this appendix. You will find the
source code (ZFIGALV.txt) on the companion CD supplied with this
guidebook series.

Report Development Tools

Error! No text of specified style in document. Error! No text of specified style in document.
Where to Learn More

Sample Code Using ALV (Release 4.0B)


**************************************************************
REPORT ZFIGALV .
********Declare Data Areas for List Viewer (Begin)************
TYPE-POOLS: SLIS.
DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
FIELDCAT_LN LIKE LINE OF FIELDCAT,
SORTCAT
TYPE SLIS_T_SORTINFO_ALV,
SORTCAT_LN
LIKE LINE OF SORTCAT,
EVENTCAT
TYPE SLIS_T_EVENT,
EVENTCAT_LN
LIKE LINE OF EVENTCAT.
DATA: COL_POS TYPE I.
*******Declare Data Areas for List Viewer (End)***************
*******Declare Internal Table to Store Selected Data (Begin)**
DATA: BEGIN OF IVBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
MATKL LIKE VBAP-MATKL,
CHARG LIKE VBAP-CHARG,
KWMENG LIKE VBAP-KWMENG,
VRKME LIKE VBAP-VRKME,
ARKTX LIKE VBAP-ARKTX,
END OF IVBAP.

*******Declare Internal Table to Store Selected Data (End)****

*******Select Data into Internal Table (Begin) ***************


SELECT VBELN POSNR MATNR MATKL KWMENG VRKME
INTO CORRESPONDING FIELDS OF TABLE IVBAP
FROM VBAP WHERE VBELN NE 0.
******* Select Data into Internal Table (End) ****************
******* Build Field Catalogs (Begin)**************************

10

Reporting Made Easy

Error! No text of specified style in document. Error! No text of specified style in document.
Review

PERFORM
PERFORM
PERFORM
PERFORM
PERFORM

BUILD_FIELDCAT.
BUILD_FIELDCAT2.
BUILD_FIELDCAT3.
BUILD_SORTCAT.
BUILD_SORTCAT2.

*******Build Field Catalogs (End)******************************


*******Build Event Catalog (Begin)*****************************
PERFORM BUILD_EVENTCAT.
*******Build Event Catalog (End)*******************************
*******Start List Viewer (Begin)*******************************
PERFORM START_LIST_VIEWER.
*******Start List Viewer (End)*********************************
***************************************************************
***************************************************************
*********FORM ROUTINES (Begin)*********************************
FORM BUILD_FIELDCAT.
ADD 1 TO COL_POS.
FIELDCAT_LN-REF_TABNAME = 'VBAP'.
FIELDCAT_LN-FIELDNAME = 'VBELN'.
FIELDCAT_LN-KEY = 'X'.
FIELDCAT_LN-DO_SUM = SPACE.
FIELDCAT_LN-COL_POS = COL_POS.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = 'X'.
APPEND FIELDCAT_LN TO FIELDCAT.
ENDFORM.
FORM BUILD_FIELDCAT2.
ADD 1 TO COL_POS.
FIELDCAT_LN-REF_TABNAME = 'VBAP'.
FIELDCAT_LN-FIELDNAME = 'MATNR'.
FIELDCAT_LN-KEY = SPACE.
FIELDCAT_LN-DO_SUM = SPACE.
FIELDCAT_LN-COL_POS = COL_POS.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = SPACE.
APPEND FIELDCAT_LN TO FIELDCAT.
ENDFORM.

Report Development Tools

11

Error! No text of specified style in document. Error! No text of specified style in document.
Where to Learn More

FORM BUILD_FIELDCAT3.
ADD 1 TO COL_POS.
FIELDCAT_LN-REF_TABNAME = 'VBAP'.
FIELDCAT_LN-FIELDNAME = 'MATKL'.
FIELDCAT_LN-KEY = SPACE.
FIELDCAT_LN-DO_SUM = 'X'.
FIELDCAT_LN-COL_POS = COL_POS.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = SPACE.
APPEND FIELDCAT_LN TO FIELDCAT.
ENDFORM.
FORM BUILD_SORTCAT.
SORTCAT_LN-SPOS = '1'.
SORTCAT_LN-FIELDNAME = 'MATNR'.
SORTCAT_LN-UP = 'X'.
SORTCAT_LN-DOWN = SPACE.
SORTCAT_LN-SUBTOT = 'X'.
APPEND SORTCAT_LN TO SORTCAT.
ENDFORM.
FORM BUILD_SORTCAT2.
SORTCAT_LN-SPOS = '2'.
SORTCAT_LN-FIELDNAME = 'VRKME'.
SORTCAT_LN-UP = SPACE.
SORTCAT_LN-DOWN = 'X'.
SORTCAT_LN-SUBTOT = SPACE.
APPEND SORTCAT_LN TO SORTCAT.
ENDFORM.
FORM BUILD_EVENTCAT.
EVENTCAT_LN-NAME = 'TOP_OF_PAGE'.
EVENTCAT_LN-FORM = 'PAGE_HEADER'.
APPEND EVENTCAT_LN TO EVENTCAT.
ENDFORM.
FORM START_LIST_VIEWER.
DATA: PGM LIKE SY-REPID.
PGM = SY-REPID.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
*
I_INTERFACE_CHECK
= ' '
I_CALLBACK_PROGRAM
= PGM
*
i_callback_pf_status_set = ' '
12

Reporting Made Easy

Error! No text of specified style in document. Error! No text of specified style in document.
Review

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME
=
IS_LAYOUT
=
IT_FIELDCAT
= FIELDCAT
*
IT_EXCLUDING
=
*
IT_SPECIAL_GROUPS
=
IT_SORT
= SORTCAT
*
IT_FILTER
=
*
IS_SEL_HIDE
=
*
I_DEFAULT
= 'X'
I_SAVE
= 'A'
*
IS_VARIANT
= ' '
*
IT_EVENTS
=
*
IT_EVENT_EXIT
=
*
IS_PRINT
=
*
I_SCREEN_START_COLUMN
= 0
*
I_SCREEN_START_LINE
= 0
*
I_SCREEN_END_COLUMN
= 0
*
I_SCREEN_END_LINE
= 0
*
IMPORTING
*
E_EXIT_CAUSED_BY_CALLER =
*
es_exit_caused_by_user
=
TABLES
T_OUTTAB
= IVBAP
EXCEPTIONS
PROGRAM_ERROR
= 1
OTHERS
= 2.
ENDFORM.
*
*

********Process Call Back Events (Begin)***************************


FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
READ TABLE IVBAP INDEX SELFIELD-TABINDEX.
CHECK SY-SUBRC = 0.
CASE UCOMM.
WHEN '&IC1'.
CASE SELFIELD-SEL_TAB_FIELD.
WHEN 'IVBAP-VBELN'.
SET PARAMETER ID 'AUN' FIELD IVBAP-VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
WHEN 'IVBAP-MATNR'.
SET PARAMETER ID 'MAT' FIELD IVBAP-MATNR.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM.
********Process Call Back Events (End)******************************

Report Development Tools

13

Error! No text of specified style in document. Error! No text of specified style in document.
Where to Learn More

***********FORM ROUTINES (END)**************************************

14

Reporting Made Easy

Error! No text of specified style in document. Error! No text of specified style in document.
Review

Review
The ABAP List Viewer (ALV) functionality provided within ABAP can
enhance reports in the R/3 System, and was first made available with Release
3.1. The ALV is a set of function modules added to program code. Programs
created before this release can be enhanced with the ALV by adding links to
the function modules.
Using the ALV provides a uniform user-interface and list format for ABAP
reports. This standardization helps eliminate redundant functions.
Using the ALV enhances the functionality provided with reports while
decreasing the development time by roughly 40%.
The ALV provides the following features:

Sorting

Resizing of rows

Double-clicking on one information element to jump to another


information element

Performing basic calculations

Downloading of stylized spreadsheets

Displaying several colors

Visually separating various pieces of information on the screen


To include the ALV in a report, the following basic steps must completed:
1. Declare data areas for List Viewer.
2. Declare the internal table to store selected data.
3. Select data into internal table.
4. Build field catalogs.
5. Build event catalogs.
6. Start the ABAP List Viewer using SAPs standard delivered function
modules.
7. Process call back events.

Where to Learn More


For more information, refer to the R/3 Library (online documentation).
In the HTML help documentation, go to:
R/3 System Library CA-Cross-Application Components General Application
Functions ABAP List Viewer

Report Development Tools

15

Error! No text of specified style in document. Error! No text of specified style in document.
Where to Learn More

16

Reporting Made Easy