Abap Reports
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.
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.
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 objects
TYPES: BEGIN OF wa_kna1,
customer(20) TYPE C,
name(20) TYPE C,
city(20) TYPE C,
END OF wa_kna1.
* 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:
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:
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.
* * 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.
wa-kunnr = ‘0000009083’.
wa-name1 = ‘rahul’.
wa-ort01 = ‘mumbai’.
wa-pstlz = ‘400002’.
APPEND wa TO it.
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
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.
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.
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.
Go to SE38
Program: YIMPORT_PROG
Create
Title: Import Program
Type: Executable Program
Save, Local Object
TABLES: EKPO.
TABLES: EKPO.
Output:
Execute IMPORT_PROG
s_matnr 100-100 to 100-500
s_werks 1000 to 1100