Post on 07-Nov-2014
description
ABAP Chapter 5
Modularization Catch Statement
Modularization
Modularization
Internal Subroutine Call
External Subroutine Call
Function Module
SubroutineSTART-OF-SELECTION.Perfrom routine1.Perform routine2.Perform routine2.Form routine1. select * from customers into table tab.Endform.Form routine2. loop at tab. write: / tab-id,tab-name. endloop.Endform.…
Modularization
Avoid redundancy Make your program easy to
read & improve their structure
Re-use Program components
Calling and Defining SubroutinesCalling and Defining Subroutines REPORT ztest.
* Global Data TABLES customers.
DATA tmp type i. * Subroutine Calls
PERFORM routine1. PERFORM routine2.
SSSSSSSSSS *
FORM routine1. DATA tmp1 type p. SSSS“ write tmp.ENDFORM.
2FORM routine . DATA tmp2(10). “Localdata
…. .ENDFORM.
Call by Value
a1
Memory Space(Subroutine)
f1
Copy
Call by ValueCall by Value
1 2Data: a ,a .a1 = ‘A’.a2 = ‘A’. SSS11 2. .…...
1 1 2FORM routine USING VALUE(f ) VALUE(f ). f1 = ‘X’. f2 = ‘X’.ENDFORM.
Call by Reference
a3
Memory Space(Subroutine)
f3
Address Passing
Call by ReferenceCall by Reference
: 3.Data aa3 = ‘A’.
2 3PERFORM routine USING a . .…...
2 3FORM routine USING f . f3 = ‘X’.ENDFORM.
Call by Value and Result
a4
Memory Space(Subroutine)
f4
CopyCopy
Call by Value and ResultCall by Value and Result
: 4, 5.Data a aa4 = ‘A’.a5 = ‘A’.
3 4 5PERFORM routine USING a a . .…...
FORM routine3 ( 4) 5. “f5 : call by reference f4 = ‘X’. f5 = ‘X’.ENDFORM.
Passing Structure as ParametersPassing Structure as Parameters
TABLES sflight.SELECT * FROM sflight. PERFORM subproc USING sflight.ENDSELECT.FORM subproc USING rec LIKE sflight. WRITE: / rec-carrid.ENDFORM.
Passing Internal Table as ParametersPassing Internal Table as Parameters
0DATA: tab LIKE sflight OCCURS WITH HEADER LINE. …SSSSSSS sub TABLES tab.
Passing Internal Table as ParametersPassing Internal Table as Parameters
FORM sub TABLES tab1 STRUCTURE tab. LOOP AT tab1. WRITE: / tab1-carrid. ENDLOOP.ENDFORM.
External SubroutinesExternal Subroutines
10REPORT RSAAA F. : . …. . ( 10).
10REPORT RSAAA B. TABLES sflight.
…. . FORM cal.
…. ..
EXIT StatementEXIT Statement
DATA tmp TYPE I.tmp = 4.PERFORM a.WRITE tmp.
FORM a. EXIT. tmp = 99.ENDFORM.
STOP StatementSTOP Statement
DATA tmp TYPE I.START-OF-SELECTION. tmp = 4. PERFORM a. WRITE tmp.END-OF-SELECTION. tmp = 0. write tmp.FORM a. STOP. “go to END-OF-SELECTION tmp = 99.ENDFORM.
Function Module
Function Module
Function Group Function Library - Admin - Import/Export Parameter - Source Code - Main Program - Documentation
Function Group When you create a function module,
you must assign it to function group The function group is the main
program in which a function module is embedded
The function group is a program type F,and not executable
The entire function group is loaded in a program the first time that you call a function module that belongs to it
Function Group is a container for function modules When a function module is called,the
entire function group is loaded into the session of the program
Function group is used to define global data for function modules
A DATA statement in the global memory of a function group is shared by all the function modules that belong to that function group
Function Group : SE37
Function Group : SE80
Function Module is a code that can be called from any ABAP
program,therefore making it a globally accessible object
ABAP program pass data to function module from import parameters or internal tables
Function module receives data from a program,process the information in its own code, and then sends back information in the export parameters or internal tables
Function Module : SE37
Function Module
Function Module : Source CodeFunction Module : Source Code
FUNCTION Z_FMTEST. result = number1 ** number2.ENDFUNCTION.
Program Example IProgram Example I
REPORT ztest. PARAMETERS: no1 SSSS I,
no2 TYPE I.DATA result TYPE I.START-OF-SELECTION. CALL FUNCTION ‘Z_FMTEST’ EXPORTING number1 = no1 number2 = no2 IMPORTING SSSSSS = result.
write: / result.
Exercise : Function Module
?
ABAP Program
Function Module
EXCEPTIONS
Function ModuleFunction Module
Function Z_CAL01. if number1 > 9 and number2 > 9. raise invalidnumber. else. result = number1 ** number2. endif.ENDFUNCTION.
Example II : ExceptionsExample II : Exceptions
REPORT ztest. PARAMETERS: no1 TYPE I,
no2 TYPE I.DATA result TYPE I.
START-OF-SELECTION. CALL FUNCTION ‘Z_CAL01’ EXPORTING number1 = no1 number2 = no2 IMPORTING result = result EXCEPTIONS invalidnumber = 1. IF sy-subrc <> 0. write: / ‘Please enter number < 10’. ELSE. write: / result. ENDIF.
Exercise : Exceptions
?
ABAP Program
Function Module
EXCEPTIONS VS AT SELECTION-SCREEN
FUNCTION Z_CAL01. if number1 > 9 and number2 > 9. raise invalidnumber. else. result = number1 ** number2. endif.ENDFUNCTION.
REPORT ztest.Parameters: no1 type i, no2 type i. At selection-screen if no1 > 9 and no2 > 9. message e000(38) with ‘Please enter no < 10’. endif.START-OF-SELECTION. CALL FUNCTION ‘Z_CAL01’. …..
VS
Optional
ABAP Program
Function Module
Structure in Function Module
Example : Structure
Example : Structure
Internal Table in Function Module
Example : Internal Table
Example : Internal Table
Function Group
Function Group : ZGRP00
Function Module : Z_FMTEST
Function Module : Z_CAL01
Function Group
Function Module in Function Group
Exercise Display current month name
using function module
Catch Statement
•Syntax - Catch system exceptions <error type> = <n>.
<ABAP statement – generate runtime error> .Endcatch.if sy-subrc = <n>. ...endif.
CATCH Statement CATCH Statement
•Error class•Catch system-exceptions conversion_errors = 1.
•Single error•Catch system-exceptions convt_no_number = 1.
•All catchable runtime error•Catch system-exceptions others = 1.
CATCH Error TypeCATCH Error Type
CATCH StatementCATCH Statement
Report ztest. Data num type I. - 1Catch system exceptions conversion_errors = .”others
Move ‘abc’ to num. SSSSSSS S SSSSSS SSSSSSSSSSSS SSSEndcatch.
- 1If sy subrc = . Write: / ‘Assign wrong data type to variable: num’.Endif.
CATCH StatementCATCH Statement
Report ztest. Data num type I. - Catch system exceptions other 1s = .
Move ‘abc’ to num. Endcatch.
- 1If sy subrc = . Write: / ‘Assign wrong data type to variable: num’.Endif.
CATCH StatementCATCH Statement
Report ztest.PARAMETERS: NUM1 TYPE I, NUM2 TYPE I.DATA RESULT TYPE I.
START-OF-SELECTION. CATCH SYSTEM-EXCEPTIONS COMPUTE_INT_ZERODIVIDE = 1. RESULT = NUM1 / NUM2. ENDCATCH. IF SY-SUBRC = 1. WRITE: /'Divide by zero'. ELSE. WRITE: / RESULT. ENDIF.
CATCH StatementCATCH Statement
Report ztest.PARAMETERS: NUM1 TYPE I, NUM2 TYPE I.DATA RESULT TYPE I.
START-OF-SELECTION. CATCH SYSTEM-EXCEPTIONS OTHERS = 1. RESULT = NUM1 / NUM2. ENDCATCH. IF SY-SUBRC = 1. WRITE: /'Divide by zero'. ELSE. WRITE: / RESULT. ENDIF.
CATCH in Function Module
Function Z_CAL.
if number1 > 9 and number2 > 9.
raise invalidnumber.
else.
result = number1 ** number2.
endif.
ENDFUNCTION.
Function Z_CAL. CATCH SYSTEM-EXCEPTIONS OTHERS = 1. RESULT = NUMBER1 ** NUMBER2. ENDCATCH. IF SY-SUBRC = 1. RAISE invalidnumber. ENDIF.ENDFUNCTION.
ABAP Practice