You are on page 1of 65

ABAP Advanced

List

Control Break Report


ALV Report

Types of ABAP Report


1
3

1. Report Listing

2. Drill-down Report
3. Control-break Report
4. ALV Report

Internal Table Processing


Technique
Control-Break Report

Control Break Report


Technique

AT
AT
AT
AT

FIRST
NEW <Control Break field>
END OF <Control Break field>ENDAT
LAST

SUM

Program Structure

LOOP AT tab.
*Print Header
AT FIRST.

ENDAT.
*Print Control Break Field
AT NEW name.

ENDAT.
*Print Normal Data
WRITE: /
*Sub Total
AT END OF name.

ENDAT.
*Report Total
AT LAST.

ENDAT.
ENDLOOP.

tab

nam
e

qty

Example I
name
sales

qty

10

20

30

10

Example I

LOOP AT SALES.
*Print Header
AT FIRST.
FORMAT COLOR 1.
WRITE: / 'Name', 23 'Qty', 35 ' '.
ULINE: /(35).
FORMAT COLOR OFF.
ENDAT.
*Print Control Break Field
AT NEW NAME.
WRITE: / SALES-NAME.
ULINE: /(5).
ENDAT.
*Print Normal Data
WRITE: /15 SALES-QTY.

Example I
*Print Total for each group data
AT END OF NAME.
ULINE: /(35).
SUM.
WRITE: /5 'Total' ,15 SALES-QTY COLOR 3.
ENDAT.
*Print Grand Total for the report
AT LAST.
ULINE: /(35).
SUM.
WRITE: /2 'Grand Total', 15 SALES-QTY COLOR 7.
ULINE: /(35).
ENDAT.
ENDLOOP.

Example II
name
sales

qty

10

20

30

10

Example II

LOOP AT SALES.
AT FIRST.
FORMAT COLOR 1.
WRITE: / 'Name', 23 'Qty', 35 ' '.
ULINE: /(35).
FORMAT COLOR OFF.
ENDAT.
AT END OF NAME.
SUM.
WRITE: / SALES-NAME, 15 SALES-QTY.
ULINE: /(35).
ENDAT.
AT LAST.
SUM.
WRITE: /5 'Total', 15 SALES-QTY.
ULINE: /(35).
ENDAT.
ENDLOOP.

Exercise I
ZSALES
cust_id

prod_id

sale_date

qty

A1

20020318

10

A1

20020319

100

A1

20020329

50

A2

20020318

50

A2

20020329

200

X1

20020321

90

Exercise I
ID
Product ID

Quantity

1
A1
10
A1
100
A1
50
A2
50
A2
200
-----------------------------Total
410
3
X1
90
-----------------------------Total
90
-----------------------------Grand Total
500
----------------------------------

Example Data for Example


III
spfli
Carrid

Connid

Cityfrom

cityto

distance

LH

0400

NY

BK

100

LH

0402

BK

NY

540

SQ

0110

SQ

BK

250

Example III
Data flight like spfli occurs 0 with Header line.
Select * from spfli into table flight.
loop at flight.
at new carrid.
LH 0400 0402
___________
write : / flight-carrid.
SQ 0110
endat.
___________
write flight-connid.
at end of carrid.
uline / (25).
endat.
endloop.

Internal Table Processing Example


tab(internal table)
ID

Name

prodno

Month

YTD

Accum

01

100.00

400.00

1,000.0
0

02

50.00

100.00

100.00

03

100.00

100.00

100.00

02

100.00

1,000.0 2,000.0
0
0

03

100.00

100.00

100.00

ID

Name
Month
Y-T-D
Accumulated
Product No.
-----------------------------------------------------------------------------------1
A
----------------01
100.00
400.00
1,000.00
02
50.00
100.00
100.00
03
100.00
100.00
100.00
---------------------------------------------------250.00
600.00
1,200.00
2
B
----------------02
100.00
1,000.00
2,000.00
03
100.00
100.00
100.00
----------------------------------------------------

Total

200.00 1,100.00
2,100.00
---------------------------------------------------450.00
1,340.00
3,200.00
----------------------------------------------------

