07.advanced abap

65
ABAP Advanced List Control Break Report ALV Report

Upload: y-z-mercan

Post on 07-Nov-2014

11.105 views

Category:

Education


3 download

DESCRIPTION

You can find more SAP ABAP documents at http://sapdocs.info/category/sap/abap/

TRANSCRIPT

Page 1: 07.Advanced Abap

ABAP Advanced List

Control Break Report ALV Report

Page 2: 07.Advanced Abap

Types of ABAP Report

1. Report Listing

2. Drill-down Report

3. Control-break Report

4. ALV Report

1

3

4

Page 3: 07.Advanced Abap

Internal Table Processing Technique

Control-Break Report

Page 4: 07.Advanced Abap

Control Break Report Technique

AT FIRST AT NEW <Control Break field>

AT END OF <Control Break field>

AT LAST

ENDAT

SUM

Page 5: 07.Advanced Abap

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: 07.Advanced Abap

Example I

name

qty

A 10

A 20

A 30

B 5

B 10

sales

Page 7: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

Example II

name

qty

A 10

A 20

A 30

B 5

B 10

sales

Page 10: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

...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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

Exercise III

Page 26: 07.Advanced Abap

ALV ReportALV Report

Page 27: 07.Advanced Abap

ALV Report ALV Report Listing using Function

Module ALV Report using Control (ABAP

Object)

Page 28: 07.Advanced Abap

ALV Grid Listing

Call function ‘REUSE_ALV_GRID_DISPLAY’

Page 29: 07.Advanced Abap

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: 07.Advanced Abap

ALV Example IList/Grid Display

Page 31: 07.Advanced Abap

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: 07.Advanced Abap

ALV Report : Exercise I

Page 33: 07.Advanced Abap

ALV Example IIUsing Field Catalog

Page 34: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

ALV Field Catalog

Page 40: 07.Advanced Abap

ALV Report : Exercise II

Page 41: 07.Advanced Abap

ALV Example IIIUsing Field Catalog

(Add Derived Column)

Page 42: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

ALV Field Catalog – Add Field

Page 45: 07.Advanced Abap

ALV Report : Exercise III

Page 46: 07.Advanced Abap

ALV Example IVUsing Field Catalog

(SELECT … INNER JOIN…)

Page 47: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

ALV Report : Example IV

Page 50: 07.Advanced Abap

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: 07.Advanced Abap

ALV Report : Exercise IV

zcustomers-id zcustomers-name

zproducts-prod_name

zsales-sale_date

zsales-qty

Page 52: 07.Advanced Abap

ALV Technique

Page 53: 07.Advanced Abap

ALV : Variant

Page 54: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

ALV : Zebra

Page 57: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

ALV : Title

Page 60: 07.Advanced Abap

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: 07.Advanced Abap

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: 07.Advanced Abap

Exercise

Page 63: 07.Advanced Abap

Exercise : Sale Order

VBAK

KNA1

VBAP

Page 64: 07.Advanced Abap

Exercise : Control-break Report

vbak-vbeln

vbak-audat

vbak-kunnr

kna1-name1 vbap-matnr vbap-netwr

Page 65: 07.Advanced Abap

Exercise : ALV Report

vbak-vbeln

vbak-audat

vbak-kunnr

kna1-name1 vbap-matnr vbap-netwr