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>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

name

qty

Example I
name sales qty

A A A B B

10 20 30 5 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

A A A B B

10 20 30 5 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 1 1 1 1 1 3 prod_id A1 A1 A1 A2 A2 X1 sale_date 20020318 20020319 20020329 20020318 20020329 20020321 qty 10 100 50 50 200 90

Exercise I
ID Product ID 1 A1 10 A1 100 A1 50 A2 50 A2 200 -----------------------------Total 410 3 X1 90 -----------------------------Total 90 -----------------------------Grand Total 500 ---------------------------------Quantity

Example Data for Example III
spfli
Carrid Connid Cityfrom cityto distance

LH LH SQ

0400 0402 0110

NY BK SQ

BK NY BK

100 540 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. ___________ endat. SQ 0110 ___________ write flight-connid. at end of carrid. uline / (25). endat. endloop.

tab(internal table)
ID Name prodno

Internal Table Processing Example
Month YTD Accum

1 1 1 2 2

A A A B B

01 02 03 02 03

100.00 50.00 100.00 100.00 100.00

400.00 1,000.00 100.00 100.00 100.00 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 ---------------------------------------------------200.00 1,100.00 2,100.00 ---------------------------------------------------450.00 1,340.00 3,200.00 ----------------------------------------------------

Total

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
1 2 3

name
John Peter David

city
New York London Singapore

ZSALES
cust_id 1 1 1 1 1 3 prod_id A1 A1 A1 A2 A2 X1 sale_date 20020318 20020319 20020329 20020318 20020329 20020321 qty 10 100 50 50 200 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.

f1 f2 f3 A A A B B B C 1 1 2 2 2 3 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

A A A B B

20070126 10 20070126 20 20070128 30 20070126 5 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 1 1 1 1 1 3 prod_id A1 A1 A1 A2 A2 X1 sale_date 20020318 20020319 20020329 20020318 20020329 20020321 qty 10 100 50 50 200 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
id
1 2 3

name
John Peter David

city
New York London Singapore

ZSALES
cust_id 1 1 1 1 1 3 prod_id A1 A1 A1 A2 A2 X1 sale_date 20020318 20020319 20020329 20020318 20020329 20020321 qty 10 100 50 50 200 90

ZPRODUCTS
p_id
A1 A2 B1 X1

prod_name on_hand
Pen Pencil Ruler Tape 100 125 80 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

TART-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 = globa

= 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
vbakvbeln vbakaudat vbakkunnr kna1-name1 vbap-matnr vbap-netwr

Exercise : ALV Report
vbakaudat vbakvbeln vbakkunnr kna1-name1 vbap-matnr vbap-netwr

Sign up to vote on this title
UsefulNot useful