Vous êtes sur la page 1sur 27

ABAP Objects

Workshop

Vinitha Rajan
Intelligroup Asia Ltd.
 Intelligroup Asia Ltd., Technology Team
 SAP AG
Topics Covered

 Object orientation
 Objects & Object References
 ABAP Objects

 Intelligroup Asia Ltd., Technology Team


Object Orientation

Data Data Data

Attributes Data
Data Data

Abstraction

Function

Methods Method
Method
Function Function Function
Method

Function Function Function Function

Functions and data Software objects Real-world objects


Data model as an Object model as an
abstraction of the abstraction of the
real world real world

 Intelligroup Asia Ltd., Technology Team


Objects & Object References

Interface
 Public
Private
components
attributes
Airline
Flight
Flight number Public
Private Customer Address  Public access
methods
access Passenger-
list BOOK

 Public
events
FLIGHT

 Intelligroup Asia Ltd., Technology Team


ABAP Objects

 ABAP Objects is an upwards-compatible extension


of the existing ABAP language
 You can use existing ABAP statements within
ABAP Objects
 You can use ABAP Objects within existing programs
 ABAP Objects is fully integrated in the
ABAP Debugger

 Intelligroup Asia Ltd., Technology Team


From Function Groups to Classes

 Instances of function groups as objects


 Example: Function group as counter

 Intelligroup Asia Ltd., Technology Team


Instances of Function Groups as Objects

Function group 1 Function group 2

Function Data Function Data


module module
… …

ABAP program with data

CALL FUNCTION ...

Internal session of an ABAP program


External session

 Intelligroup Asia Ltd., Technology Team


Function Group as Counter - Definition

FUNCTION-POOL COUNTER.
DATA COUNT TYPE I.
FUNCTION SET_COUNTER.
* Local Interface IMPORTING VALUE(SET_VALUE)
COUNT = SET_VALUE.
ENDFUNCTION.
FUNCTION INCREMENT_COUNTER.
COUNT = COUNT + 1.
ENDFUNCTION.
FUNCTION GET_COUNTER.
* Local Interface: EXPORTING VALUE(GET_VALUE)
GET_VALUE = COUNT.
ENDFUNCTION.

 Intelligroup Asia Ltd., Technology Team


Function Group as Counter - Call

DATA NUMBER TYPE I VALUE 5.


CALL FUNCTION 'SET_COUNTER' EXPORTING
SET_VALUE = NUMBER.
DO 3 TIMES.
CALL FUNCTION 'INCREMENT_COUNTER'.
ENDDO.
CALL FUNCTION 'GET_COUNTER' IMPORTING
GET_VALUE = NUMBER.

NUMBER has value 8

 Intelligroup Asia Ltd., Technology Team


Classes Generalize Function Groups

nth instance, class 1 nth instance, class m


1st instance, class 1 1st instance, class m
Daten Daten
Interface
...
Data Interface
...
Data
...

Interface Data
...

Interface Data …

… …

ABAP program with data

Internal session of an ABAP program


External session

 Intelligroup Asia Ltd., Technology Team


Classes, References, and Objects

 Example: Class as counter


 Reference variables
 Creating objects
 Calling methods
 Working with references

 Intelligroup Asia Ltd., Technology Team


Example: Class as 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.
count = count + 1.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.

 Intelligroup Asia Ltd., Technology Team


Reference Variables

DATA: cnt_1 TYPE REF TO counter.

CNT_1
 Intelligroup Asia Ltd., Technology Team
Creating an Object

DATA: cnt_1 TYPE REF TO counter.

CREATE OBJECT cnt_1 TYPE counter.

1<COUNTER>

CNT_1
 Intelligroup Asia Ltd., Technology Team
Calling Methods

DATA: cnt_1 TYPE REF TO counter.


DATA number TYPE I VALUE 5.
CREATE OBJECT cnt_1 TYPE counter.
CALL METHOD cnt_1->set
EXPORTING set_value = number.
DO 3 TIMES.
CALL METHOD
cnt_1->increment.
ENDDO.
CALL METHOD cnt_1->get 1<COUNTER>
IMPORTING get_value = number.

NUMBER has the value 8


CNT_1
 Intelligroup Asia Ltd., Technology Team
Several Reference Variables

DATA: cnt_1 TYPE REF TO counter,


cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter.

CNT_3

CNT_2

CNT_1
 Intelligroup Asia Ltd., Technology Team
Several Objects

DATA: cnt_1 TYPE REF TO counter,


cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter.
CREATE OBJECT: cnt_1,
cnt_2.
2<COUNTER>

1<COUNTER>

