4. Control Break Report Technique
AT FIRST
AT NEW <Control Break field>
AT END OF <Control Break field>
AT LAST
ENDAT
SUM
5. 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.
name qty
tab
7. 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.
8. 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.
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.
12. 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
----------------------------------
13. Example Data for Example III
Carrid Connid Cityfrom cityto distance
LH 0400 NY BK 100
LH 0402 BK NY 540
SQ 0110 SQ BK 250
spfli
14. Example III
Data flight like spfli occurs 0 with Header line.
Select * from spfli into table flight.
loop at flight.
at new carrid.
write : / flight-carrid.
endat.
write flight-connid.
at end of carrid.
uline / (25).
endat.
endloop.
LH 0400 0402
___________
SQ 0110
___________
15. Internal Table Processing Example
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 1,000.00 2,000.00
2 B 03 100.00 100.00 100.00
tab(internal table)
16. 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
----------------------------------------------------
200.00 1,100.00 2,100.00
----------------------------------------------------
Total 450.00 1,340.00 3,200.00
----------------------------------------------------
17. ...
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
18. 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.
ABAP Program
19. Exercise II
id name city
1 John New York
2 Peter London
3 David Singapore
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
ZSALES
ZCUSTOMERS
20. 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
-------------------------------
21. Control Break Report > 1 Level
f1 f2 f3
A 1 1
A 1 2
A 2 1
B 2 1
B 2 2
B 3 3
C 3 4
tab
Loop at tab.
…
at new f1.
…
endat.
at new f2.
…
endat.
write: / … “normal data
at end of f2.
…
endat.
at end of f1.
…
endat.
…
Endloop.
sort tab by f1 f2. Group Header Level
1
Group Header Level 2
Sub Total Level 2
Sub Total Level 1
22. Example IV (Control-break 2 Levels)
name date qty
A 20070126 10
A 20070126 20
A 20070128 30
B 20070126 5
B 20070126 10
sales
23. 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.
…
29. 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.
34. 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[].
35. 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.
42. 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.
47. 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.
54. 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
57. 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
60. 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
61. 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 = GT_GID_TITLE "ADD
TABLES
T_OUTTAB = gt_outtab.