ABAP Program
...
loop at tab.
at first.
write: / ID , 10 Name, 30 Month, 50 Y-T-D ,
70 Accumulated.
write: /5 Product No.
uline /.
endat.
on change of tab-id.
write: / tab-id, 10 tab-name.
uline: /(20).
endon.
write: /5 tab-prodno, 30 tab-month, 50 tab-ytd,
70 tab-accum.

ABAP Program
at end of id.
uline /30(60).
sum.
write: /30 tab-month, 50 tab-ytd, 70 tab-accum.
skip.
endat.
at last.
sum.
uline /30(60).
write: /10 Total, 30 tab-month, 50 tab-ytd, 70 tab-accum.
uline /30(60).
endat.
endloop.

Exercise II
ZCUSTOMERS
i
d

name

city

John

New York

Peter

David

ZSALES
cust_id

prod_id

sale_date

qty

A1

2002031
8

10

London

A1

100

Singapor
e

2002031
9

A1

2002032
9

50

A2

2002031
8

50

A2

2002032
9

200

X1

2002032
1

90

Exercise II
ID Name
____Product ID
Quantity
1 John
A1
10
A1
100
A1
50
A2
50
A2
200
---------------------------Total
410
3

Peter
X1
90
---------------------------Total
90
---------------------------Grand Total
500
-------------------------------

Control Break Report > 1


Level
tab sort tab by f1 f2.

f
1
A
A
A
B
B
B
C

f
2
1
1
2
2
2
3
3

f
3
1
2
1
1
2
3
4

Loop at tab.

Group Header
Level 1
at new f1.

Group Header Level


endat.
2
at new f2.

endat.
write: / normal data
at end of f2.
Sub Total Level 2

endat.
at end of f1.
Sub Total Level 1

endat.

Endloop.

Example IV (Control-break 2
Levels)
name
sales

date

qty

2007012
6

10

2007012
6

20

2007012
8

30

2007012
6

2007012
6

10

Example IV (Control-break 2
Levels)

AT NEW NAME.
WRITE: / SALES-NAME.
ULINE: /(5).
ENDAT.
AT NEW DATE.
WRITE: /10 SALES-DATE.
ULINE: /10(10).
ENDAT.
WRITE: /30 SALES-QTY.
AT END OF DATE.
ULINE: /(50).
SUM.
WRITE: /15 'Sub Total(Date)' ,30 SALES-QTY COLOR COL_TOTAL.
ENDAT.
AT END OF NAME.
ULINE: /(50).
SUM.
WRITE: /5 'Sub Total(Name)' ,30 SALES-QTY COLOR COL_TOTAL.
ENDAT.

Exercise III
ZSALES
cust_id

prod_id

sale_date

qty

A1

2002031
8

10

A1

2002031
9

100

A1

2002032
9

50

A2

2002031
8

50

A2

2002032
9

200

X1

2002032
1

90

Exercise III

ALV Report

ALV Report

ALV Report Listing using Function


Module
ALV Report using Control (ABAP
Object)

ALV Grid Listing

Call function
REUSE_ALV_GRID_DISPLAY

ALV Grid Listing


Example
REPORT ZALV01 NO STANDARD PAGE HEADING.
* Internal table
DATA: GT_TAB LIKE SFLIGHT OCCURS 0 WITH HEADER LINE.
* Load Data from DB into internal table
SELECT * FROM SFLIGHT INTO TABLE GT_TAB.
* Call ABAP List Viewer function
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME
= 'SFLIGHT'
TABLES
T_OUTTAB
= GT_TAB.

ALV Example I
List/Grid Display

ALV List/Grid Display


REPORT ZALV02 NO STANDARD PAGE HEADING.
PARAMETERS: list radiobutton group grp1,
grid radiobutton group grp1.
DATA: gt_tab LIKE sflight OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
SELECT * FROM sflight INTO TABLE gt_tab.
IF list = 'X'.
* Call ALV List Viewer
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
TABLES
T_OUTTAB
= GT_TAB.
ELSE.
* Call ALV Grid Viewer
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
TABLES
T_OUTTAB
= GT_TAB.
ENDIF..

