Control Break Report ALV Report ABAP Advanced List Control Break Report ALV Report
Types of ABAP Report 1 3 4 1. Report Listing 2. Drill-down Report 3. Control-break Report 4. ALV Report 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 name qty tab … LOOP AT tab. *Print Header AT FIRST. ENDAT. *Print Control Break Field AT NEW name. *Print Normal Data WRITE: / … *Sub Total AT END OF name. *Report Total AT LAST. ENDLOOP. name qty
Example I sales name qty A 10 20 30 B 5
Example I LOOP AT SALES. *Print Header AT FIRST. FORMAT COLOR 1. … 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). *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. WRITE: /2 'Grand Total', 15 SALES-QTY COLOR 7. ENDLOOP.
Example II sales name qty A 10 20 30 B 5
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. AT LAST. WRITE: /5 'Total', 15 SALES-QTY. ENDLOOP.
Exercise I ZSALES cust_id prod_id sale_date qty 1 A1 20020318 10 20020319 100 20020329 50 A2 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 spfli Carrid Connid Cityfrom cityto distance LH 0400 NY BK 100 0402 540 SQ 0110 250
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). endloop. LH 0400 0402 ___________ SQ 0110
Internal Table Processing Example tab(internal table) ID Name prodno Month YTD Accum 1 A 01 100.00 400.00 1,000.00 02 50.00 03 2 B 2,000.00
200.00 1,100.00 2,100.00 ID Name Month Y-T-D Accumulated Product No. ------------------------------------------------------------------------------------ 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
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. write: /10 ‘Total’, 30 tab-month, 50 tab-ytd, 70 tab-accum. endloop.
Exercise II ZCUSTOMERS ZSALES id name city 1 John New York 2 Peter London 3 David Singapore cust_id prod_id sale_date qty 1 A1 20020318 10 20020319 100 20020329 50 A2 200 3 X1 20020321 90
Exercise II ID Name ____Product ID Quantity 1 John A1 10 A1 100 A1 50 ---------------------------- Total 410 3 Peter X1 90 Total 90 Grand Total 500 -------------------------------
Control Break Report > 1 Level Loop at tab. … at new f1. endat. at new f2. write: / … “normal data at end of f2. at end of f1. Endloop. tab sort tab by f1 f2. Group Header Level 1 f1 f2 f3 A 1 2 B 3 C 4 Group Header Level 2 Sub Total Level 2 Sub Total Level 1
Example IV (Control-break 2 Levels) sales name date qty A 20070126 10 20 20070128 30 B 5
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). WRITE: /30 SALES-QTY. AT END OF DATE. ULINE: /(50). SUM. WRITE: /15 'Sub Total(Date)' ,30 SALES-QTY COLOR COL_TOTAL. AT END OF NAME. WRITE: /5 'Sub Total(Name)' ,30 SALES-QTY COLOR COL_TOTAL.
Exercise III ZSALES cust_id prod_id sale_date qty 1 A1 20020318 10 20020319 100 20020329 50 A2 200 3 X1 20020321 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' 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-fieldname = 'FLDATE'. ls_fieldcat-ref_fieldname = 'FLDATE'.
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-fieldname = 'AVAIL_SEAT'. ls_fieldcat-SELTEXT_L = 'Available Seat'. ls_fieldcat-DDICTXT = 'L'. *ls_fieldcat-ref_fieldname = 'SEATSOCC'. *ls_fieldcat-ref_tabname = 'SFLIGHT'. 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-fieldname = 'PRICE'. ls_fieldcat-ref_fieldname = 'PRICE'. ls_fieldcat-ref_tabname = 'SFLIGHT'. ENDFORM. "field_cat_init
ALV Report : Example IV
Exercise IV ZCUSTOMERS ZSALES ZPRODUCTS id name city p_id prod_name 1 John New York 2 Peter London 3 David Singapore cust_id prod_id sale_date qty 1 A1 20020318 10 20020319 100 20020329 50 A2 200 3 X1 20020321 90 ZPRODUCTS p_id prod_name on_hand A1 Pen 100 A2 Pencil 125 B1 Ruler 80 X1 Tape 120
ALV Report : Exercise IV zsales-sale_date zcustomers-id zcustomers-name zproducts-prod_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 I_SAVE = 'A' "ADD 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 : 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 IS_LAYOUT = GT_LAYOUT "ADD 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 : 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 I_GRID_TITLE = GT_GID_TITLE "ADD 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 KNA1 VBAK VBAP
Exercise : Control-break Report vbak-audat vbap-matnr vbak-vbeln vbak-kunnr kna1-name1 vbap-netwr
Exercise : ALV Report vbak-audat vbap-matnr vbap-netwr vbak-vbeln vbak-kunnr kna1-name1