CNT_3

CNT_2

CNT_1
 Intelligroup Asia Ltd., Technology Team
Assigning Reference Variables

DATA: cnt_1 TYPE REF TO counter,


cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter.
CREATE OBJECT: cnt_1,
cnt_2.
2<COUNTER>
MOVE cnt_2 TO cnt_3.

1<COUNTER>

CNT_3

CNT_2

CNT_1
 Intelligroup Asia Ltd., Technology Team
Deleting Reference Variables

DATA: cnt_1 TYPE REF TO counter,


cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter.
CREATE OBJECT: cnt_1,
cnt_2.
MOVE cnt_2 TO cnt_3.
CLEAR cnt_2. 2<COUNTER>

1<COUNTER>
CNT_3

CNT_2

CNT_1
 Intelligroup Asia Ltd., Technology Team
Garbage Collection

DATA: cnt_1 TYPE REF TO counter,


cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter.
CREATE OBJECT: cnt_1,
cnt_2.
2<COUNTER>
MOVE cnt_2 TO cnt_3.
CLEAR cnt_2.
cnt_3 = cnt_1.
1<COUNTER>

CNT_3

CNT_2

CNT_1
 Intelligroup Asia Ltd., Technology Team
Garbage Collection

DATA: cnt_1 TYPE REF TO counter,


cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter.
CREATE OBJECT: cnt_1,
cnt_2.
MOVE cnt_2 TO cnt_3.
2<COUNTER>
CLEAR cnt_2.
cnt_3 = cnt_1. 1<COUNTER>
CLEAR cnt_3.

CNT_3

CNT_2

CNT_1
 Intelligroup Asia Ltd., Technology Team
New Objects

DATA: cnt_1 TYPE REF TO counter,


3<COUNTER>
cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter.
CREATE OBJECT: cnt_1,
2<COUNTER>
cnt_2.
MOVE cnt_2 TO cnt_3.
CLEAR cnt_2.
cnt_3 = cnt_1. 1<COUNTER>

CLEAR cnt_3.
CREATE OBJECT: cnt_2, CNT_3

cnt_3. CNT_2

CNT_1
 Intelligroup Asia Ltd., Technology Team
Example: Class Identity

CLASS counter DEFINITION.


PUBLIC SECTION.
METHODS: set IMPORTING
VALUE(set_value) TYPE i,
increment,
get EXPORTING
VALUE(get_value) TYPE i.
PUBLIC SECTION.
DATA count TYPE i.
ENDCLASS. CLASS counter IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
count = count + 1.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.

 Intelligroup Asia Ltd., Technology Team


Identity

DATA: cnt_1 TYPE REF TO counter,


cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter.
DATA number TYPE I VALUE 5.
CREATE OBJECT: cnt_1,
cnt_2. 2<COUNTER>

CALL METHOD cnt_1->set


EXPORTING set_value = number.
CALL METHOD cnt_2->set 1<COUNTER>
EXPORTING set_value = number.
* Reference Semantics
CNT_3
If cnt_1 = cnt_2.
* This will not be executed CNT_2
endif
CNT_1
 Intelligroup Asia Ltd., Technology Team
Identity (Contd.)

* Attribute values are the same!!!


If cnt_1->count = cnt_2->count.
* This will be executed 2<COUNTER>
Endif
cnt_3 = cnt_1
If cnt_3 = cnt_1. 1<COUNTER>
* This will be executed
Endif. CNT_3

CNT_2

CNT_1
 Intelligroup Asia Ltd., Technology Team
Methods of Several Objects

DATA: cnt_1 TYPE REF TO counter,


cnt_2 TYPE REF TO counter,
3<COUNTER>
cnt_3 TYPE REF TO counter.
CREATE OBJECT: cnt_1,
cnt_2,
2<COUNTER>
cnt_3.
CALL METHOD cnt_1->set
EXPORTING set_value = 1.
CALL METHOD cnt_2->set 1<COUNTER>
EXPORTING set_value = 10.
CALL METHOD cnt_3->set
EXPORTING set_value = 100. CNT_3

CNT_2
The value of COUNT is
different in each object CNT_1
 Intelligroup Asia Ltd., Technology Team
Objects: Summary

 Declaring reference variables

DATA: ref1 TYPE REF TO class,


ref2 TYPE REF TO class.

 Creating objects

CREATE OBJECT: ref1, ref2.

 Accessing attributes and methods

x = ref1->attr + ref2->attr.
CALL METHOD ref1->method EXPORTING ...

 Object References and identities

 Intelligroup Asia Ltd., Technology Team

Vous aimerez peut-être aussi