ALV Report

advertisement
ABAP Advanced List


Control Break Report
ALV Report
Types of ABAP Report
1
3
1. Report Listing
4
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>
LAST
 SUM
ENDAT
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
name
qty
Example I
sales
name
qty
A
10
A
20
A
30
B
5
B
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
sales
name
qty
A
10
A
20
A
30
B
5
B
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
1
A1
20020318
10
1
A1
20020319
100
1
A1
20020329
50
1
A2
20020318
50
1
A2
20020329
200
3
X1
20020321
90
Exercise I
ID
1
3
Product ID
Quantity
A1
10
A1
100
A1
50
A2
50
A2
200
-----------------------------Total
410
X1
90
-----------------------------Total
90
-----------------------------Grand Total
500
----------------------------------
Example Data for Example III
spfli
Carrid
Connid
LH
0400
LH
SQ
Cityfrom
cityto
distance
NY
BK
100
0402
BK
NY
540
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
1
A
01
100.00
400.00
1,000.00
1
A
02
50.00
100.00
100.00
1
A
03
100.00
100.00
100.00
2
B
02
100.00
2
B
03
100.00
1,000.00 2,000.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
id
name
city
1
John
New York
2
Peter
London
3
David
Singapore
ZSALES
cust_id
prod_id
sale_date
qty
1
A1
20020318
10
1
A1
20020319
100
1
A1
20020329
50
1
A2
20020318
50
1
A2
20020329
200
3
X1
20020321
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
f1
A
A
A
B
B
B
C
sort tab by f1 f2.
f2
1
1
2
2
2
3
3
f3
1
2
1
1
2
3
4
Loop at tab.
Group Header Level 1
…
at new f1.
…
Group Header Level 2
endat.
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)
sales
name
date
qty
A
20070126
10
A
20070126
20
A
20070128
30
B
20070126
5
B
20070126
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
1
A1
20020318
10
1
A1
20020319
100
1
A1
20020329
50
1
A2
20020318
50
1
A2
20020329
200
3
X1
20020321
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
id
name
city
1
John
New York
2
Peter
London
3
David
Singapore
ZPRODUCTS
p_id
prod_name
on_hand
A1
Pen
100
A2
Pencil
125
B1
Ruler
80
X1
Tape
120
cust_id
prod_id
sale_date
qty
1
A1
20020318
10
1
A1
20020319
100
1
A1
20020329
50
1
A2
20020318
50
1
A2
20020329
200
3
X1
20020321
90
ALV Report : Exercise IV
zsales-sale_date
zcustomers-id
zcustomers-name
zproducts-prod_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 = global
= 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. "ADD
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
vbak-vbeln
vbak-audat
vbak-kunnr
kna1-name1
vbap-matnr
vbap-netwr
Exercise : ALV Report
vbak-audat
vbak-vbeln
vbak-kunnr
kna1-name1
vbap-matnr
vbap-netwr
Download