You are on page 1of 12

REPORTS

CLASSICAL REPORTS
CLASSICAL REPORTS
A report with single input screen (selection screen) and single output screen (list
screen) is called a classical report.

Events in Classical Reports: - All the ABAP programs are developed using events
because ABAP is EVENT DRIVEN PROGRAMMING LANGUAGE i.e. the entire ABAP
program execution is based on order of events.
Load of Program
Initialization
At Selection-screen
At Selection-screen
At Selection-screen
At Selection-screen
At Selection-screen
Start of selection
End of selection
Top of page

output
on field
on value request
on Help Request

End of page
Load of Program: - This event is used to load the program into memory for
execution. This is internal event, which we cannot see.
Initialization: - This event is used to initialize the default values to program variables
and selection-screen variables.
Examples: v_land1 = IN
v_bukrs = 1001
p_werks = US
p_mtart = FERT
AT Selection-screen output: - This event is used to modify the selection screen
dynamically based on user actions on the selection screen.
This event is triggered (or) executed for every action on the selection screen.
AT Selection-screen on field: - This event is used to validate a single input field on
the selection-screen.
AT Selection-screen on value request: - This event is used to provide a search help
for an input field. This event is triggered whenever the user click on search help
button.

AT Selection-screen on help request: - This event is used to provide help information


for an input field.This event is triggered whenever the user click on Help button i.e.
F1 button.
AT Selection-screen: - This event is used to validate multiple fields of the selectionscreen, whereas AT Selection-screen on field is used to validate a single input field.

Start of selection: - This event is used to write the original business logic statements i.e all
select statements. It is also used to indicate the starting point of a program.
It is the default event.
End of selection: - It is used to indicate the start of selection has been ended. It is
mainly used with logical database, which are absolute in ABAP (LDBs are used in old
version of ABAP). But LDBs are stilled used in HR-ABAP, so end of selection is mainly
used in HR-ABAP. It doesnt have much importance in ABAP, it is used to indicate the
start of selection has been ended .
Top of page: - This event is use to display constant page heading for all the pages in
the output screen. This event is triggered after the first WRITE statement.

End of page: - This event is used to provide constant footer information across the
all pages of the list-screen. To display end of page (or) footer information we have
to reserve some lines as footer lines using the statement.
Report <Report Name> Line Count Total Lines(Footer Lines)

Ex Program: Will be discussed separately.


Using AT Selection-screen output: - This event is used to modify the selection screen
dynamically based on user actions on the selection screen.
This event is triggered (or) executed for every action on the selection screen.
Modification ID: - It is an ID assigned to a group of Selection- screen fields, So that
the properties of all the selection screen fields can be modified directly with the help
of modification ID.
Suppose if Modification ID is not available then we have to modify each selectionscreen field individually which makes program very complex.
Syntax: Parameters: <p_name> type <table-fname> MODIF ID <modification ID name>.

Ex Program: Will be discussed separately.

What is difference between AT Selection-screen on field and AT selection-screen?


At Selection-Screen on Field
1. It is used Validate a Single
Field.
2. Whenever there is an error on
A field the entire screen will be
Disabled, except the error field

At Selection-Screen
1. It is used to validate multiple
Fields.
2. Whenever there is an error
On a field the entire screen
Will be enabled.

Ex Program: Will be discussed separately.

INTERACTIVE REPORTS
INTERACTIVE REPORTS

Display the basic information on the basic list and the detailed information in
the Secondary list is called Interactive report.

The first list is called basic list and the number is 0.

The remaining lists are called as secondary lists and the number start from 1
to 20. So totally there are 21 lists.

The lists no are stored in a system variable SY-LSIND.

If you select any line, then the selected line data is stored in SY-LISEL.

Interactive Reports Events:AT Line selection


AT User command
Top of page during line selection
AT PF <Function Key>.
AT Line Selection: - This event is triggered whenever the user double clicks on any
list line. To know the selected line contents, we have two keywords or statements
1)HIDE
2)GET CURSOR
HIDE: - It is a keyword which is used to hide the data into a temporarily memory
called as hide area for further processing. We use the hide statement within the
loop.end loop, so that the HIDE keyword will hide the values into hide area.
Functionality of hide: - Whenever the user double clicks on any list line, the event
at line selection will be triggered.
The system automatically identifies the line no where the user has double clicked
and reads the corresponding record into hide variable.
Ex Program: Will be discussed separately.
GET CURSOR: - This statement is used to read or get the selected line content i.e.
fieldname, field value into the variables.

Syntax: GET CURSOR field <v_fname>