ALV Report : Exercise I

ALV Example II
Using Field Catalog

ALV Field Catalog


REPORT ZALV03 NO STANDARD PAGE HEADING.
type-pools slis.
types: begin of i_structure,
carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
price like sflight-price,
end of i_structure.
data: gt_fieldcat type slis_t_fieldcat_alv,
gt_outtab type i_structure occurs 0 with header line.
initialization.
perform field_cat_init using gt_fieldcat[].

ALV Field Catalog


FORM field_cat_init using rt_fieldcat type slis_t_fieldcat_alv.
data: ls_fieldcat type slis_fieldcat_alv,
pos type i value 1.
clear LS_FIELDCAT.
*Column 1
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'CARRID'.
ls_fieldcat-ref_fieldname = 'CARRID'.
ls_fieldcat-ref_tabname = 'SFLIGHT'.
ls_fieldcat-key
= 'X'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.

ALV Field Catalog


*Column 2
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'CONNID'.
ls_fieldcat-ref_fieldname = 'CONNID'.
ls_fieldcat-ref_tabname = 'SFLIGHT'.
ls_fieldcat-key
= 'X'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
*Column 3
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'FLDATE'.
ls_fieldcat-ref_fieldname = 'FLDATE'.
ls_fieldcat-ref_tabname = 'SFLIGHT'.
ls_fieldcat-key
= 'X'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.

ALV Field Catalog


*Column 4
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'PRICE'.
ls_fieldcat-ref_fieldname = 'PRICE'.
ls_fieldcat-ref_tabname = 'SFLIGHT'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
endform.

ALV Field Catalog


START-OF-SELECTION.
SELECT carrid connid fldate price
FROM SFLIGHT
INTO TABLE GT_OUTTAB.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME
= 'I_STRUCTURE'
IT_FIELDCAT
= gt_fieldcat[]
TABLES
T_OUTTAB
= gt_outtab.

ALV Field Catalog

ALV Report : Exercise II

ALV Example III


Using Field Catalog
(Add Derived Column)

ALV Field Catalog Add


Field

types: begin of i_structure,


carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
price like sflight-price,
avail_seat like SFLIGHT-SEATSOCC,
end of i_structure.

START-OF-SELECTION.
select * from sflight.
move-corresponding sflight to gt_outtab.
gt_outtab-avail_seat = sflight-seatsmax - sflight-seatsocc.
append gt_outtab.
endselect.

ALV Field Catalog Add Field


form field_cat_init using rt_fieldcat type slis_t_fieldcat_alv.

*Column 4
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'PRICE'.
ls_fieldcat-ref_fieldname = 'PRICE'.
ls_fieldcat-ref_tabname = 'SFLIGHT'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
*Column 5
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'AVAIL_SEAT'.
ls_fieldcat-SELTEXT_L
= 'Available Seat'.
ls_fieldcat-DDICTXT
= 'L'.
*ls_fieldcat-ref_fieldname = 'SEATSOCC'.
*ls_fieldcat-ref_tabname = 'SFLIGHT'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
endform.

ALV Field Catalog Add


Field

ALV Report : Exercise III

ALV Example IV
Using Field Catalog
(SELECT INNER JOIN)

ALV Field Catalog Select Inner Join

types: begin of i_structure,


carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
fldate LIKE sflight-fldate,
cityto LIKE spfli-cityto,
price LIKE sflight-price,
end of i_structure.

START-OF-SELECTION.
SELECT spfli~carrid spfli~connid sflight~fldate
spfli~cityto sflight~price
INTO TABLE gt_outtab
FROM spfli INNER JOIN sflight
ON spfli~carrid = sflight~carrid AND
spfli~connid = sflight~connid.

ALV Field Catalog


form field_cat_init using rt_fieldcat type slis_t_fieldcat_alv.

