abap objects 1oo
TRANSCRIPT
-
8/10/2019 Abap Objects 1oo
1/149
1
ABAP Objects
-
8/10/2019 Abap Objects 1oo
2/149
2
Topics to cover
Why Object oriented ABAP?
Class, objects, Methods & Constructor
Inheritance, Polymorphism
Events & Exceptions
Real time usage of ABAP Objects
Limitations
-
8/10/2019 Abap Objects 1oo
3/149
3
Different approaches of Programming
Unstructured Programming.
Procedural Programming.
Object Oriented Programming.
-
8/10/2019 Abap Objects 1oo
4/149
4
Unstructured Programming
Consists of only one main program.
The program stands for a sequence of
commands which modify data that isglobal throughout the whole program.
Characteristics
Difficult to manage once the programbecomes large.
Same sequence of statements arerepeated at multiple places, if they areneeded at multiple locations.
Disadvantages
report ysubdel.DATA : sal type p decimals 2,
itax type p decimals 2,net_sal type p decimals 2 .
sal = 12000.IF sal lt 5000 .itax = 0.
ELSE.itax = sal * '0.01'.
ENDIF.net_sal = sal - itax.
write:/5 sal , itax , net_sal.
sal = 3500.IF sal lt 5000 .
itax = 0.ELSE.
itax = sal * '0.01'.ENDIF.
net_sal = sal - itax.write:/5 sal , itax , net_sal.
-
8/10/2019 Abap Objects 1oo
5/149
5
Procedural Programming
A procedure call is used to invoke theprocedure.
After the sequence is processed, flow
of control proceeds right after theposition where the call was made.
report ysubdel.
DATA : sal type p decimals 2 ,
itax type p decimals 2 ,
net_sal type p decimals 2.
sal = 12000.
PERFORMsub_calc_tax USING
sal itax net_sal.
sal = 3500.
PERFORMsub_calc_tax USING
sal itax net_sal.
FORMsub_calc_tax USINGP_SAL P_ITAX P_NET_SAL.
IF p_sal lt 5000 .
p_itax = 0.
ELSE.
p_itax = sal * '0.01'.
ENDIF.
p_net_sal = p_sal - p_itax.
write:/5 sal , itax , net_sal.ENDFORM.
-
8/10/2019 Abap Objects 1oo
6/149
6
Evolutions in ABAP as a programming
language
In seventies ABAP stood for General ReportPreparation Processor.
In mid eighties ABAP had developed into an
interpreter languagewhich was a main component of
the R/2 system and which could cope up with
business application programs.
In early nineties, ABAP evolved as a 4thgeneration
programming language.
-
8/10/2019 Abap Objects 1oo
7/149
7
SAP Approach towards ABAP
-
8/10/2019 Abap Objects 1oo
8/149
8
Evolutions in ABAP as a programming
language
At the turn of the new century, ABAP completed anew stage in its evolution by ABAP/4 superseded by
ABAP objects.
Questions still unanswered:
What are the implications by introducing ABAP
objects? How did it superseded ABAP which is still
catering customer needs in many ways???? Did ABAP objects madeABAP/4 obsolete?
-
8/10/2019 Abap Objects 1oo
9/149
9
Implications of introduction of ABAP
Objects
ABAP objects and ABAP are inextricablylinked.
Drift froma structural programming approach towards
Object oriented approach
But to keep you comfortable,ABAP is still supported
and allows you to use object-oriented elements.
Questions Unanswered:
Then why should I learn ABAP objects?
Why dont I use the classical approach?
-
8/10/2019 Abap Objects 1oo
10/149
10
Are ABAP Objects mandatory?
Continue our Technical consultancy career in SAP without bottlenecks
Should be able to provide solutions to heterogeneous
kinds of client technical requirements related to
Program involving in
multiple functionalrequirements
Reuse available
Standard/Customclasses in ABAP
Business Server Pages GUI Control Framework
Office Integration XML Transformations
BADI, Workflow Email, Shared Objects,Persistent objects
Generic Programming New ABAP Editor,
Code Inspector, CATT
-
8/10/2019 Abap Objects 1oo
11/149
-
8/10/2019 Abap Objects 1oo
12/149
12
Object OrientationWhat are Objects?
You interact with objectseveryday
A customer
An order
All objectscontains state and behavior
What they can do and what changes when they do
Software objectsrepresent these as:
Data ( like 4GL variables )
Methods ( like 4GL procedures)
Your car
The telephone
-
8/10/2019 Abap Objects 1oo
13/149
13
What's an Object and Class?
. Booch's object definition:An object has state, behavior, and identity; the
structure and behavior of similar objects are defined
in their common class; the terms instance and object
are interchangeable.Ex: ICICI S.Acc#1111, ICICI S.Acc#1112, ICICI
S.Acc#9999,
. Booch's class definition:
A class is a set of objects that share a common
structure and a common behavior.
Ex: ICICI S.Acc.
-
8/10/2019 Abap Objects 1oo
14/149
14
Some Classes & Their ObjectsMaruthi 800 Rajas Maruthi,
Prasads Maruthi,
Ramanis Maruthi
Customer ABC,XYZ
SalesOrder OR2643789, OR2643799
OR2643776, OR9999999
Cricket Team IndianTeam, Australian Team,
SrilankanTeam
Your Desktop PC 12345 etc.
-
8/10/2019 Abap Objects 1oo
15/149
15
Object-oriented Programming
Object-or iented programm ing is a method of
imp lementation in wh ich p rograms are organized
as cooperat ive col lect ions of objects, each of
which represents an instance of some class...
Grady Booch
-
8/10/2019 Abap Objects 1oo
16/149
-
8/10/2019 Abap Objects 1oo
17/149
17
Object-oriented
Application Development
A way to design and build applications
Objectsbundle together data (state) and
methods (behavior)
Objects facilitate separating definition from
implementation
Much more than just syntax
You might have already done object-oriented
programming in the 4GL
-
8/10/2019 Abap Objects 1oo
18/149
18
Sample Attributes & Methods
Class Attributes MethodsCricketTeam Captain,
VC, WC,
FB1,FB2,FB3
SP1,SP2,SUB
DoSingle,DoDouble
DoBowl,DoCatch
DoRunout,HitSix,
Doplay,HitBowndaryICICI S.A. Account
Number,
Balance,
CreditLimit
CheckBooks
ATM_Transfer,
E_transfer, Withdraw,
Check_Credit_limit,
Issue_check_book,
Track_transactions
Production PO#,SSD,SED,
ASD,AED,Com
p,CoOptn,Oper
,Workcenter
Start_Production,End_pro
duction,Start_opr,Send_t
o_WS Etc
-
8/10/2019 Abap Objects 1oo
19/149
-
8/10/2019 Abap Objects 1oo
20/149
20
Abstraction
Abstractionis used to manage complexity
Focus on the essential characteristics
Eliminate the details Find commonalities among objects
Defines the public contract
Public definition for users of the object
The Outside view Independent of implementation
Publ ic View of an Ob ject
-
8/10/2019 Abap Objects 1oo
21/149
21
Abstraction - Example
Object: Automobile
Start
Stop
Drive
PumpFuel
What should an
Automobile
object do?
-
8/10/2019 Abap Objects 1oo
22/149
22
Encapsulation
Encapsulat ionhides implementation
Promotes modular software designdata and
methods together
Data access always done through methods Often called information hiding
Provides two kinds of protection:
State cannot be changed directly from outside Implementation can change without
affecting users of the object
Hide Implementat ion Details
-
8/10/2019 Abap Objects 1oo
23/149
23
Encapsulation- Example
Public
methods of
Splendor class
Implementation OutsideView
Start(),Stop()
PumpFuel(),
Change_gear()
Object: Splendor
EngineNum,
Gear#,
Fuel_MrtRd,
SpeedometrRd
StartEngine(),StopEngine(),Cosu
mePetrol(),
Move_Wheel()
Start(),Stop()
PumpFuel(),
Change_gear()
-
8/10/2019 Abap Objects 1oo
24/149
24
Encapsulation - Example continued
Object: Splendor
EngineNum,
Gear#,
Fuel_MrtRd,
SpeedometrRdStartEngine(),StopE
ngine(),Consume_P
etrol(),
Move_Wheel()
Start(),Stop()
Pump_Fuel(),
Change_gear()
Hmm...
Id like to change
Consume_petrol to
Consume_diesel
Consume_fuel() calls
Consume_Petrol( )
-
8/10/2019 Abap Objects 1oo
25/149
25
Encapsulation - Example continued
This change was easybecause users of the
object will not beaffected.
Object: Splendor
EngineNum,
Gear#,
Fuel_MrtRd,
SpeedometrRdStartEngine(),
StopEngine(),Consu
me_Diesel(),
Move_Wheel())
Start(),
Stop()
Pump_Fuel(),
Change_gear()
Consume_fuel() callsConsume_Diesel( )
-
8/10/2019 Abap Objects 1oo
26/149
26
Hierarchies
Define relationships between objects
Objects defined in terms of other objects
Allows state and behavior to be shared and
specialized as necessary Encourages code reuse
Two important hierarchy types:
Inheritance
Aggregation
Object Relat ionships
-
8/10/2019 Abap Objects 1oo
27/149
27
Hierarchies - Example
Automobile
2-Wheerler,3-Wheeler and
4-Wheerler
inherit from
Automobile
(Inheritance)
2-Wheeler 3-Wheeler
is a is a
4-Wheeler
is a
-
8/10/2019 Abap Objects 1oo
28/149
28
Hierarchies - Example
Automobile
Engine
references
Automobile
uses Engine(Aggregation)
-
8/10/2019 Abap Objects 1oo
29/149
29
Summary : Object-oriented Principles
Abstraction
Break up complex problem
Focus on public view, commonalities
Encapsulation Hide implementation details
Package data and methods together
Hierarchies
Build new objects by combining or extending
other objects
-
8/10/2019 Abap Objects 1oo
30/149
30
ABAP Object Oriented Programming
Class defined andimplemented
Classes and objects areused to model real worldentity.
Methods inside the classesperform the functions.
Data used by the classesare protected between them.
-
8/10/2019 Abap Objects 1oo
31/149
31
ABAP Object Oriented Programming
Method implementationCalling a Method
Creating an Object
Defining a Referrence
-
8/10/2019 Abap Objects 1oo
32/149
32
Comparison between Procedural and Object Oriented
Programming
Features Procedure Oriented
approach
Object Oriented approach
Emphasis Emphasis on tasks Emphasis on data
Modularization Programs are divided
into smaller programsknown as functions
Programs are organized
into classes and objectsand the functionalities are
embedded into methods
of a class.
Data security Most of the functions
shareglobal data
Data can be hiddenand
cannot be accessed byexternal sources.
Extensibility Relatively more time
consuming to modify
for extending existing
functionality.
New data and functions
can be easily added
whenever necessary
-
8/10/2019 Abap Objects 1oo
33/149
33
Object Oriented Approach - key features
1. Better Programming Structure
2. Real world entity can be modeled very well
3.Stress on data security and access
4. Data encapsulation and abstraction
5. Reduction in code redundancy
-
8/10/2019 Abap Objects 1oo
34/149
-
8/10/2019 Abap Objects 1oo
35/149
35
Object Oriented Design(OOD)
Five Major Steps
1. Identify the objects and their attributes
2. Identify the operations suffered by and required of each
object
3. Establish the visibility of each object in relation to other
objects
4. Establish the interface of each object
5. Implement each object
-
8/10/2019 Abap Objects 1oo
36/149
36
Lets Design
-
8/10/2019 Abap Objects 1oo
37/149
37
DAY 2
-
8/10/2019 Abap Objects 1oo
38/149
38
Classes
Classes are templates for objects. Conversely,you can say that the type of an object is the sameas its class.
componentsof the class describe the state andbehavior of objects.
Local and Global Classes: Classes in ABAPObjects can be declared either globally or locally.You define global classes and interfaces in theClass Builder (Transaction SE24) in the ABAP
Workbench. They are stored centrally in classpoolsin the class library in the R/3 Repository.
-
8/10/2019 Abap Objects 1oo
39/149
39
Classes
Local classes are defined within an ABAP program. Local
classes and interfaces can only be used in the program inwhich they are defined.
When you use a class in an ABAP program, the system
first searches for a local class with the specified name. If it
does not find one, it then looks for a global class. Apart from the visibility question, there is no difference
between usinga global class and using a local class.
Certain restrictionsapply when you define the interface of
a global class, since the system must be able to guarantee
that any program using an object of a global class can
recognize the data type of each interface parameter.
-
8/10/2019 Abap Objects 1oo
40/149
40
Classes
Defining Local Classes:
A complete class definition consists of adeclaration part and, if required, animplementation part.
The declaration partof a class
CLASS DEFINITION....ENDCLASS.
It contains the declaration for all components
(attributes, methods, events) of the class. The declaration part belongs to the global
program data.
-
8/10/2019 Abap Objects 1oo
41/149
41
Classes
If you declare methods in the declaration part of a
class, you must also write an implementation part
for it. This consists of a further statement block:
CLASS IMPLEMENTATION.
...ENDCLASS
The implementation part of a local class is a
processing block. Subsequent coding that is not
itself part of a processing block is therefore notaccessible.
-
8/10/2019 Abap Objects 1oo
42/149
42
Defining Local Classes
REPORT YSUBOOPS17 .
CLASSc1 DEFINITION.
PUBLIC SECTION.
data : w_num type i value 5.
methods : m1.
ENDCLASS.
CLASS c1 IMPLEMENTATION.
METHOD M1.
WRITE:/5 'I am M1 in C1'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA : oref1 TYPE REF TO c1 .
CREATE OBJECT : oref1.
write:/5 oref1->w_num.
CALL METHOD : oref1->m1 .
Defined in the global areaof a local program :-
CLASS DEFINITION.
..
ENDCLASS.
All the attributes ,methods, events andinterfaces are declared here.
Cannot be declared inside asubroutine/function module.
Class definition cannot benested.
-
8/10/2019 Abap Objects 1oo
43/149
43
Implementing Local Classes
Local class in a program is implemented asfollows:-
CLASS IMPLEMENTATION.
..
ENDCLASS.
Methods used by the class are described here.
A class can be implemented
At the end of the program( like subroutines).
After the class definition.
If the latter is adopted, one must then assignsubsequent non-declarative statements explicitlyto a processing block, such asSTART-OF-SELECTION, so that they can be accessed.
REPORT YSUBOOPS17 .
CLASSc1 DEFINITION.
PUBLIC SECTION.
data : w_num type i value 5.
methods : m1.
ENDCLASS.
CLASSc1 IMPLEMENTATION.
METHOD M1.
WRITE:/5 'I am M1 in C1'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA : oref1 TYPE REF TO c1 .
CREATE OBJECT : oref1.
write:/5 oref1->w_num.
CALL METHOD : oref1->m1 .
-
8/10/2019 Abap Objects 1oo
44/149
44
Different places of implementing class
Class implemented at the end of
the programClass implemented after Definition
-
8/10/2019 Abap Objects 1oo
45/149
45
Classes
Structure of a Class
The following statements define the structure of a
class:
A class contains components
Each component is assigned to a visibilitysection
Classes implement methods
-
8/10/2019 Abap Objects 1oo
46/149
46
Classes : Class Components
All components are declared in the declaration part of the
class.
When you define the class, each component is assigned to
one of the three visibility sections, which define the
external interfaceof the class.
All of the components of a class are visible within theclass.
Instance components exist separately for each objectin
the class
static components exist only once for the whole class,
regardless of the number of instances.
Allcomponents that you can declare in classes can also
be declared in interfaces
-
8/10/2019 Abap Objects 1oo
47/149
47
Classes : Class Components
Attributes:
Attributes are internal data fieldswithin a class that can
have anyABAP data type.
The stateof an object is determined by the contents of its
attributes.
One kind of attribute is the reference variable. Referencevariables allow you to create and address objects.
Instance Attributes:DATA
Static Attributes: CLASS-DATA
Static Attributes are accessible for the entire runtime of theclass.
-
8/10/2019 Abap Objects 1oo
48/149
48
Classes : Class Components
Methods
Methods are internal procedures in a class that define the behaviorof anobject.
They can access all of the attributes of a class. This allows them to changethe data content of an object.
They are similar to function modules or procedures.
The private attributes of a class can only be changed by methods in thesame class.
In Definition Part Instance Methods: METHODS .
Instance Methods can access all the attributes of a class and can trigger allthe events of a class.
Static Methods : CLASS-METHODS . Theycan onlyaccess static attributesand trigger static events.
Inimplementation Part.
METHOD ....
ENDMETHOD.
-
8/10/2019 Abap Objects 1oo
49/149
49
Classes : Class Components
Special Methods:
CONSTRUCTOR: Cannot call with CALL METHOD statement.
Called automatically when you create an object
CLASS_CONSTRUCTOR:
Called when you first access the components of a class
Events: Objects or classes can use events to trigger event
handler methodsin other objects or classes.
When an event is triggered, any number of event handlermethods can be called.
the handler determinesthe events to which it wants toreact. There does not have to be a handler methodregistered for every event.
-
8/10/2019 Abap Objects 1oo
50/149
50
Classes : Class Components
The events of a class can be triggered in the methods of
the same classusing the RAISE EVENT statement.
The event handler methods can be of the same or a
different class.
FOR EVENT OF . Addition
Eventshave a similar parameter interface to methods, butonly have outputparameters.
These parameters are passed by the trigger (RAISE
EVENT statement) to the event handler method, which
receives them as input parameters.
The link between trigger and handler is established
dynamically in a program using the SET HANDLER
statement.
-
8/10/2019 Abap Objects 1oo
51/149
51
Classes : Class Components
The trigger and handlers can be objects or classes,
depending on whether you have instance or static eventsand event handler methods.
When an event is triggered, the corresponding eventhandler methods are executed in allregistered handlingclasses.
Instance Events:EVENTS keyword. An instance event can onlybe triggered in an instance
method.
Static Events: CLASS-EVENTS
All methods (instance and static methods) can triggerstatic events.
Static events are the only type of event that can betriggered in a static method.
-
8/10/2019 Abap Objects 1oo
52/149
52
Classes : Class Components
Types:
You can define your own ABAP data types within
a class using the TYPES statement.
Types are not instance-specific, and exist once
only for all of the objects in a class.Constants:
Constants are special static attributes.
You declare them using the CONSTANTS
statement.
Constants are notinstance-specific
-
8/10/2019 Abap Objects 1oo
53/149
Sections of a There is no default visibility section in a class.
-
8/10/2019 Abap Objects 1oo
54/149
54
Class
CLASS C1
DEFINITION.PUBLICSECTION.
DATA:
METHODS:
EVENTS:
PROTECTEDSECTION.
DATA:
METHODS:
EVENTS:
PRIVATESECTION.
DATA:
METHODS:
EVENTS:
ENDCLASS.
A Class puts its components
under three distinct sections:-
Public Section:-Componentsplaced here form the external
interface of the classthey are
visible to all users of the class as
well as to methods within the
class and to methods of
subclasses*
Protected Section:- Components
placed in protected section arevisible to the children of the
class(subclass) as well as within
the class
Private Section:-Componentsplaced here are accessible by the
y
This sequence of visibility must be maintainedin a class
-
8/10/2019 Abap Objects 1oo
55/149
55
Who can use a class?
class c2 definition inheritingfrom c1.
public section .methods : m2.
endclass.
class c2 implementation.
method m2.
write:/5 From subclass' ,w_num.
endmethod.
endclass.
REPORT YSUBOOPS17 .
CLASS c1 DEFINITION.
PUBLIC SECTION.
data : w_numtype i value 5.
methods m1.
ENDCLASS.
CLASS c1 IMPLEMENTATION.
method m1.
write:/5 From class : ' , w_num.
endmethod.
ENDCLASS.
START-OF-SELECTION.
DATA :
oref1 TYPE REF TO c1 ,
oref2 type ref to c2 .
CREATE OBJECT : oref1.
write:/5 As an user ' ,
oref1->w_num.
Call method oref1->m1.
Call method oref2->m2.
Classitself
Subclass
of the
class
External user
-
8/10/2019 Abap Objects 1oo
56/149
56
Classes
-
8/10/2019 Abap Objects 1oo
57/149
57
ClassesREPORT demo_class_counter .
CLASS counter DEFINITION.
PUBLIC SECTION.METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.PRIVATE SECTION.
DATA count TYPE i.
ENDCLASS.
CLASS counter IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.
DATA number TYPE i VALUE 5.
DATA cnt TYPE REF TO counter.
START-OF-SELECTION.CREATE OBJECT cnt.
CALL METHOD cnt->set EXPORTING set_value = number.
DO 3 TIMES.
CALL METHOD cnt->increment.
ENDDO.
CALL METHOD cnt->get IMPORTING get_value = number.
WRITE number.
-
8/10/2019 Abap Objects 1oo
58/149
58
Two Additions in Local Class Definition
Addition 1 : CLASS class DEFINITION DEFERRED.
Used to refer to a class at some point in a code and the class is notdefined before the line.
CLASS C2 DEFINITION DEFERRED.
CLASS C1 DEFINITION.
PUBLIC SECTION.
DATA O2 TYPE REF TO C2.
ENDCLASS.
CLASS C2 DEFINITION.
public section.
data : num type i value 5.
ENDCLASS.
start-of-selection.data : obj1 type ref to C1.
CREATE OBJECT obj1.
create object obj1->o2.
write:/5 obj1->o2->num .
-
8/10/2019 Abap Objects 1oo
59/149
59
Two Additions in Local Class Definition
Addition 2 : CLASS class DEFINITION LOAD
The compiler normally loads the description of a globalclass fromthe class librarythe first time you use the class in your program .However, if the first access to a global class in a program is to its
static componentsor in the definition of an event handler method,you must load it explicitly using the statement CLASS classDEFINITION LOAD. This variant has no corresponding ENDCLASSstatement.
PUBLIC|PROTECTED|PRIVATE
http://sapevent/http://sapevent/ -
8/10/2019 Abap Objects 1oo
60/149
60
PUBLIC|PROTECTED|PRIVATE
ADDITIONS
Syntax :CLASS DEFINITION [CREATE
PUBLIC|PROTECTED|PRIVATE]
CREATE PUBLICaddition is implicit in every class definition if the other CREATEadditions are not used. It defines the default state, that is, that every user can create
instances of the class.
Addition ofCREATE PROTECTEDmeans the class can only be instantiated byitself or its subclass.
Addition ofCREATE PRIVATEmeans the class can only instantiate itself or thefriends of the class can instantiate it.
-
8/10/2019 Abap Objects 1oo
61/149
61
Object Handling
Each object has a unique identity and its own attributes.
Object References To access an object from an ABAP
program, you use object references. Object references are
pointers to objects. In ABAP, they are always contained in
reference variables.
A reference variable that points to an object knows theidentity of that object. Users cannot access the identity of
the object directly.
Reference variable can occur as a component of a
structure or internal table as well as on its own.
There are two principal types of references: Class
referencesand interface references
-
8/10/2019 Abap Objects 1oo
62/149
62
Object Handling
... TYPE REF TO
Creating Objects CREATE OBJECT .
Addressing the Components of Objects:
You can access the instance components of an object
using references in reference variablesonly. To access an attribute : ->
To call a method : CALL METHOD ->
You can access staticcomponents using the class nameas well as the reference variable.
It is also possible to address the static components of aclass beforean object has been created.
-
8/10/2019 Abap Objects 1oo
63/149
63
Object Handling
Addressing a static attribute : =>
Calling a static method : CALL METHOD
=>
Within a class, you can use the self-reference MEto
access the individual components:
To access an attribute in the same class: ME->
To call a method in the same class: CALL
METHOD ME->
Self references allow an object to give other objects areference to it.You can also access attributes in methods
from within an object even if they are obscured by local
attributes of the method.
-
8/10/2019 Abap Objects 1oo
64/149
64
Object Handling
Assigning References
When you assign a reference to a different
reference variable, their types must be either
compatible or convertible.
= and refer to same class.
type ref to root class OBJECT.
Inheritance & Interface situations.
Class OBJECT is just a container. You cannot
access components of class with OBJECT
reference
-
8/10/2019 Abap Objects 1oo
65/149
-
8/10/2019 Abap Objects 1oo
66/149
66
Object Handling
-
8/10/2019 Abap Objects 1oo
67/149
67
Declaring and Calling Methods
Declaring Methods :
You can declare methods in the declaration part of a classor in aninterface.
To declare instance methods, use the following statement:
METHODS
IMPORTING.. [VALUE(][)] TYPE type
[OPTIONAL]..EXPORTING.. [VALUE(][)] TYPE type[OPTIONAL]..
CHANGING.. [VALUE(][)] TYPE type[OPTIONAL]..
RETURNING VALUE()
EXCEPTIONS.. ..and the appropriate additions.
To declare static methods, use the following statement:
CLASS-METHODS ...
Both statements have the same syntax.
-
8/10/2019 Abap Objects 1oo
68/149
68
Declaring and Calling Methods
The default way of passing a parameter in a
method is by reference. To pass a parameter by value, you must do so
explicitly using the VALUE addition.
The return value (RETURNING parameter) must
always be passed explicitly as a value.If you useit, you cannot use EXPORTING or CHANGINGparameters.
You can use exception parameters
(EXCEPTIONS) to allow the user to react to errorsituations when the method is executed.
-
8/10/2019 Abap Objects 1oo
69/149
69
Declaring and Calling Methods
Implementing Methods :
METHOD .
...
ENDMETHOD.
Static methods can work with only the static attributes of a
class.Calling Methods :
CALL METHOD EXPORTING... =....
IMPORTING... =....
CHANGING ... =....
RECEIVING r = h
EXCEPTIONS... = rc i...
-
8/10/2019 Abap Objects 1oo
70/149
-
8/10/2019 Abap Objects 1oo
71/149
71
Static Method
oLike any other class components , methods canbe static or instance.
oTo declare static methods, use the following
statement:
CLASS-METHODS ...
oStatic methods can have import and ( export/changing parameters ) or returning parameters . It
can also raise exceptions.
oStatic methods can only work with the static
attributes of your class. Instance methods can
work with both static and instance attributes.
oOne can call a static method using an object ofthe class or directly using the class by class
component selector.
-
8/10/2019 Abap Objects 1oo
72/149
72
Declaring and Calling Methods
Within the implementation part of a class,use
CALL METHOD ...
Visible instance & static methods can be called from
outside the class using
CALL METHOD ->...
Visible static methods can be called from outside the classusing
CALL METHOD =>...
where is the name of the relevant class.
You need not import the output parameters into yourprogram using the IMPORTING or RECEIVING addition.C
-
8/10/2019 Abap Objects 1oo
73/149
73
Declaring and Calling Methods
If the interface of a method consists only of a
single IMPORTING parameter, you can use
CALL METHOD ( f).
The actual parameter is passed to the input
parameters of the method. If the interface of a method consists only of
IMPORTING parameters, you can use
CALL METHOD (.... =....).
-
8/10/2019 Abap Objects 1oo
74/149
74
Dynamic Method Calls
Instance, self-referenced, andstatic methods can all be calleddynamically; the class name forstatic methods can also be
determined dynamically: oref->(method)
me->(method)
class=>(method)
(class)=>method
(class)=>(method)
D l i d C lli M h d
-
8/10/2019 Abap Objects 1oo
75/149
75
Declaring and Calling Methods
Event Handler Methods :
Event handler methods cannot be called using the CALLMETHOD statement.Instead, they are triggered usingevents.
You define a method as an event handler method usingthe addition
... FOR EVENT OF ...in the METHODS or CLASS-METHODS statement.
The interface may only consist of IMPORTINGparameters.
Each IMPORTING parameter must be an EXPORTINGparameter of the event
The attributes of the parameters are defined in thedeclaration of the event (EVENTS statement) andare adopted by the event handler method.
D l i d C lli M th d
-
8/10/2019 Abap Objects 1oo
76/149
76
Declaring and Calling Methods
Constructors:
Constructors are special methods that cannotbe calledusing CALL METHOD.
They are called automaticallyby the system to set thestarting stateof a new object or class.
Constructors are methods with a predefined name.
To use them, you must declare them explicitlyin theclass.
Instance constructor : You declare it in the public section asfollows:
METHODS CONSTRUCTORIMPORTING.. [VALUE(][)] TYPE type
[OPTIONAL]..EXCEPTIONS.. .
and implement it in the implementation section like anyother method.
D l i d C lli M th d
-
8/10/2019 Abap Objects 1oo
77/149
77
Declaring and Calling Methods
The system calls the instance constructoronce for each
instance of the class, directly afterthe object has beencreated in the CREATE OBJECT statement.
You pass the parameters to the constructor and handle the
exceptions in CREATE OBJECT stmt.
static constructor : CLASS-METHODS CLASS_CONSTRUCTOR.
The static constructor has noparameters.
The system calls the static constructor once for each class,
beforethe class is accessed for the first time.
The static constructor cannottherefore access the
components of its own class.
I t C t t
-
8/10/2019 Abap Objects 1oo
78/149
78
Instance Constructor
Executed once for each instance.
Called automatically, immediately after theCREATE OBJECT statement.
Can contain an interface with
IMPORTINGparameters andEXCEPTIONS, but cannot haveanyEXPORTING/CHANGING/RETURNINGparameters .
The interfaces are defined using the same
syntax as for normal methods in theMETHODS statement. To transferparameters and handle exceptions, use theEXPORTINGandEXCEPTIONSadditionsto the CREATE OBJECTstatement.
Static Constructor
-
8/10/2019 Abap Objects 1oo
79/149
79
Static Constructor
Static methods, declared as CLASS-METHODS:
CLASS_CONSTRUCTOR in the public section of the class
definition and are also implemented in the
implementation part.
Has no interface parameters and cannot trigger
exceptions.
Executed once in each program.It is calledautomatically for the class before it is accessed for
the first time- that is, before one of the following
actions:
CREATE OBJECT obj from the class.
Call a static method : [CALL METHOD] class=>meth.
Registering a static event handler method using SET
HANDLER class=>meth for obj.
Registering an event handler method for a static event
of the class class.
Addressing a static attributewith class=>a.
REPORT YSUBOOPS2.CLASS c1 DEFINITION .
PUBLIC SECTION.CLASS-DATA : NUM TYPE I VALUE 5.
CLASS-METHODS:CLASS_CONSTRUCTOR.
ENDCLASS.
CLASS c1 IMPLEMENTATION.
METHOD CLASS_CONSTRUCTOR.WRITE:/5 'I am class
constructor'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
WRITE:/5 C1=>NUM.
S lf R f
http://sapevent/http://sapevent/http://sapevent/http://sapevent/http://sapevent/http://sapevent/http://sapevent/http://sapevent/http://sapevent/http://sapevent/http://sapevent/http://sapevent/ -
8/10/2019 Abap Objects 1oo
80/149
80
Self-Reference
Internally, each method has an implicit self-
reference variable, the reserved word me
A method can access the components of its
class simply by their name; however,
It may use mesimply for clarity
If a method declares a local variable with
the same name as one of the class
components, to avoid ambiguity it must
use meto address the variable originally
belonging to the class.
A method must use me to export a
reference to itself (that is, its object)
-
8/10/2019 Abap Objects 1oo
81/149
81
DAY 3
I h it
-
8/10/2019 Abap Objects 1oo
82/149
82
Inheritance
Inheritance allows you to derive a new class from an
existing class. CLASS DEFINITION INHERITING FROM
.
The new class inherits allof the components
of the existing class . However, only the publicand protectedcomponents of
the super class are visiblein the subclass.
You can declare privatecomponents in a subclass that
have the same namesas privatecomponents of the
super class.Each class works with its own privatecomponents.
-
8/10/2019 Abap Objects 1oo
83/149
83
Creating Subclass
Subclasses can be created from its
superclass using the syntax:-
CLASS DEFINITIONINHERITING FROM .
Subclass inherits all the public and protected
components of the superclass.
Superclass should not be declared as a
FINAL class.
Inheritance
-
8/10/2019 Abap Objects 1oo
84/149
84
Inheritance
You can add new components to the subclass.
This allows you to turn the subclass into aspecialized versionof the super class.
A class can have more than one direct subclass,
but it may only have one direct super class. This
is called single inheritance.
The root node of all inheritance trees in ABAP
Objects is the predefined empty classOBJECT.
Inheritance
-
8/10/2019 Abap Objects 1oo
85/149
85
Inheritance
Redefining Methods: you can use the REDEFINITION
addition in the METHODS statement to redefine aninherited public or protected instancemethod in a
subclass and make its function more specialized.
The implementation of the redefinition in the subclass
obscures the original implementation in the super class.
Any reference that points to an object of the subclass uses
the redefined method, even if the reference was defined
with reference to the superclass.
This particularly applies to the self-reference ME->.
Within a redefined method, you can use the pseudoreference SUPER-> to access the obscured method.
M dif i h d i b l
-
8/10/2019 Abap Objects 1oo
86/149
86
Modifying methods in subclass
To redefine a public/protected method of a
superclass in one of its subclasses, use the syntax
in the subclass definition:-
METHOD REDEFINITION
The interface and visibility of a method
cannot be changed while redefining it.
The method declaration and implementation in
the superclass is not affected when you redefine
the method in a subclass.
Inheritance
-
8/10/2019 Abap Objects 1oo
87/149
87
Inheritance
Abstract and Final Methods and Classes :
An abstract method is defined in an abstract class andcannot be implemented in that class.
A final method cannot be redefined in a subclass.
References to Subclasses and Polymorphism:
Reference variables defined with reference to a superclass can also contain references to any of its subclasses.
A reference variable defined with reference to a superclass or an interface implemented by a super class cancontain references to instances of any of its subclasses.
Reference variable defined with reference to OBJECT cancontain reference to any reference variable.
CREATE OBJECT statement with type addition
Abstract Methods and Classes
-
8/10/2019 Abap Objects 1oo
88/149
88
Abstract Methods and Classes
One cannot create an object from an abstract
class.Only subclasses can be derived from them.
CLASS DEFINITION ABSTRACT.
Abstract methods cannot be implemented in
the same class. Only the subclasses of that
class can implement it.
METHODS .ABSTRACT
Any class containing an abstract method has
to be an abstract class. All subsequent
subclasses that do not implement the method
must also be abstract. To implement an abstract
method in a subclass, one need to redefine this
subclass using the REDEFINITIONaddition.
Final Methods and Classes
-
8/10/2019 Abap Objects 1oo
89/149
89
Final Methods and Classes
Final classes cannot have subclasses. Only the
class can be instantiated.
CLASS DEFINITION FINAL .
A final method cannot be redefined in
subclasses
METHODS .FINAL
Inheritance
-
8/10/2019 Abap Objects 1oo
90/149
90
Inheritance
Inheritance and Static Attributes
In terms of inheritance, static attributes are not
assigned to a single class, but to a part of the
inheritance tree.
When you address a static attribute that belongsto part of an inheritance tree, you always address
the class in which the attribute is declared,
irrespective of the class you specify in the class
selector.
This is particularly important when you call the
static constructors of classes in inheritance.
Inheritance and Static Attributes
-
8/10/2019 Abap Objects 1oo
91/149
91
Inheritance and Static Attributes
Static attributes only exist
once in each inheritance tree.
One can change them from
outside the class using the
class component selector
with any class name, or
within any class in which they
are shared.
They are visible in all
classes in the inheritance
tree.
CLASS c1 DEFINITION.
PUBLIC SECTION .
CLASS-DATA : num TYPE I VALUE 5 .
ENDCLASS.
CLASS c1 IMPLEMENTATION.
ENDCLASS.
CLASS c2 DEFINITION INHERITING FROMc1.
ENDCLASS.
CLASS c2 IMPLEMENTATION.
ENDCLASS.
START-OF-SELECTION.
c2=>num = 7.
write:/5 c1=>num .
Output : 7
Inheritance
-
8/10/2019 Abap Objects 1oo
92/149
92
Inheritance
Inheritance and Constructors
Every class has an Instance constructorcalledCONSTRUCTOR.
Instance constructors of the various classes in an
inheritance tree are fully independent of one another.
You cannot redefinethe instance constructor of a superclass in a subclass
The instance constructor of a subclass has to ensurethat
the instance constructors of all of its super classes are also
called.
To do this, the instance constructor of each subclass must
contain a CALL METHOD SUPER->CONSTRUCTOR
statement.
Inheritance
-
8/10/2019 Abap Objects 1oo
93/149
93
Inheritance
Supplying values using CREATE OBJECT in inheritance
Supplying values using
CALL METHOD SUPER->CONSTRUCTOR in inheritance.
The instance constructor of a subclass is divided into two
parts by the CALL METHOD SUPER->CONSTRUCTOR
statement. In the statements before the call, theconstructor behaves like a static method
In a constructor method, the methods of the subclasses of
the class are not visible.( REDEFINITION not effective )
Static Constructors
Inheritance and Instance
-
8/10/2019 Abap Objects 1oo
94/149
94
Constructors
ase Description Necessity of calling
constructor of
superclass by
subclass
1 None of the superclass and subclass haveexplicit constructor.
Not required
2 Superclass have explicit constructor, butsubclass does not have any explicit constructor.
Not required
3 Superclass does not have an explicitconstructor, but subclass have one.
Required
4 Both the superclass and subclass have explicitconstructor
Required
Superclasses and/or subclasses can have explicit constructors of their own.Constructor of a subclass sometimes have to call the constructor of the superclass
using: CALL METHOD : SUPER->CONSTRUCTORdepending on the following:-
Polymorphism via Inheritance
-
8/10/2019 Abap Objects 1oo
95/149
95
y p
With inheritance, a reference variable
defined with respect to a class may not only
point to instances of that but also to
instances of subclasses of the same. One
can even create subclass objects using a
reference variable typed with respect to a
super class.
Polymorphism through inheritance can be
achieved by playing with static and dynamic
type of a reference variable.
Instances of a subclass may be used
through the super class's interface. When
this is done, a client can't access all
components defined in the subclass, only
those inherited from the respective super
class.
classc1 definition.
. . . . . . .
endclass.
classc1 implementation.
. . . . . .
endclass.
classc2 definition inheriting fromc1.
. . . . . .
endclass.
classc2 implementation.
. . . . . . .
endclass.
start-of-selection.
data : oref1 type ref to c1,
oref11 type ref to c1,
oref2 type ref to c2.
create object oref1 type c2 .
create object oref2.
oref11 = oref2.
write:/5 oref1->num ,
oref11->num .
Inheritance
-
8/10/2019 Abap Objects 1oo
96/149
96
Inheritance
Inheritance Overview:
Inheritance
-
8/10/2019 Abap Objects 1oo
97/149
97
Inheritance
Inheritance and Reference Variables
Interfaces
-
8/10/2019 Abap Objects 1oo
98/149
98
Interfaces
Interfaces are independent structures that you can implement ina class to extend the scope of that class.
a universal point of contact.
They provide one of the pillars of polymorphism, since they allowa single method within an interface to behave differently indifferent classes.
Global& Local Interfaces
The definition of a local interface is enclosed in thestatements:
INTERFACE .
...
ENDINTERFACE.
The definition contains the declaration for all components
(attributes, methods, events)of the interface. They automatically belong to the public section of the classin
which the interface is implemented.
Defining Interfaces
-
8/10/2019 Abap Objects 1oo
99/149
99
Defining Interfaces
Can be declared globally or locally within aprogram.
Locally declared in the global portion of a program
using:-
INTERFACE .
...
ENDINTERFACE.
The definition contains the declaration for all
components (attributes, methods, events) of the
interface.
Interfaces are included in the public section of a
class.
Interfaces do not have an implementation part,
since their methods are implemented in the class that
implements the interface.
report ysubdel .
interfacei1.data : num type i .
methods : meth1.
endinterface.
class c1 definition.
public section.
methods : meth1.
interfaces : i1.
endclass.
class c1 implementation.
method : meth1.
write:/5 'I am meth1 in c1'.
endmethod.
method i1~meth1.
write:/5 'I am meth1 from i1'.
endmethod.endclass.
start-of-selection.
data : oref type ref to c1. create object oref.
write:/5 oref->i1~num.
call method oref->meth1.
call method oref->i1~meth1.
Interfaces
-
8/10/2019 Abap Objects 1oo
100/149
100
Interfaces
Interfaces do not have instances.
To implement an interface in a class, use the statementINTERFACES .
in the declaration part of the class.
A component of an interface can beaddressed as though it were a member of the class underthe name .
Interface References
Addressing Objects Using Interface References
Using the class reference variable:
To access an attribute : ->
To call a method : CALL METHOD ->
Interfaces
-
8/10/2019 Abap Objects 1oo
101/149
101
Interfaces
Using the interface reference variable:
To access an attribute : < iref>-> To call a method : CALL METHOD ->
Addressing a constant : < intf>=> (Cannot useclass name).
Addressing a static attribute
: < class>=>
Calling a static method : CALL METHOD=>
(Cannot use Interface method ).
casting operator (?= )
?=
For the casting to be successful, the object to which pointsmust be an object of the same class as the type of the classvariable .
-
8/10/2019 Abap Objects 1oo
102/149
102
DAY 4
Triggering and Handling Events
-
8/10/2019 Abap Objects 1oo
103/149
103
Triggering and Handling Events
To trigger an event, a class must
Declare the event in its declaration part
Trigger the event in one of its methods
EVENTS EXPORTING... VALUE()
TYPE type [OPTIONAL].. To declare static events, use the following
statement:
CLASS-EVENTS ...
Both statements have the same syntax.
Triggering and Handling Events
-
8/10/2019 Abap Objects 1oo
104/149
104
Triggering and Handling Events
Triggering Events
RAISE EVENT EXPORTING... =
...
The self-reference ME is automatically passed to
the implicit parameter SENDER.
Handling Events
Events are handled using special methods. To
handle an event, a method must
1. be defined as an event handler method forthat event
2. be registered at runtime for the event.
Triggering and Handling Events
-
8/10/2019 Abap Objects 1oo
105/149
105
Triggering and Handling Events
Declaring Event Handler Methods
METHODS FOR EVENT OF IMPORTING.. ..
The event handler method does not have to use all of the
parameters passed in the RAISE EVENT statement.
If you want the implicit parameter SENDER to be used aswell, you must list it in the interface.
Registering Event Handler Methods
SET HANDLER... ... [FOR]...
Handler methods are executed in the order in which they
were registered.
Triggering and Handling Events
-
8/10/2019 Abap Objects 1oo
106/149
106
Triggering and Handling Events
Handler Table:
What is an Exception?
-
8/10/2019 Abap Objects 1oo
107/149
107
What is an Exception?
An exception is a situation that occurs during the execution of anABAP program, which renders a normal program continuationpointless.
Exceptions can be detected at the time of program compilation or at
runtime.If the exception detected at runtime is not handled properly
by the program itself, we get a short dump and the executionterminates.
Classification of Exceptions
-
8/10/2019 Abap Objects 1oo
108/149
108
Classification of Exceptions
Exceptions of various kinds can be broadly classified as :-
Exceptions that can be handled.
Exceptions that cannot be handled.
Exceptions that can be handled indicate error situations in the runtime
environment or in the ABAP program, in the case of which the programexecution can be continued - by handling the exception in the ABAP
program - without the system reaching a critical condition. If such a
situation is not handled a runtime error will occur.
Exceptions that cannot be handled indicate critical error situations inthe runtime environment, which cannot be handled with/by ABAP means
and always cause a runtime error. Database space problem can be anexample of such category.
Traditional Ways of Catching RuntimeExceptions
-
8/10/2019 Abap Objects 1oo
109/149
109
Exceptions
Areas Brief Overview
In ABAP catch system-exceptions = .. . . . . .
Endcatch.
If sy-subrc= .
< exception handling statements>
Endif.
In functionmodule
Creating exceptions for function module, raising them at
appropriate points in the FM , assigning different sy-subrc
values for each exceptions at the time of the FM call and later
dealing with them.
In Methods Creating different exceptions at the time of declaring methods,raising those exceptions within the method, assigning differentsy-subrc values at the time of method call and later dealing
with those values.
What is Class-based exception
h dli ?
-
8/10/2019 Abap Objects 1oo
110/149
110
handling?
In Class-based exceptions handling approach, exceptions are generally
represented by objects of exception classes. There are pre-defined
exception classes for error situations in the runtime environment .
Users can also define own exception classes globally/locally, if required
and can raise them using RAISE EXCEPTIONstatement.
The runtime environment only causes exceptions that are based on pre-
defined classes, while in ABAP programs one can use raise pre-defined as
well as user-specific exception classes.
Class-based exceptions are handled using the control structure TRY ...
ENDTRY.
Class-based exceptions in procedures can be propagated to the caller inthe definition of the interface using the RAISINGaddition, if the exception is
not to be handled in the procedure.
TRYCATCHENDTRY
http://sapevent/http://sapevent/http://sapevent/http://sapevent/ -
8/10/2019 Abap Objects 1oo
111/149
111
Class-based exceptions are handled using TRYCATCHENDTRYblock.
TRY.
< code to be checked for
exception>
CATCH cx1 .cxn [ into
ref].
< exception handling code>.
ENDTRY.
REPORT YSUBCLASS_EXCEPTION.
DATA: i TYPE i VALUE 1.
START-OF-SELECTION.
TRY.
i = i / 0.
CATCHcx_sy_zerodivide.
write:/5 'Divide by zero caught'.
ENDTRY.
Class-Based ExceptionsSAPException Classes (2)
-
8/10/2019 Abap Objects 1oo
112/149
112
Exception Classes (2)
CX_STATIC_CHECK: For exceptions that have to be declared. This type should be chosen if you
want to make sure that this exception is always dealt with and if a localexception handler has a chance to do something useful in an exceptionsituation
Corresponding exceptions must either be handled or forwarded explicitlywith the RAISINGaddition and this is checked at syntax check
CX_DYNAMIC_CHECK: For exceptions that do not have to be declared
Exceptions must be handled or explicitly forwarded with the RAISINGaddition though this is not checked at syntax check. Exceptions of this typeare checked at runtime only
Useful for potential error situations that do not have to be handled, sincethe program logic can more or less exclude them. Example:
cx_sy_zerodivide Most of the CX_SY_exceptions inherit from this class
CX_NO_CHECK:
For exceptions that must not be declared (i.e. resource bottlenecks)
Can be handled but not forwarded with RAISING. Otherwise will bepropagated through call chain automatically
Not checked by syntax checkor runtime processing
SAP Exception Classes
-
8/10/2019 Abap Objects 1oo
113/149
113
p
SAP provided exception-classes are derived from the specific classCX_ROOT and have the prefix CX_.
Exception classes are normal classes with one limitation:-
Apart from the constructor, no methods can be defined for them. However,
CX_ROOT has some pre-defined methods available, which can then be
inherited by all exception classes.
Component Name (M)ethod/(A)ttrib
ute
Description
GET_TEXT M Returns a text description of theexception
GET_SOURCE_POSITION M Returns the point at which theexception occurred
TEXTID A Used to define different texts forexceptions of a particular exceptionclass. Affects the result of themethod GET_TEXT.
SAP Exception Classes
-
8/10/2019 Abap Objects 1oo
114/149
114
p
Component Name (M)ethod/(A)ttri
bute
Description
PREVIOUS A If one exception is mapped toanother, this attribute stores theoriginal exception, which allows thesystem to build a chain ofexceptions.
KERNEL_ERRID A Contains the name of theappropriate runtime error if theexception was triggered from thekernel. If the exception was raisedusing a RAISE EXCEPTION, thisattribute is initial.
TEXTID A Used to define different texts forexceptions of a particular exceptionclass. Affects the result of themethod GET_TEXT.
Nested TryCatchEndtry Blocks
http://sapevent/http://sapevent/ -
8/10/2019 Abap Objects 1oo
115/149
115
y y
Try block
Catch block
Catch block
Cleanup block
TRY.TRY.
CATCH cx_class INTO oref
CATCH cx_class INTO oref
CLEANUP.
ENDTRY.
CATCH cx_class INTO oref.
CATCH cx_class INTO oref.
CLEANUP.
ENDTRY.
.
Try block
Cleanup block
.
Catch block
Catch block
.
CLEANUP
-
8/10/2019 Abap Objects 1oo
116/149
116
Used within a TRYENDTRY
BLOCK , after all CATCH statements.
Each TRY block can contain
maximum of one CLEANUP area.
Used to release the external resourceswhen exception detected in a TRY
block is not handled within the block ,
but is caught further up in the call
hierarchy.
Possible only in cases of nested TRYblocks.
Report ysubdel.
data : w_num type i.
try.
try .
w_num = 5 / 0 .
cleanup.
write:/5 In cleanup.
endtry .
catch cx_sy_zerodivide.
write:/5 Div. By zero!.
endtry.
In cleanup
Div. by zero!
Creating Local Exception Class in a
program
-
8/10/2019 Abap Objects 1oo
117/149
117
program
To create a local exception class in a program and use it, follow the stepsoutlined below.
Step 1:- Create a subclass from global exception class in your program.
REPORT YSUBCLASS_EXCEPTION_3.
CLASS CX_SOME_EXCEPTIONDEFINITION INHERITING FROMCX_STATIC_CHECK.
public section.
methods : meth1.
ENDCLASS.
Creating Local Exception Class in a
program
-
8/10/2019 Abap Objects 1oo
118/149
118
program
Step 2:- Implement methods of the subclass which will raise exception
CLASSCX_SOME_EXCEPTION IMPLEMENTATION.
method : meth1.
write:/5 'I am a method in exception'.
endmethod.
ENDCLASS.
Step 3:- Define another class which will call the exception class.
CLASS SOME_CLASS DEFINITION.
PUBLIC SECTION.
METHODS: m1 raising cx_some_exception .
ENDCLASS.
Creating Local Exception Class in a
program
-
8/10/2019 Abap Objects 1oo
119/149
119
program
Step 4:- Implement the method of the other class which will raiseexception of the locally declared exception class.
CLASS SOME_CLASS IMPLEMENTATION.
METHOD m1.
RAISE EXCEPTION TYPE CX_SOME_EXCEPTION.ENDMETHOD.
ENDCLASS.
Creating Local Exception Class in a
program
-
8/10/2019 Abap Objects 1oo
120/149
120
program
Step 5:- Create an object of the other class and call its method whichwill raise the exception
DATA: c1 TYPE REF TO SOME_CLASS.
START-OF-SELECTION.
TRY.CREATE OBJECT c1.
c1->m1( ).
CATCH CX_some_exception.
write:/5 'Exception caught'.
ENDTRY.
Class-Based ExceptionsDebug Mode
-
8/10/2019 Abap Objects 1oo
121/149
121
Exception has
occurred and has
been handled
Class-Based ExceptionsDebug Mode
-
8/10/2019 Abap Objects 1oo
122/149
122
Trigger point of
exception
Display Exception
Object
-
8/10/2019 Abap Objects 1oo
123/149
Class-Based ExceptionsCreating aGlobal Exception Class (1)
-
8/10/2019 Abap Objects 1oo
124/149
124
Global Exception Class (1)
Enter class name Click Create
Note Superclass
and class type
SE24
Class-Based ExceptionsCreating aGlobal Exception Class (2)
-
8/10/2019 Abap Objects 1oo
125/149
125
Global Exception Class (2)
Note the 2 attributes inherited from cx_root superclass
textidUsed to define different texts for exceptions of a particular
class. Affects the result of method get_textpreviousIf one exception is mapped to another, this attribute can
store the original exception. If a runtime error occurs, the short dump
contains the texts belonging to all the exceptions in the chain
Go to
MethodsTab
Class-Based ExceptionsCreating aGlobal Exception Class (3)
-
8/10/2019 Abap Objects 1oo
126/149
126
Three methods are inherited from CX_ROOT
get_text, get_longtextReturns the textual representation as a string,
according to the system language of the exception
get_source_positionReturns the program name, include name, and line
number reached where the exception was raised
A constructor method is automatically generated
Double click on
the constructor
method to view
code
Class-Based ExceptionsCreating aGlobal Exception Class (4)
-
8/10/2019 Abap Objects 1oo
127/149
127
p ( )
Call to the constructor of superclasses is automatically
generated
Click on
previous
object button
to return tomethods tab
Class-Based ExceptionsCreating aGlobal Exception Class (5)
-
8/10/2019 Abap Objects 1oo
128/149
128
First add an attribute to
the error class and
activate the class
Then return to the
methods tab and click on
the constructor again
Class-Based ExceptionsCreating aGlobal Exception Class (6)
-
8/10/2019 Abap Objects 1oo
129/149
129
A line has been added to the constructor to initialize the new attribute.
This attribute will be available in the error object at runtime and will contain
the value that is passed to the constructor when the exception is raised
Click on
previous
object
button toreturn to
methods tab
Class-Based ExceptionsCreating aGlobal Exception Class (7)
-
8/10/2019 Abap Objects 1oo
130/149
130
Go to the Texts tab and add a text for theexception ID.
Class-Based ExceptionsCreating a Global
Exception Class(8)
-
8/10/2019 Abap Objects 1oo
131/149
131
The texts are stored in the Online Text Repository (OTR). The exceptionobject contains only a key that identifies the text (with system language)
The default text has the same name as the name of the exception class, inthis case ZCX_SOME_EXCEPTION.
You might wish to create an alternate text for the exception. That text can beentered on this screen with a new exception ID and can be displayed bypassing this value to the parameter textid of the exception constructor.
Class-Based ExceptionsCreating aGlobal Exception Class (9)
-
8/10/2019 Abap Objects 1oo
132/149
132
After performing a syntax check and
adding the texts to the OTR, return to the
Attributes tab
-
8/10/2019 Abap Objects 1oo
133/149
-
8/10/2019 Abap Objects 1oo
134/149
134
DAY 8
-
8/10/2019 Abap Objects 1oo
135/149
3 ReasonsABAP Objects is BetterABAP
-
8/10/2019 Abap Objects 1oo
136/149
136
ABAP Objects is more Explicit and Simpler to Use.
ABAP Objects has a Stricter Syntax Check in
Classes.
ABAP Objects Provides Access to New ABAP
Technology.
ABAP Objects is more Explicit andSimpler to Use
-
8/10/2019 Abap Objects 1oo
137/149
137
ABAP Objects is much simpler and less error-prone
because :
Classes contains attributes and methods.
Objects are instances of Classes.
Objects are addressed via references.
Objects have clearly defined interfaces.
Comparison between Procedural ABAPand Object oriented ABAP
-
8/10/2019 Abap Objects 1oo
138/149
138
Procedural ABAP
Contains Obsolete
Statements.
Supports Overlapping
and some specializedobjects.
Shows Implicit Behavior.
Appears difficult to
learn.
Object Oriented ABAP
Prohibits obsolete
statements and additions.
Requires implicit syntax
completions to be explicit.Detecting & preventing
incorrect data handling.
-
8/10/2019 Abap Objects 1oo
139/149
-
8/10/2019 Abap Objects 1oo
140/149
-
8/10/2019 Abap Objects 1oo
141/149
Internal Tables definition
-
8/10/2019 Abap Objects 1oo
142/149
142
Database access
-
8/10/2019 Abap Objects 1oo
143/149
143
Explicit Typing
-
8/10/2019 Abap Objects 1oo
144/149
144
Data Handling
-
8/10/2019 Abap Objects 1oo
145/149
145
Unicode Restrictions
-
8/10/2019 Abap Objects 1oo
146/149
146
-
8/10/2019 Abap Objects 1oo
147/149
ABAP Objects Provides Access toNew ABAP Technology
-
8/10/2019 Abap Objects 1oo
148/149
148
Frameworks for user dialogs such as SAP Control
Framework (CFW), BSP , Desktop Office Integration(DOI) etc.
Framework for persisting data in the database(Object Services) and Shared Objects (area classes).
Service classes such as
CL_GUI_FRONTEND_SERVICES for working withdata at the presentation server.
Language related classes such as Run Time TypeServices (RTTS), or CL_ABAP_EXPIMP subclassesfor extended IMPORT/EXPORT functionality.
-
8/10/2019 Abap Objects 1oo
149/149
Thank You