Value <v_fvalue>.

The main Advantage of get cursor is,

We dont have any hide area or temporary memory

We can generate interactive report based on field name and field value which
is not possible with HIDE statement.

The other difference between hide and get cursor is, with the hide statement
the system uses line no and gets the value into hide variable without knowing
what is the fieldname.

Whereas the get cursor will get the exact field name and field value with
which we can generate various interactive reports based on filed names.

Ex Program: Will be discussed separately.


AT User command: - This event is triggered whenever the user clicks on custom
GUI buttons.
Top of page during line selection: - This event is used for providing the constant
page heading for all the secondary lists.
AT PF <Function Key>: - This event is used or triggered whenever the user clicks
on function keys (f1, f2, .etc)

This event is obsolete in new versions (ECC 5.0 or 6.0)

ALV REPORT
ALV ( ABAP List Viewer ) is per-defined report format in SAP. Advantages of
ALV Reports

Better look and feel.


ALV report consists of some per-defined options like sort, filters, sum,
downloading, print, changing layout structure and many more.

Function modules for developing ALV Reports


REUSE_ALV_GRID_DISPLAY Display ALV data in GRID format
REUSE_ALV_LIST_DISPLAY Display ALV data in LIST format
REUSE_ALV_COMMENTARY_WRITE Display TOP-OF-PAGE,
LOGO,END-OF-LIST.
REUSE_ALV_FIELDCATELOG_MERGE Generate field catalog automatically
REUSE_ALV_EVENTS_GET
Display ALV Events
REUSE_ALV_HIERSEQ_LIST_DISPLAY Display hierarchical ALV
REUSE_ALV_BLOCKED_LIST_DISPLAY Display blocked ALV
List of ALVs
ALV with structure
ALV with field category options
ALV with field catalog merge
ALV with layout options
ALV with totals and sub totals
ALV with LOGO/ TOP OF PAGE / END OF LIST
Interactive ALV
hierarchical ALV
ALV Structures
Business Requirement
Develop a material master Report which displays all the fields
STEPS
Declare an internal table and work area for MARA table
Write an select statement to fetch the data
Call the function module REUSE_ALV_GRID_DISPLAY and specify the Below parameters

Structure Name

Program Name

Itab Name
FieldCatelog: It is an int.Table which contains the list of the fields to be displayed in
ALV Report
It is also used to set various properties for each field.
The properties/options are:
1. COL_POS = 1.
2. FIELD NAME Specifies the name of the field
3. TABLE NAME Specifies the name of the internal table
4.
SELTEXT_S Specifies short

SELTEXT_L
Specifies Long

SELTEXT_M Specifies medium


5. DO_SUM = X For grand totals
6. SUBTOT = X Sub totals to be calculated
7. EDIT
= X Field can be editable
8. EMPHASIZE = CXYZ Specifies the Color to the fields

C Indicates color

X Color Numbers

Y Backgroundcolor 1 On BG color

0 off BG color

Z Font color
1 OnFont color

0 Off font color


9. REFERENCE TABLENAME

REFERENCE FIELDNAME To copy all the properties


from data dictionary to a
field catalog field.
10. KEY
Specify the key field
11. HOTSPOT For selection.
Generation of Fieldcatelog :

It is generated using 2 ways.

1) Manually

2) Automatically by using FM

Steps for Example Program on field catalog


Declare the internal table and work area for the field catalog
DATA : i_fcat TYPE slis_t_fieldcat_alv.
*DATA : wa_fcat TYPE slis_fieldcat_alv.
DATA : wa_fcat like LINE OF i_fcat.
Fill the fieldcatelog Itab with all fields and their corresponding properties.
wa_fcat-col_pos = 1. "v_pos.
wa_fcat-fieldname = 'KUNNR'.
*wa_fcat-tabname = 'I_KNA1'.
WA_FCAT-SELTEXT_L = 'CUST_NUM'.
*WA_FCAT-EDIT = 'X'.
WA_FCAT-EMPHASIZE = 'C610'.
WA_FCAT-REF_TABNAME = 'KNA1'.

WA_FCAT-REF_FIELDNAME = 'KUNNR'.
*WA_FCAT-KEY = 'X'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
Call the function module and Export the field catalog in internal table as exporting
parameters to IT_FCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM
= 'SY-REPID'
IT_FIELDCAT
= I_FCAT
TABLES
T_OUTTAB
= I_KNA1.
ALV with Layout
Layout
It is a structure or work area which is used to decorate or embellish the output of ALV
Report
Layout contains the few properties to decorate the ALV output
The properties are,
1. ZEEBRA
= X. Displays ALV with alternative colors

