Académique Documents
Professionnel Documents
Culture Documents
REPORT ZANAND3 .
SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB FROM ZEMP99 WHERE EMPNO
> 450 .
* Control Break statement
AT END OF DEPTNO.
ABAP Tutor Page 3
SUM.
WRITE :/5 SY-ULINE(70).
WRITE :/5 'Total salary for this dept is :' ,60 ITAB-SALARY.
WRITE :/5 SY-ULINE(70).
ENDAT.
AT LAST.
SUM.
WRITE :/5 SY-ULINE(70).
WRITE :/5 'Total salary for this dept is :' ,60 ITAB-SALARY.
WRITE :/5 SY-ULINE(70).
ENDAT.
ENDLOOP.
************************************************************************
* Program Name : zanand4.
* Created on : 24-03-02
* Purpose : Demo on Classical Report Programming
* Author : Anand
************************************************************************
REPORT ZANAND4 LINE-COUNT 25(3)
line-size 100
NO STANDARD PAGE HEADING.
************************************************************************
INITIALIZATION.
perform chk_endofpage.
************************************************************************
END-OF-SELECTION.
* ULINE.
* WRITE :/20 ' Have a Nice Day'.
* ULINE.
************************************************************************
form chk_endofpage.
data : lin type i.
lin = sy-linct - sy-linno - 3.
do lin times.
WRITE :/5 SY-VLINE,
20 SY-VLINE,
55 SY-VLINE,
65 SY-VLINE,
89 SY-VLINE.
ENDDO.
endform.
ABAP Tutor Page 5
Interactive Reports
First Screen List of Departments
ABAP Tutor Page 6
************************************************************************
* Program Name : zanand2.
* Program Type : Report.
* SubType : Interactive Report
* Author : Anand
* Created On : 28-03-02
* Purpose : Demo on Interactive Report.
************************************************************************
REPORT ZANAND2 NO STANDARD PAGE HEADING
LINE-COUNT 25(3)
LINE-SIZE 120.
************************************************************************
* Initialization Event
************************************************************************
INITIALIZATION.
************************************************************************
* Top of Page Event.
************************************************************************
TOP-OF-PAGE.
IF FLAG1 = 0.
PERFORM DISPLAY_DEPT_HEADER.
ENDIF.
************************************************************************
* End of Page Event
************************************************************************
END-OF-PAGE.
IF SY-LSIND = 0.
PERFORM DISPLAY_DEPT_FOOTER.
ELSE.
PERFORM DISPLAY_EMP_FOOTER.
ENDIF.
************************************************************************
* Start of Selection Event
************************************************************************
START-OF-SELECTION.
SELECT * FROM ZDEPT99 INTO CORRESPONDING FIELDS OF TABLE DEPT.
SELECT * FROM ZEMP99 INTO CORRESPONDING FIELDS OF TABLE EMP.
PERFORM UPDATE_DEPT.
PERFORM DISPLAY_DEPT_DETAIL.
************************************************************************
* End of Selection Event.
************************************************************************
END-OF-SELECTION.
************************************************************************
* At Line Selection Event
************************************************************************
AT LINE-SELECTION.
FLAG2 = 0.
PERFORM DISPLAY_EMP_DETAIL USING DEPT-DEPTNO.
************************************************************************
* User defined Sub-routines.
************************************************************************
* Department Details
FORM DISPLAY_DEPT_DETAIL.
LOOP AT DEPT.
WRITE :/ SY-VLINE,DEPT-DEPTNO,
ABAP Tutor Page 8
15 SY-VLINE,DEPT-DEPTNAME,
40 SY-VLINE,DEPT-LOCATION,
65 SY-VLINE,DEPT-TOTAL,
95 SY-VLINE.
HIDE DEPT-DEPTNO.
DEPT_PAGE_TOTAL = DEPT_PAGE_TOTAL + DEPT-TOTAL.
ENDLOOP.
PERFORM REACH_END_OF_PAGE.
ENDFORM.
*Employee Details.
FORM DISPLAY_EMP_DETAIL USING DEPTNO1.
LOOP AT EMP WHERE DEPTNO = DEPTNO1.
WRITE :/ SY-VLINE,EMP-EMPNO,
15 SY-VLINE,EMP-EMPNAME,
55 SY-VLINE,EMP-SALARY,
95 SY-VLINE.
EMP_PAGE_TOTAL = EMP_PAGE_TOTAL + EMP-SALARY.
ENDLOOP.
PERFORM REACH_END_OF_PAGE.
ENDFORM.
* Employee Header
FORM DISPLAY_EMP_HEADER.
WRITE :/ SY-ULINE(95).
WRITE :/ SY-VLINE,'EMPLOYEE NO',
15 SY-VLINE,'NAME',
55 SY-VLINE,'SALARY',
95 SY-VLINE.
WRITE :/ SY-ULINE(95).
ENDFORM.
* Department Header
FORM DISPLAY_DEPT_HEADER.
WRITE :/ SY-ULINE(95).
WRITE :/ SY-VLINE,'DEPT. NO',
15 SY-VLINE, 'NAME',
40 SY-VLINE,'LOCATION',
65 SY-VLINE,'TOTAL SALARY',
95 SY-VLINE.
WRITE :/ SY-ULINE(95).
ENDFORM.
* Employee Footer
FORM DISPLAY_EMP_FOOTER.
WRITE :/ SY-ULINE(95).
WRITE :/ SY-VLINE,
30 'Total Amount for Page :',SY-PAGNO LEFT-JUSTIFIED,
55 SY-VLINE, EMP_PAGE_TOTAL,
95 SY-VLINE.
ABAP Tutor Page 9
WRITE :/ SY-ULINE(95).
EMP_GRAND_TOTAL = EMP_GRAND_TOTAL + EMP_PAGE_TOTAL.
EMP_PAGE_TOTAL = 0.
ENDFORM.
* Department Footer
FORM DISPLAY_DEPT_FOOTER.
WRITE :/ SY-ULINE(95).
WRITE :/ SY-VLINE,
30 'Total Amount for Page :',SY-PAGNO LEFT-JUSTIFIED,
65 SY-VLINE, DEPT_PAGE_TOTAL,
95 SY-VLINE.
WRITE :/ SY-ULINE(95).
DEPT_GRAND_TOTAL = DEPT_GRAND_TOTAL + DEPT_PAGE_TOTAL.
DEPT_PAGE_TOTAL = 0.
ENDFORM.
DO VSKIP TIMES.
IF SY-LSIND = 0.
WRITE :/ SY-VLINE,15 SY-VLINE,40 SY-VLINE,65 SY-VLINE,95 SY-VLINE.
ELSE.
WRITE :/ SY-VLINE,15 SY-VLINE,55 SY-VLINE,95 SY-VLINE.
ENDIF.
ENDDO.
IF SY-LSIND = 0.
FLAG1 = 1.
PERFORM DISPLAY_DEPT_GRANDTOTAL.
ELSE.
FLAG2 = 1.
PERFORM DISPLAY_EMP_GRANDTOTAL.
ENDIF.
ENDFORM.
ABAP Tutor Page 10
Flow Logic
PROCESS BEFORE OUTPUT.
* MODULE STATUS_1000.
*
PROCESS AFTER INPUT.
module exit at exit-command.
module user_command_1000.
* MODULE USER_COMMAND_1000.
PROGRAM ZANAND6 .
*&---------------------------------------------------------------------*
*& Module exit INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
ABAP Tutor Page 11
endcase.
ENDMODULE. " user_command_1000 INPUT
Transaction
~~~~~~~~~~~
se38 Abap Editor
se51 Screen Painter
se93 Transaction Creator
system variables
~~~~~~~~~~~~~~~~
sy-rows = Number of rows
sy-cols = number of columns
sy-loopc = Number of visible rows in table
sy-index = loop index
sy-tabix = Table Index
sy-subrc = Function call success / failure
sy-ucomm. = User command
-----------------------------------------------------
Flow Logic
* PBO EVENT
PROCESS BEFORE OUTPUT.
MODULE STATUS_0010.
LOOP AT EMP WITH CONTROL TC1 CURSOR cur1.
MODULE READ_FROM_PGM.
ENDLOOP.
*PAI EVENT
PROCESS AFTER INPUT.
MODULE QUIT AT EXIT-COMMAND.
LOOP AT EMP.
MODULE SEND_TO_PGM.
ENDLOOP.
MODULE USER_COMMAND_0010.
ABAP Tutor Page 15
PROGRAM ZANAND7 .
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0010 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module USER_COMMAND_0010 input.
CASE SY-UCOMM.
WHEN 'READDB'.
select * from zemp99 into table emp.
WHEN 'SAVE'.
modify zemp99 from table emp.
ENDCASE.
*&---------------------------------------------------------------------*
*& Module SEND_TO_PGM INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module SEND_TO_PGM input.
data : wa like emp.
wa = emp.
read table emp with key empno = emp-empno.
modify emp from wa index sy-tabix.
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module STATUS_0010 output.
data : v_lines type i.
describe table emp lines v_lines.
tc1-lines = v_lines.
endmodule. " STATUS_0010 OUTPUT
Flowlogic
* PBO Event
PROCESS BEFORE OUTPUT.
MODULE STATUS_0010.
* PAI Event
PROCESS AFTER INPUT.
module exit at exit-command.
loop at emp1.
module send_to_pgm.
endloop.
MODULE USER_COMMAND_0010.
ABAP Tutor Page 17
PROGRAM ZANAND8 .
BDC
Recorded Screen for transaction zmypgm using transaction shdb
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Recorded Value
~~~~~~~~~~~~~~~
ZANAND6 1000 X
0000 BDC_OKCODE =SAVE
0000 BDC_CURSOR EMP-SALARY
0000 EMP-EMPNO 589
0000 EMP-EMPNAME KUMAR NANDA
0000 EMP-DEPTNO 10
0000 EMP-SALARY 17000
ZANAND6 1000 X
0000 BDC_OKCODE /EEXIT
0000 BDC_CURSOR EMP-EMPNO
ABAP Tutor Page 19
Steps
1. Record the Transaction using Transaction Code SHDB
2. Enter the required fields one by one and navigate thru screens / press button.
3. Save the Recording .
4. go the Transaction SE 38
5. Declare BDC Tab and BDCMsgCOLL internal table for hoding the BDC Data
and BDC Messages respectively.
6. Declare an Equivalent structured internal table for file format (I_file)
7. Upload the File Content to the Internal Table (I_file)
ABAP Tutor Page 20
************************************************************************
* Program : ZANAND9 *
* Authod : Anand *
* Created on : 22-Mar-02 *
* Description : This is simple demo program for BDC using call *
* Transaction Method. *
* Program Requirements : *
* Transaction zmypgm - Created in SE93 *
* Transaction Recording - SHDB
* Flat File as given below. *
* Function Used : *
* WS_UPLOAD - for uploading file *
* FORMAT_Message - Formatting error message *
* *
************************************************************************
*Flat file format (c:\employee.txt)
*----------------
*900 Anand 2 15000
*902 gowri shankar 2 17000.25
*903 uma 3 2500
*904 Swami AA 16000.75
*
************************************************************************
*Transaction Recording (using Transaction SHDB)
*ZANAND6 1000 X
* BDC_OKCODE =SAVE
* BDC_CURSOR EMP-SALARY
* EMP-EMPNO 589
* EMP-EMPNAME KUMAR NANDA
* EMP-DEPTNO 10
* EMP-SALARY 17000
*ZANAND6 1000 X
* BDC_OKCODE /EEXIT
* BDC_CURSOR EMP-EMPNO
************************************************************************
REPORT ZANAND9 .
v_msg(100),
end of emp_error.
* BDC Table and BDC message table
data : i_bdctab like bdcdata occurs 0 with header line,
i_bdcmsg like bdcmsgcoll occurs 0 with header line.
refresh i_bdctab.
clear i_bdctab.
endloop.
* INVALID_TYPE =4
* NO_BATCH =5
* UNKNOWN_ERROR =6
* INVALID_TABLE_WIDTH =7
* GUI_REFUSE_FILETRANSFER =8
* CUSTOMER_ERROR =9
* OTHERS = 10
.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
i_bdctab-fval = '/EEXIT'.
append i_bdctab.
clear i_bdctab.
endform. " populate_bdctab
*&---------------------------------------------------------------------*
*& Form handle_message
*&---------------------------------------------------------------------*
* Organises the Error Message and give it in readable format
*----------------------------------------------------------------------*
form handle_message.
data : v_msg(100) type c.
append emp_error.
clear emp_error.
clear : v_msg,i_bdcmsg.
endloop.
Transaction Required :
SHDB Recording the Transaction.
SM35 - To Run the Program Created Session.
Steps :
1. Use Transaction SHDB to Record the Required Transaction.
2. Enter the required data and save the record.
3. Save the Recorded Messages.
4. Go to Transaction SE38 , to write BDC Program
ABAP Tutor Page 24
Code :
************************************************************************
* Program : ZANAND10 *
* Authod : Anand *
* Created on : 22-Mar-02 *
* Description : This is simple demo program for BDC using Session *
* Method. *
* Program Requirements : *
* Transaction zmypgm - Created in SE93 *
* Transaction Recording - SHDB *
* To Run Created Session - SM35
* Flat File as given below. *
* Function Used : *
* WS_UPLOAD - for uploading file *
* FORMAT_Message - Formatting error message *
* *
************************************************************************
*Flat file format (c:\employee.txt)
*----------------
*900 Anand 2 15000
*902 gowri shankar 2 17000.25
*903 uma 3 2500
*904 Swami AA 16000.75
*
************************************************************************
*Transaction Recording (using Transaction SHDB)
*ZANAND6 1000 X
* BDC_OKCODE =SAVE
* BDC_CURSOR EMP-SALARY
* EMP-EMPNO 589
* EMP-EMPNAME KUMAR NANDA
* EMP-DEPTNO 10
* EMP-SALARY 17000
*ZANAND6 1000 X
* BDC_OKCODE /EEXIT
* BDC_CURSOR EMP-EMPNO
************************************************************************
REPORT ZANAND9 .
ABAP Tutor Page 25
Perform Close_BDC.
*-- User Defined SubRoutines
*&---------------------------------------------------------------------*
*& Form Read_file
*&---------------------------------------------------------------------*
* Upload file content to Internal Table
*----------------------------------------------------------------------*
form Read_file.
call function 'WS_UPLOAD'
EXPORTING
* CODEPAGE =''
FILENAME = 'c:\employee.txt '
* FILETYPE = 'ASC'
* HEADLEN =''
* LINE_EXIT =''
* TRUNCLEN =''
* USER_FORM =''
* USER_PROG =''
* DAT_D_FORMAT =''
* IMPORTING
* FILELENGTH =
tables
data_tab = emp
* EXCEPTIONS
* CONVERSION_ERROR =1
* FILE_OPEN_ERROR =2
* FILE_READ_ERROR =3
* INVALID_TYPE =4
* NO_BATCH =5
* UNKNOWN_ERROR =6
* INVALID_TABLE_WIDTH =7
* GUI_REFUSE_FILETRANSFER =8
* CUSTOMER_ERROR =9
* OTHERS = 10
.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
ABAP Tutor Page 26
*&---------------------------------------------------------------------*
*& Form Open_BDC
*&---------------------------------------------------------------------*
* Establish a New Session
*----------------------------------------------------------------------*
ABAP Tutor Page 27
form Open_BDC.
data : v_date type d.
v_date = sy-datum - 1.
call function 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
* DEST = FILLER8
GROUP = 'Emp'
HOLDDATE = v_date
KEEP = 'X'
USER = sy-uname
* RECORD = FILLER1
* IMPORTING
* QID =
* EXCEPTIONS
* CLIENT_INVALID =1
* DESTINATION_INVALID =2
* GROUP_INVALID =3
* GROUP_IS_LOCKED =4
* HOLDDATE_INVALID =5
* INTERNAL_ERROR =6
* QUEUE_ERROR =7
* RUNNING =8
* SYSTEM_LOCK_ERROR =9
* USER_INVALID = 10
* OTHERS = 11
.
endform. " Open_BDC
*&---------------------------------------------------------------------*
*& Form Close_BDC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form Close_BDC.
call function 'BDC_CLOSE_GROUP'
* EXCEPTIONS
* NOT_OPEN =1
* QUEUE_ERROR =2
* OTHERS =3
.
endform. " Close_BDC
*&---------------------------------------------------------------------*
*& Form Insert_bdc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form Insert_bdc.
call function 'BDC_INSERT'
EXPORTING
TCODE = 'zmypgm'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
tables
dynprotab = i_bdctab
* EXCEPTIONS
* INTERNAL_ERROR =1
* NOT_OPEN =2
* QUEUE_ERROR =3
* TCODE_INVALID =4
* PRINTING_INVALID =5
ABAP Tutor Page 28
* POSTING_INVALID =6
* OTHERS =7
.
endform. " Insert_bdc