07.Advanced Abap
-
Upload
y-z-mercan -
Category
Education
-
view
11.105 -
download
3
description
Transcript of 07.Advanced Abap
ABAP Advanced List
Control Break Report ALV Report
Types of ABAP Report
1. Report Listing
2. Drill-down Report
3. Control-break Report
4. ALV Report
1
3
4
Internal Table Processing Technique
Control-Break Report
Control Break Report Technique
AT FIRST AT NEW <Control Break field>
AT END OF <Control Break field>
AT LAST
ENDAT
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.
name
qty
tab
Example I
name
qty
A 10
A 20
A 30
B 5
B 10
sales
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
qty
A 10
A 20
A 30
B 5
B 10
sales
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 IZSALES
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 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
Carrid Connid Cityfrom cityto distance
LH 0400 NY BK 100
LH 0402 BK NY 540
SQ 0110 SQ BK 250
spfli
Example IIIData 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___________
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)
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
----------------------------------------------------
...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.
ABAP Program
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
ZSALESZCUSTOMERS
Exercise IIID 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
f1
f2
f3
A 1 1
A 1 2
A 2 1
B 2 1
B 2 2
B 3 3
C 3 4
tabLoop 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
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
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
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
Exercise III
ALV ReportALV 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 functionCALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_STRUCTURE_NAME = 'SFLIGHT' TABLES T_OUTTAB = GT_TAB.
ALV Example IList/Grid Display
ALV List/Grid DisplayREPORT 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 IIUsing 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 IIIUsing 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 Fieldform 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 IVUsing 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
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
ZSALESZCUSTOMERS
p_id prod_name
on_hand
A1 Pen 100
A2 Pencil 125
B1 Ruler 80
X1 Tape 120
ZPRODUCTS
ALV Report : Exercise IV
zcustomers-id zcustomers-name
zproducts-prod_name
zsales-sale_date
zsales-qty
ALV Technique
ALV : Variant
ALV : VariantREPORT 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 = 'A' "ADD “ A = user&Global,U = user,X = global TABLES T_OUTTAB = gt_outtab.
ALV : Zebra
ALV : ZebraREPORT 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 = GT_LAYOUT "ADD TABLES T_OUTTAB = gt_outtab.
ALV : Title
ALV : TitleREPORT 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 = GT_GID_TITLE "ADD TABLES T_OUTTAB = gt_outtab.
Exercise
Exercise : Sale Order
VBAK
KNA1
VBAP
Exercise : Control-break Report
vbak-vbeln
vbak-audat
vbak-kunnr
kna1-name1 vbap-matnr vbap-netwr
Exercise : ALV Report
vbak-vbeln
vbak-audat
vbak-kunnr
kna1-name1 vbap-matnr vbap-netwr