ABAP REPORTS
Report ZSD_Customer_Report
Types:begin of ty_kna1,
Customer(10) type c,
NAME(20) TYPE C,
CITY(20) TYPE C,
END OF ty_KNA1.
* provide Work Area --------- comment line
Data:wa_kna1 type ty_kna1.
* provide execution logic
SELECT single KUNNR NAME1 ORT01 FROM KNA1 INTO
WA_KNA1.
* creating virtual page & printing
WRITE:/10 WA_KNA1-CUSTOMER,
30 WA_KNA1-NAME,
60 WA_KNA1-CITY.
REPORT ZSD_LOOPENDLOOP.
TYPES:BEGIN OF ty_kna1,
customer(20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF ty_kna1.
DATA:it_kna1 TYPE TABLE OF ty_kna1,
wa_kna1 TYPE ty_kna1.
* * provide extraction logic
SELECT kunnr name1 ort01 FROM kna1 INTO TABLE it_kna1.
* * Appling processing logic
LOOP AT it_kna1 INTO wa_kna1.
WRITE:/10 wa_kna1-customer,
30 wa_kna1-name,
60 wa_kna1-city.
ENDLOOP.
REPORT ZSD_ INTERNAL_WORKAREA.
TYPES: BEGIN OF ty_kna1,
customer (20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF ty_kna1.
DATA: wa_kna1 TYPE ty_kna1,
it_kna1 TYPE TABLE OF ty_kna1.
* provide extraction logic
SELECT kunnr name1 ort01 FROM kna1 INTO TABLE
it_kna1.
* Appling processing logic
LOOP AT it_kna1 INTO wa_kna1.
WRITE:/10 wa_kna1-customer,
30 wa_kna1-name,
60 wa_kna1-city.
ENDLOOP.
SELECTION SCREEN.
TABLES kna1.
* * provide selection screen
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE
TEXT-009 .
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr.
SELECTION-SCREEN: END OF BLOCK b1.
* * provide objects
TYPES: BEGIN OF ty_kna1,
customer(20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF ty_kna1.
DATA: wa_kna1 TYPE ty_kna1,
It_kna1 TYPE TABLE OF ty_kna1.
* * provide extraction logic
SELECT kunnr name1 ort01 FROM kna1 INTO TAB
LE it_kna1 WHERE
kunnr IN s_kunnr.
* * Appling processing logic
LOOP AT it_kna1 INTO wa_kna1.
WRITE:/10 wa_kna1-customer,
30 wa_kna1-name,
60 wa_kna1-city.
ENDLOOP.
PARAMETERS
* provide tables work area
TABLES kna1.
* provide selection screen
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE
TEXT-009
PARAMETERS p_kunnr TYPE kunnr.
SELECTION-SCREEN: END OF BLOCK b1.
* provide objects
TYPES: BEGIN OF wa_kna1,
customer(20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF wa_kna1.
* provide extraction logic
SELECT SINGLE kunnr name1 ort01 FROM kna1 INTO
wa_kna1
WHERE kunnr EQ p_kunnr.
* Appling processing logic
WRITE:/10 wa_kna1-customer,
30 wa_kna1-name,
60 wa_kna1-city.
ENDSELECT.
APPEND keyword:
TYPES:BEGIN OF ty_mat,
material TYPE char20,
quantity TYPE i,
price TYPE i,
END OF ty_mat.
* Declare the work area
DATA:wa_mat TYPE ty_mat,
it_mat TYPE TABLE OF ty_mat.
wa_mat-material = 'F001'.
wa_mat-quantity = 100.
wa_mat-price = 50.
* Move Work Area Data to Internal Table
APPEND wa_mat to it_mat.
clear:wa_mat.
wa_mat-material = 'F002'.
wa_mat-quantity = 200.
wa_mat-price = 75.
APPEND wa_mat to it_mat.
wa_mat-material = 'F001'.
wa_mat-quantity = 200.
wa_mat-price = 75.
APPEND wa_mat to it_mat.
SORT it_mat by material.
CLEAR:wa_mat.
LOOP AT it_mat INTO wa_mat.
write:/10 wa_mat-material,
30 wa_mat-quantity,
60 wa_mat-price.
CLEAR:wa_mat.
ENDLOOP.
SORT keyword:
DATA: BEGIN OF wa,
material(10) TYPE C,
quan(10) TYPE C,
END OF wa.
DATA it LIKE TABLE OF wa.
* fill data into it
wa-material=’F001’.
wa-quan=50.
APPEND wa TO it.
wa-material=’F002’.
wa-quan=70.
APPEND wa TO it.
wa-material=’F002’.
wa-quan=100.
APPEND wa TO it.
wa-material=’F001’.
wa-quan=80.
APPEND wa TO it.
SORT it BY material ASCENDING.
LOOP AT it INTO wa.
WRITE:/10 wa-material,
30 wa-quan.
ENDLOOP.
DELETE ADJACENT DUPLICATES keyword:
TYPES: BEGIN OF TY,
material(10) TYPE c,
quan(10) TYPE c,
END OF TY.
DATA:IT TYPE TABLE OF TY,
WA TYPE TY.
* * fill data into it
wa-material = 'F001'.
wa-quan = 50.
APPEND wa TO it.
CLEAR:wa.
wa-material = 'F002'.
wa-quan = 70.
APPEND wa TO it.
CLEAR:wa.
wa-material = 'F002'.
wa-quan = 100.
APPEND wa TO it.
CLEAR:wa.
wa-material = 'F001'.
wa-quan = 80.
APPEND wa TO it.
CLEAR wa.
SORT it BY material.
DELETE ADJACENT DUPLICATES FROM it COMPARING material.
LOOP AT it INTO wa.
WRITE:/10 wa-material,
30 wa-quan.
ENDLOOP.
COLLECT Keyword:
TYPES:BEGIN OF ty_kna1,
material(20) TYPE c,
quan TYPE i,
END OF ty_kna1.
DATA:wa_kna1 TYPE ty_kna1,
it_kna1 TYPE TABLE OF ty_kna1,
it_kna11 TYPE TABLE OF ty_kna1.
wa_kna1-material = 'F001'.
wa_kna1-quan = 50.
APPEND wa_kna1 TO it_kna1.
wa_kna1-material = 'F002'.
wa_kna1-quan = 150.
APPEND wa_kna1 TO it_kna1.
wa_kna1-material = 'F001'.
wa_kna1-quan = 550.
APPEND wa_kna1 TO it_kna1.
wa_kna1-material = 'F002'.
wa_kna1-quan = 350.
APPEND wa_kna1 TO it_kna1.
* LOOP AT it_kna1 INTO wa_kna1.
* COLLECT wa_kna1 INTO it_kna11.
*
* ENDLOOP.
* LOOP AT it_kna11 INTO wa_kna1.
* WRITE:/10 wa_kna1-material,
* 30 wa_kna1-quan.
* ENDLOOP.
READ TABLE it_kna1 INTO wa_kna1 with KEY material = 'F002'.
IF sy-subrc = 0.
MESSAGE 'Data Found' TYPE 'I'.
ENDIF.
CLEAR wa_kna1.
READ TABLE it_kna1 INTO wa_kna1 with KEY material = 'F003'.
IF sy-subrc ne 0.
MESSAGE 'Data not Found' TYPE 'E' DISPLAY LIKE 'I'.
ENDIF.
MODIFY keyword:
TYPES:BEGIN OF ty_kna1,
material(20) TYPE c,
quan TYPE i,
unit(2) TYPE c,
END OF ty_kna1.
DATA:wa_kna1 TYPE ty_kna1,
it_kna1 TYPE TABLE OF ty_kna1,
it_kna11 TYPE TABLE OF ty_kna1.
wa_kna1-material = 'F001'.
wa_kna1-quan = 50.
APPEND wa_kna1 TO it_kna1.
wa_kna1-material = 'F002'.
wa_kna1-quan = 150.
APPEND wa_kna1 TO it_kna1.
wa_kna1-material = 'F001'.
wa_kna1-quan = 550.
APPEND wa_kna1 TO it_kna1.
wa_kna1-material = 'F002'.
wa_kna1-quan = 350.
APPEND wa_kna1 TO it_kna1.
* LOOP AT it_kna1 INTO wa_kna1.
* COLLECT wa_kna1 INTO it_kna11.
*
* ENDLOOP.
* LOOP AT it_kna11 INTO wa_kna1.
* WRITE:/10 wa_kna1-material,
* 30 wa_kna1-quan.
* ENDLOOP.
LOOP AT it_kna1 INTO wa_kna1.
wa_kna1-unit = 'kg'.
MODIFY it_kna1 FROM wa_kna1 TRANSPORTING unit.
ENDLOOP.
READ TABLE it_kna1 INTO wa_kna1 with KEY material = 'F002'.
IF sy-subrc = 0.
MESSAGE 'Data Found' TYPE 'I'.
ENDIF.
CLEAR wa_kna1.
READ TABLE it_kna1 INTO wa_kna1 with KEY material = 'F003'.
IF sy-subrc ne 0.
MESSAGE 'Data not Found' TYPE 'E' DISPLAY LIKE 'I'.
ENDIF.
DESCRIBE keyword:
TYPES: BEGIN OF ty,
material(20) TYPE C,
quan TYPE I,
END OF wa.
DATA it TYPE TABLE OF wa.
DATA n TYPE I.
wa-material = ‘F001’.
wa-quan = 50.
APPEND wa TO it.
wa-material = ‘F002’.
wa-quan = 150.
APPEND wa TO it.
wa-material = ‘F001’.
wa-quan = 250.
APPEND wa TO it.
wa-material = ‘F002’.
wa-quan = 350.
APPEND wa TO it.
DESRIBE TABLE it LINES n.
WRITE n.
APPEND LINES keyword:
*&---------------------------------------------------------------------*
*& Report ZTEST_APPEND_LINE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_APPEND_LINE.
TYPES: BEGIN OF ty,
material(20) TYPE C,
quan TYPE I,
END OF ty.
* * creating bodies
DATA: it TYPE TABLE OF ty,
it1 TYPE TABLE OF ty,
wa TYPE ty.
* * appending data from work area to bodies
wa-material = 'F001'.
wa-quan = 50.
APPEND wa TO it.
clear wa.
wa-material = 'F002'.
wa-quan = 150.
APPEND wa TO it.
CLEAR:wa.
wa-material = 'F001'.
wa-quan = 250.
APPEND wa TO it1.
CLEAR:wa.
wa-material = 'F002'.
wa-quan = 350.
APPEND wa TO it1.
CLEAR:wa.
* coping data one body to another body
APPEND LINES OF it TO it1.
* displaying data of target body
LOOP AT it1 INTO wa.
* ------------- CLEAR wa.
WRITE:/10 wa-material,
30 wa-quan.
* ------------- CLEAR wa.
ENDLOOP.
Control Break Statements:- (Events)
TYPES: BEGIN OF ty,
material(10) TYPE C,
quan TYPE I,
amount TYPE I,
END OF ty.
* * creating internal table
DATA it TYPE TABLE OF ty,
wa TYPE ty.
* * filling data into it
wa-material = 'F001'.
wa-quan = 50.
wa-amount = 5000.
APPEND wa TO it.
wa-material = 'F002'.
wa-quan = 70.
wa-amount = 6000.
APPEND wa TO it.
wa-material = 'F001'.
wa-quan = 100.
wa-amount = 10000.
APPEND wa TO it.
wa-material = 'F002'.
wa-quan = 100.
wa-amount = 12000.
APPEND wa TO it.
* * sorting it by material
SORT it BY material.
* * appling Control Break Statements
LOOP AT it INTO wa.
AT FIRST.
WRITE:/50 'Materials Details Report' COLOR 1.
SKIP.
ULINE.
ENDAT.
AT NEW material.
WRITE:/ 'The Material Code is:', wa-material.
SKIP.
ENDAT.
WRITE:/10 wa-quan,
30 wa-amount.
AT END OF material.
SUM.
WRITE:/ 'The Total Quantity is:', wa-quan,
/ 'The Total Amount is:', wa-amount.
ULINE.
ENDAT.
AT LAST.
SUM.
WRITE:/ 'The Grand Total Quantity is:', wa-quan,
/ 'The Grand Total Amount is:', wa-amount.
ULINE.
ENDAT.
ENDLOOP.
MODIFY keyword:
TABLES kna1.
DATA: wa TYPE kna1,
It TYPE TABLE OF kna1.
wa-kunnr = ‘0000009083’.
wa-name1 = ‘rahul’.
wa-ort01 = ‘mumbai’.
wa-pstlz = ‘400002’.
APPEND wa TO it.
MODIFY kna1 FROM TABLE it.
WRITE:/ ‘number of records inserted:’, SY-DBCNT.
Creation of Table Maintenance Generator:
Create Table First:
Go to SE11
Provide Database Table: ZSD_MAIL
Select Create option
Provide Short Description: Customer Mail Table
Provide Delivery Class: A
Provide Table View Maintenance: Display Maintenance Allowed (both
display & create entries is allowed)
Select Fields tab
Field key Data Element
MANDT _/ MANDT
KUNNR _/ KUNNR
MAILID _/ ZMAIL_DAT
Double click on ZMAIL_DAT
You will find a message pop-up select Yes option
Select Local Object option
Again you will find a warning: application table should be client specific the
press Enter
You will find a pop-up: create the data element then click Yes
Provide Short Description: Customer Mail Id
Provide Domain: CHAR
Select Field Label tab
Length field lable
Medium 20 Mail Id
Activate data element (Ctrl+F3)
Go to back (F3)
Field key data element
INDICATOR _/ Z_INDICATOR
Double click on Z_INDICATOR
Save Yes
You will find a warning pop-up: Enter
You will find a pop-up: create data element Yes
Provide Short Description: Indicator
Provide Domain: CHAR20
Select Value Range tab
FIX VAR Short Desciption
1 TO
2 CC
3 BCC
Activate the domain (Ctrl+F3)
Go to back (F3)
Select Field Label tab
Provide Short Description: Indicator
Length field lable
Medium 20 Indicator
Activate data element (Ctrl+F3)
Go to back (F3)
Select Technical Settings button
Provide Data Class: APPL0 (APPL0---for master data & APPL1---for
transactional data)
Provide Size Category: 0 (it means table holds up to 8000 records)
Select Save option (Ctrl+s)
Select back (F3)
Activate Table (Ctrl+F3)
During activation you will find a warning pop-up select Yes
Ignore the warnings & go back (F3)
Creating TMG:
Go to SE80
Under Test Repository select Function Group option
Provide Function Group: ZMAIL_GR then press Enter
You will find a pop-up create object press Yes
Again you will find a pop-up Short Text: Mail Group then press Enter
Select Local Object
Go to SE11
Provide Database Table: ZSD_MAIL
Select Change option
Select Utilities---Table Maintenance Generator
Provide Authorization Group: &NC&
Provide Function Group: ZMAIL_GR
Select One Step option
Select Scr Number(s) button
You will find a pop-up select Propose Screen Number option then press
Enter
Select Create option (F6)
Select Save option (Enter)
Select Local Object (Enter)
Creating TCode:
Go to SE93
Provide Transaction Code: ZMAIL
Select Create option
Provide Short Text: Customer Mail Details
Select Transaction with Parameters (Parameter Transaction) option then
press Enter
Provide Transaction: SM30
Select Skip Initial screen checkbox
Scroll down to bottom then provide
Name of Screen Field Value
ViewName ZSD_MAIL
Update X
Save (Ctrl+s)
Select Favorites---Insert Transaction
Provide Transaction Code: ZMAIL then press Enter
Testing TMG:
Provide Run TCode: ZMAIL then press Enter
Provide Table: ZSD_MAIL
Select Maintain option
Select New Entries button
Insert records & save
Subroutines:
*&---------------------------------------------------------------------*
*& Report ZTEST_SUBROUTINE_PRAYAG
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_SUBROUTINE_PRAYAG.
BREAK-POINT.
WRITE: / 'Welcome to the Sub routine'.
PERFORM sub.
WRITE:/ 'First Call'.
PERFORM sub.
WRITE:/ 'Second Call'.
*&---------------------------------------------------------------------*
*& Form SUB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub .
WRITE: / 'Ínside Sub'.
ENDFORM. " SUB
Pass by Value & Pass by Reference:
Pass by Value:
REPORT ztest_actual_para_prayag.
DATA v1 TYPE c VALUE 'A'.
PERFORM sub USING v1.
WRITE:/ v1.
FORM sub USING VALUE(p1).
p1 = 'B'.
WRITE:/ p1.
ENDFORM.
Output:
b
a
Pass by Reference:
DATA v1 TYPE C VALUE 'A'.
PERFORM sub USING v1.
WRITE:/ v1.
FORM sub USING p1.
p1 = 'B'.
WRITE:/ p1.
ENDFORM.
Output:
b
b
External Subroutines:
Go to SE38
Program: ZMM_GRN_DETAILS
Create
Title: GRM Details
Type: Executable Program
Save
Local Object
*&---------------------------------------------------------------------*
*& Report ZMM_GRN_DETAILS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZMM_GRN_DETAILS.
TABLES: MKPF, MSEG.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
SELECT-OPTIONS: s_mblnr FOR MKPF-mblnr,
s_werks FOR MSEG-werks,
s_budat FOR MKPF-budat.
SELECTION-SCREEN: END OF BLOCK b1.
BREAK-POINT.
PERFORM extsub(ZMM_GRN_FORM) USING s_mblnr-low s_mblnr-high s_werks-low s_wer
ks-high s_budat-low s_budat-high.
Double click on ZMM_GRM_FORM
You will find a pop-up select Yes
Save & Yes
You will find a pop-up deselect With Top Incl check box the press Enter
*&---------------------------------------------------------------------*
*& Report ZMM_GRN_FORM
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZMM_GRN_FORM.
TABLES:mkpf,mseg.
TYPES: BEGIN OF ty_mseg,
mblnr TYPE mblnr,
budat TYPE budat,
menge TYPE menge_D,
matnr TYPE matnr,
dmbtr TYPE dmbtr,
werks TYPE werks_d,
* budat TYPE budat,
END OF ty_mseg.
DATA: wa_mseg TYPE ty_mseg,
It_mseg TYPE TABLE OF ty_mseg.
form extsub USING VALUE(grm_low) VALUE(grm_high) VALUE(plnt_low) VAL
UE(plnt_high) VALUE(date_low) VALUE(date_high).
BREAK-POINT.
SELECT mkpf~mblnr
mkpf~budat
mseg~menge
mseg~matnr
mseg~dmbtr
mseg~werks
FROM mkpf INNER JOIN mseg
on MKPF~mblnr = mseg~mblnr
AND MKPF~MJAHR = mseg~MJAHR
into TABLE It_mseg
WHERE MKPF~mblnr BETWEEN grm_low AND grm_high.
LOOP AT it_mseg INTO wa_mseg.
WRITE:/10 wa_mseg-mblnr,
30 wa_mseg-budat,
50 wa_mseg-menge,
70 wa_mseg-matnr,
90 wa_mseg-dmbtr.
ENDLOOP.
ENDFORM.
Output:
s_mblnr : 49000000 to 490005000
s_werks: 1000 to 1200
s_budat: 15.11.1994 to 01.06.2009
Execute (F8)
Field Symbol:
Go to SE38
Program: ZMM_FIELDSYMBOL
Create
Title: Field Symbols
Type: Executable Program
Save, Local Object
TABLES: LFA1.
INCLUDE ZVEND_DECC.
Double click on ZVEND_DECC
Yes, Yes, Enter
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAM TITLE
text-000.
SELECT-OPTIONS: s_lifnr FOR LFA1-lifnr,
s_land1 FOR LFA1-land1.
SELECTION-SCREEN: END OF BLOCK b1.
TYPES: BEGIN OF ty_lfa1,
lifnr TYPE lifnr,
land1 TYPE land1,
name1 TYPE name1,
ort01 TYPE ort01,
pstlz TYPE pstlz,
stras TYPE stras,
END OF ty_lfa1.
FIELD-SYMBLOS <l_fs> TYPE ty_lfa1.
DATA it_lfa1 TYPE TABLE OF ty_lfa1.
PERFORM get_data.
PERFORM display_data.
FORM get_data.
SELECT lifnr land1 name1 ort01 pstlz stras INTO TABLE
it_lfa1
FROM LFA1
WHERE lifnr IN s_lifnr
AND land1 IN s_land1.
ENDFORM.
FORM display_data.
LOOP AT it_lfa1 ASSIGNING <l_fs>.
WRITE:/10 <l_fs>-lifnr,
30 <l_fs>-land1,
50 <l_fs>-name1,
70 <l_fs>-ort01,
90 <l_fs>-pstlz,
110 <l_fs>-stras,
ENDLOOP.
ENDFORM.
Export Import Functionality:
Go to SE38
Program: YIMPORT_PROG
Create
Title: Import Program
Type: Executable Program
Save, Local Object
TABLES: EKPO.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-
000.
SELECT-OPTIONS: s_matnr FOR EKPO-matnr,
s_werks FOR EKPO-werks.
SELECTION-SCREEN: END OF BLOCK b1.
TYPES: BEGIN OF ty_ekpo,
ebeln TYPE ebeln,
matnr TYPE matnr,
menge TYPE menge_D,
netpr TYPE netpr,
END OF ty_ekpo.
DATA: wa_ekpo TYPE ty_ekpo,
It_ekpo TYPE TABLE OF ty_ekpo.
SUBMIT YEXPORT_PROG WITH matnr IN s_matnr
WITH werks IN s_werks
EXPORTING LIST TO MEMORY AND RETURN.
IMPORT it_ekpo FROM MEMORY ID ‘matt’.
LOOP AT it_ekpo INTO wa_ekpo.
WRITE:/10 wa_ekpo-ebeln,
30 wa_ekpo-matnr,
60 wa_ekpo-menge,
90 wa_ekpo-netpr.
ENDLOOP.
Double click on YEXPORT_PROG
Yes
Remove With Top INCL check box
Enter, Enter, Enter
TABLES: EKPO.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-
000.
SELECT-OPTIONS: s_matnr FOR EKPO-matnr,
s_werks FOR EKPO-werks.
SELECTION-SCREEN: END OF BLOCK b1.
TYPES: BEGIN OF ty_ekpo,
ebeln TYPE ebeln,
matnr TYPE matnr,
menge TYPE menge_D,
netpr TYPE netpr,
END OF ty_ekpo.
DATA it_ekpo TYPE TABLE OF ty_ekpo.
SELECT ebeln matnr menge netpr FROM EKPO INTO TABLE
it_ekpo
WHERE matnr IN s_matnr
AND werks IN s_werks.
EXPORT it_ekpo TO MEMORY ID ‘matt’.
Output:
Execute IMPORT_PROG
s_matnr 100-100 to 100-500
s_werks 1000 to 1100