abap chapter 5 modularization catch statement. modularization

55
ABAP Chapter 5 Modularization Catch Statement

Upload: hugh-bissell

Post on 31-Mar-2015

261 views

Category:

Documents


3 download

TRANSCRIPT

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