*Column 4
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'CITYTO'.
ls_fieldcat-ref_fieldname = 'CITYTO'.
ls_fieldcat-ref_tabname
= 'SPFLI'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
*Column 5
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'PRICE'.
ls_fieldcat-ref_fieldname = 'PRICE'.
ls_fieldcat-ref_tabname = 'SFLIGHT'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ENDFORM.
"field_cat_init

ALV Report : Example IV

Exercise IV
ZCUSTOMERS

ZSALES

i
d

name

city

John

New York

Peter

David

ZPRODUCTS

cust_id

prod_id

sale_date

qty

A1

2002031
8

10

London

A1

100

Singapor
e

2002031
9

A1

2002032
9

50

A2

2002031
8

50

A2

2002032
9

200

X1

2002032
1

90

p_id

prod_nam
e

on_han
d

A1

Pen

100

A2

Pencil

125

B1

Ruler

80

X1

Tape

120

ALV Report : Exercise IV

zsales-sale_date
zcustomers-id

zcustomersname

zproductsprod_name

zsales-qty

ALV Technique

ALV : Variant

ALV : Variant
REPORT ZALV06 NO STANDARD PAGE HEADING.
type-pools slis.
types: begin of i_structure,
carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
price like sflight-price,
end of i_structure.
data: gt_fieldcat type slis_t_fieldcat_alv,
isvariant like DISVARIANT. "ADD
gt_outtab type i_structure occurs 0 with header line.
initialization.
perform field_cat_init using gt_fieldcat[].
isvariant-report = 'ZALV06'. "ADD

ALV : Variant
START-OF-SELECTION.
SELECT carrid connid fldate price
FROM SFLIGHT
INTO TABLE GT_OUTTAB.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME
= 'I_STRUCTURE'
IT_FIELDCAT
= gt_fieldcat[]
IS_VARIANT
= isvariant "ADD
I_SAVE
TABLES
T_OUTTAB

= 'A'

"ADD
A = user&Global,U = user,X = g

= gt_outtab.

ALV : Zebra

ALV : Zebra
REPORT ZALV2 NO STANDARD PAGE HEADING.
type-pools slis.
types: begin of i_structure,
carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
price like sflight-price,
end of i_structure.
data: gt_fieldcat type slis_t_fieldcat_alv,
GT_LAYOUT TYPE SLIS_LAYOUT_ALV, "ADD
gt_outtab type i_structure occurs 0 with header line.
initialization.
perform field_cat_init using gt_fieldcat[].
GT_LAYOUT-ZEBRA = 'X'. "ADD

ALV : Zebra
START-OF-SELECTION.
SELECT carrid connid fldate price
FROM SFLIGHT
INTO TABLE GT_OUTTAB.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME
= 'I_STRUCTURE'
IT_FIELDCAT
= gt_fieldcat[]
IS_LAYOUT
TABLES
T_OUTTAB

= GT_LAYOUT "ADD
= gt_outtab.

ALV : Title

ALV : Title
REPORT ZALV2 NO STANDARD PAGE HEADING.
type-pools slis.
types: begin of i_structure,
carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
price like sflight-price,
end of i_structure.
data: gt_fieldcat type slis_t_fieldcat_alv,
GT_GID_TITLE TYPE LVC_TITLE, "ADD
gt_outtab type i_structure occurs 0 with header line.
initialization.
perform field_cat_init using gt_fieldcat[].

concatenate 'Flight Information' ' for ALV Report' into GT_GID_TITLE. "AD

ALV : Title
START-OF-SELECTION.
SELECT carrid connid fldate price
FROM SFLIGHT
INTO TABLE GT_OUTTAB.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME
= 'I_STRUCTURE'
IT_FIELDCAT
= gt_fieldcat[]
I_GRID_TITLE
TABLES
T_OUTTAB

= GT_GID_TITLE "ADD
= gt_outtab.

Exercise

Exercise : Sale Order


KNA1
VBAK

VBAP

Exercise : Control-break
Report
vbakvbeln

vbakaudat

vbakkunnr

kna1-name1

vbap-matnr

vbap-netwr

Exercise : ALV Report


vbakaudat
vbakvbeln

vbakkunnr

kna1-name1

vbap-matnr

vbap-netwr

You might also like