65
ABAP Advanced List Control Break Report ALV Report

ABAP Advanced List Control Break Report ALV Report

Embed Size (px)

Citation preview

Page 1: ABAP Advanced List Control Break Report ALV Report

ABAP Advanced List

Control Break Report ALV Report

Page 2: 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

Page 3: ABAP Advanced List Control Break Report ALV Report

Internal Table Processing Technique

Control-Break Report

Page 4: ABAP Advanced List Control Break Report ALV Report

Control Break Report Technique

AT FIRST AT NEW <Control Break field>

AT END OF <Control Break field>

AT LAST

ENDAT

SUM

Page 5: ABAP Advanced List Control Break Report ALV Report

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

Page 6: ABAP Advanced List Control Break Report ALV Report

Example I

name

qty

A 10

A 20

A 30

B 5

B 10

sales

Page 7: ABAP Advanced List Control Break Report ALV Report

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.

Page 8: ABAP Advanced List Control Break Report ALV Report

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.

Page 9: ABAP Advanced List Control Break Report ALV Report

Example II

name

qty

A 10

A 20

A 30

B 5

B 10

sales

Page 10: ABAP Advanced List Control Break Report ALV Report

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.

Page 11: ABAP Advanced List Control Break Report ALV Report

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

Page 12: ABAP Advanced List Control Break Report ALV Report

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

Page 13: ABAP Advanced List Control Break Report ALV Report

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

Page 14: ABAP Advanced List Control Break Report ALV Report

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___________

Page 15: ABAP Advanced List Control Break Report ALV Report

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)

Page 16: ABAP Advanced List Control Break Report ALV Report

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

----------------------------------------------------

Page 17: ABAP Advanced List Control Break Report ALV Report

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

Page 18: ABAP Advanced List Control Break Report ALV Report

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

Page 19: ABAP Advanced List Control Break Report ALV Report

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

Page 20: ABAP Advanced List Control Break Report ALV Report

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

Page 21: ABAP Advanced List Control Break Report ALV Report

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

Page 22: ABAP Advanced List Control Break Report ALV Report

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

Page 23: ABAP Advanced List Control Break Report ALV Report

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

Page 24: ABAP Advanced List Control Break Report ALV Report

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

Page 25: ABAP Advanced List Control Break Report ALV Report

Exercise III

Page 26: ABAP Advanced List Control Break Report ALV Report

ALV ReportALV Report

Page 27: ABAP Advanced List Control Break Report ALV Report

ALV Report ALV Report Listing using Function

Module ALV Report using Control (ABAP

Object)

Page 28: ABAP Advanced List Control Break Report ALV Report

ALV Grid Listing

Call function ‘REUSE_ALV_GRID_DISPLAY’

Page 29: ABAP Advanced List Control Break Report ALV Report

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.

Page 30: ABAP Advanced List Control Break Report ALV Report

ALV Example IList/Grid Display

Page 31: ABAP Advanced List Control Break Report ALV Report

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

Page 32: ABAP Advanced List Control Break Report ALV Report

ALV Report : Exercise I

Page 33: ABAP Advanced List Control Break Report ALV Report

ALV Example IIUsing Field Catalog

Page 34: ABAP Advanced List Control Break Report ALV Report

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[].

Page 35: ABAP Advanced List Control Break Report ALV Report

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.

Page 36: ABAP Advanced List Control Break Report ALV Report

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.

Page 37: ABAP Advanced List Control Break Report ALV Report

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.

Page 38: ABAP Advanced List Control Break Report ALV Report

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.

Page 39: ABAP Advanced List Control Break Report ALV Report

ALV Field Catalog

Page 40: ABAP Advanced List Control Break Report ALV Report

ALV Report : Exercise II

Page 41: ABAP Advanced List Control Break Report ALV Report

ALV Example IIIUsing Field Catalog

(Add Derived Column)

Page 42: ABAP Advanced List Control Break Report ALV Report

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.

Page 43: ABAP Advanced List Control Break Report ALV Report

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.

Page 44: ABAP Advanced List Control Break Report ALV Report

ALV Field Catalog – Add Field

Page 45: ABAP Advanced List Control Break Report ALV Report

ALV Report : Exercise III

Page 46: ABAP Advanced List Control Break Report ALV Report

ALV Example IVUsing Field Catalog

(SELECT … INNER JOIN…)

Page 47: ABAP Advanced List Control Break Report ALV Report

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.

Page 48: ABAP Advanced List Control Break Report ALV Report

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

Page 49: ABAP Advanced List Control Break Report ALV Report

ALV Report : Example IV

Page 50: ABAP Advanced List Control Break Report ALV Report

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

Page 51: ABAP Advanced List Control Break Report ALV Report

ALV Report : Exercise IV

zcustomers-id zcustomers-name

zproducts-prod_name

zsales-sale_date

zsales-qty

Page 52: ABAP Advanced List Control Break Report ALV Report

ALV Technique

Page 53: ABAP Advanced List Control Break Report ALV Report

ALV : Variant

Page 54: ABAP Advanced List Control Break Report ALV Report

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

Page 55: ABAP Advanced List Control Break Report ALV Report

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.

Page 56: ABAP Advanced List Control Break Report ALV Report

ALV : Zebra

Page 57: ABAP Advanced List Control Break Report ALV Report

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

Page 58: ABAP Advanced List Control Break Report ALV Report

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.

Page 59: ABAP Advanced List Control Break Report ALV Report

ALV : Title

Page 60: ABAP Advanced List Control Break Report ALV Report

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

Page 61: ABAP Advanced List Control Break Report ALV Report

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.

Page 62: ABAP Advanced List Control Break Report ALV Report

Exercise

Page 63: ABAP Advanced List Control Break Report ALV Report

Exercise : Sale Order

VBAK

KNA1

VBAP

Page 64: ABAP Advanced List Control Break Report ALV Report

Exercise : Control-break Report

vbak-vbeln

vbak-audat

vbak-kunnr

kna1-name1 vbap-matnr vbap-netwr

Page 65: ABAP Advanced List Control Break Report ALV Report

Exercise : ALV Report

vbak-vbeln

vbak-audat

vbak-kunnr

kna1-name1 vbap-matnr vbap-netwr