2. COLWIDTH-OPTIMIZE = X. Each column in ALV o/p


displayed with
maximum length, to display the entire data.
3. EDIT= X. All the columns are displayed in editable mode.
4. NO_VLINE = X. Vertical lines will not be displayed
5. NO_HLINE = X. Horizontal lines will not be displayed
Steps:
Declare a work area for the Layout
DATA : wa_layout TYPE slis_layout_alv.
Fill the WA with various options.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
* wa_layout-edit = 'X'.
* wa_layout-no_vline = 'X'.
wa_layout-no_hline = 'X'.
Call the function module and send the WA as exporting parameter to IS_LAYOUT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM
= SY-REPID
IS_LAYOUT
= WA_LAYOUT
IT_FIELDCAT
= I_FCAT
TABLES
T_OUTTAB
= I_KNA1.
ALV Reports with Totals
The totals can be calculated in two ways
By clicking on ALV output field.
By programmatically setting the option

DO_SUM = X, for an currency/quantity field in FCAT


WA_FCAT-COL_POS = 5.
WA_FCAT-FIELDNAME = 'NETWR'.
WA_FCAT-SELTEXT_M = 'NETPRICE.
WA_FCAT-DO_SUM = 'X'.
APPEND WA_FCAT TO I_FCAT.
ALV Reports with and sub totals
To calculate sub totals, we need to find out on what basis (field name) the sub totals
need to be calculated.
We need to sort the field in ascending order.
Then we need to set the property

SUBTOT = X in FCAT.
WA_SORT-FIELDNAME = 'VBELN'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO I_SORT.
Steps :
Declare the internal table and work area for the sorting
DATA : I_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA : WA_SORT TYPE SLIS_SORTINFO_ALV.
Specify the field and subtot = X .
WA_SORT-FIELDNAME = 'VBELN'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO I_SORT.
.
Call the function module and send the SORT internal table as exporting parameters to
IT_SORT
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING

I_CALLBACK_PROGRAM
= SY-REPID
IT_FIELDCAT
= I_FCAT
IT_SORT
= I_SORT
TABLES
T_OUTTAB
= I_VBAP.
ALV with field catalog merge
We can create a field catalog either manually or by automatically
REUSE_ALV_FIELDCATELOG_MERGE is the function module which is used to create field
catalog automatically
But this is obsolete because, the function module uses the old syntax for declaring
internal tables
I.e. the internal table should be created as below and all the fields in the internal
table must be declared using LIKE statement not the TYPE statement.
DATA: BEGIN OF I_MARA OCCURS 0,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MEINS LIKE MARA-MEINS,
END OF I_MARA.
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.
LOOP AT I_FCAT INTO WA_FCAT.
IF WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-NO_OUT = 'X'. "For hiding the field
ELSEIF WA_FCAT-FIELDNAME = 'MTART'.
WA_FCAT-KEY = 'X.
ENDIF.
MODIFY I_FCAT FROM WA_FCAT INDEX SY-TABIX.
ENDLOOP.
ALV Reports with top of page/ Events
There are totally 17 events available for ALV reporting
The function module REUSE_ALV_EVENTS_GET will display all the list of ALV events
Below are some events
Top-Of-Page
End-Of-List
At User command
Set PF status
ALV with LOGO:
For Logos in the ALV , We have two steps.
1. Upload the Logo from our system into SAP.
2. Call the FM Reuse_Alv_Commentary_Write and Export the Logo
name.
STEP1: OAER is the T-Code for upload the Logos into SAP.
=> Go to OAER Tcode.

ClassName Pictures

ClassType OT

ObjectKey ARJUN

Click on the Standard Document Types

Double Click on the SCREEN Option for browse the image.


Click on the Save Button.
STEP2:

Call Function REUSE_ALV_COMMENTARY_WRITE

Exporting

I_LOGO
= ARJUN.
TOP-OF-PAGE
Call the function module REUSE_ALV_EVENTS_GET
Provide the sub routine name for top-of-page event
Write below down the code in sub routine
Call the function module REUSE_ALV_COMMENTARY_WRITE to display top-of-page in
ALV
Finally export the events into internal table to the REUSE_ALV_GRID_DISPLAY
STEP1:Data Declarations for TOP-OF-PAGE.
TYPE-POOLS: SLIS.
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.
STEP2:
Call Function REUSE_ALV_EVENTS_GET
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 into WA_EVENTS index SYTABIX.
Form FORM_TOP_OF_PAGE.
WA_HEADING - TYP = H.
WA_HEADING INFO = MATERIAL MASTER 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.
STEP3:
Call Function REUSE_ALV_COMMENTARY_WRITE

Exporting

IT_LIST_COMMENTARY = I_HEADING.
EndForm.
STEP4:
Call Function REUSE_ALV_GRID_DISPLAY

Exporting

I_Callback_Programme = SY REPID

IT_Events
= I_EVENTS

Tables

T_OutTab
= I_MARA.

END -OF-LIST:
Call the function module REUSE_ALV_EVENTS_GET
Provide the sub routine name for End-of-List event
Write below down the code in sub routine

Call the function module REUSE_ALV_COMMENTARY_WRITE to display End-of-List in


ALV
Finally export the events into internal table to the REUSE_ALV_GRID_DISPLAY
STEP1:Data Declarations for End-of-List.
TYPE-POOLS: SLIS.
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.
STEP2:
Call Function REUSE_ALV_EVENTS_GET
Importing
ET_EVENTS = I_EVENTS.
Read Table I_EVENTS into WA_EVENTS

with key NAME = END_OF_LIST.


WA_EVENTS-FORM = FORM_END_OF_LIST.
Modify I_EVENTS into WA_EVENTS index SYTABIX.
Form FORM_END_OF_LIST.
WA_HEADING - TYP = S.
WA_HEADING INFO = ALL RIGHTS RESERVED TO THE
COMPANY .
Append WA_HEADING to I_HEADING.
STEP3:
Call Function REUSE_ALV_COMMENTARY_WRITE

Exporting

IT_LIST_COMMENTARY = I_HEADING

I_END_OF_LIST_GRID
= X.
EndForm.
STEP4:
Call Function REUSE_ALV_GRID_DISPLAY

Exporting

I_Callback_Programme = SY REPID

IT_Events
= I_EVENTS

Tables

T_OutTab
= I_MARA.
INTERACTIVE ALVs:
Call the function module REUSE_ALV_EVENTS_GET
Provide the sub routine name for USER_COMMAND
Write below down the code in sub routine
In the Sub routine Call the function module REUSE_ALV_GRID_DISPLAY to display
Secondary ALV
Finally export the events into internal table to the REUSE_ALV_GRID_DISPLAY
STEP1:Data Declarations .
Type-Pools: SLIS.
Data: I_Events type SLIS_T_EVENT.
Data: WA_Events like line of I_Events.
Data: V_VBELN type VBAK VBELN.
STEP2:
Call Function REUSE_ALV_EVENTS_GET
Importing

ET_EVENTS
= I_EVENTS.
Read Table I_EVENTS into WA_EVENTS with key NAME = USER_COMMAND.
WA_EVENTS-FORM = FORM_USER_COMMAND.

MODIFY I_EVENTS from WA_EVENTS index SY-TABIX.


Form FORM_USER_COMMAND using UCOMM type SY-UCOMM

SELFIELD type SLIS_SELFIELD.


READ TABLE I_VBAK into WA_VBAK index SELFIELD-TABINDEX.

Select * from VBAP into corresponding fields of table I_VBAP

where VBELN = WA_VBAK-VBELN.


STEP3:
CALL FUNCTION REUSE_ALV_GRID_DISPLAY
Exporting

I_CALLBACK_PROGRAME = SY-REPID

I_STRUCTURE_NAME
= VBAP
Tables

T_OUTTAB
= I_VBAP.
STEP4:
Call Function REUSE_ALV_GRID_DISPLAY

Exporting

I_Callback_Programme = SY REPID

I_StructureName
= VBAK

IT_Events
= I_EVENTS

Tables

T_OutTab
= I_VBAK.
HIERARCHIAL ALVs:
Create User-Defined Types for Header Data and Item Data.
Write the code in Subroutines for Header data and Item Data.
Create the Fieldcatalog .
Create subroutine for Hierarchy.

Form Create_Hierarchy.

Key Header01 = VBELN.

Key Item01
= VBELN.

EndForm.
Finally,For Display Exports Header Data, Item Data, and Fieldcatalog to the function
module REUSE_ALV_HIERSEQ_LIST_DISPLAY.
Call Function REUSE_ALV_HIERSEQ_LIST_DISPLAY

Exporting

I_Callback_Program
= SY REPID

IT_Fieldcat
= I_FCAT

I_Tabname_Header
= I_VBAK

I_Tabname_Item
= I_VBAP

Is_KeyInfo
= KEY

Tables

T_Outtab_Header
= I_VBAK

T_Outtab_Item
= I_VBAP.

You might also like