ABAP Objects

27
Intelligroup Asia Ltd., Technology Team Vinitha Rajan Intelligroup Asia Ltd. SAP AG ABAP Objects Workshop

Transcript of ABAP Objects

Page 1: ABAP Objects

Intelligroup Asia Ltd., Technology Team

Vinitha RajanIntelligroup Asia Ltd.

SAP AG

ABAP Objects Workshop

Page 2: ABAP Objects

Intelligroup Asia Ltd., Technology Team

Topics Covered

Object orientation

Objects & Object References

ABAP Objects

Page 3: ABAP Objects

Intelligroup Asia Ltd., Technology Team

Real-world objects

Data

MethodMethodMethod

Software objects Object model as anabstraction of the

real world

Object Orientation

Function

FunctionFunction Function Function

Data Data

Data Data

Data

Functions and data Data model as an abstraction of the

real world

Function Function Function

MethodsMethods

AttributesAttributes

Abstraction Abstraction

Page 4: ABAP Objects

Intelligroup Asia Ltd., Technology Team

Objects & Object References

Privateaccess

Privatecomponents

Flight

Address

Passenger-list

Customer

Publicaccess

Interface

Public events

Public attributes

Public methods

BOOK

AirlineFlight number

FLIGHT

Page 5: ABAP Objects

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

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

Page 6: ABAP Objects

Intelligroup Asia Ltd., Technology Team

From Function Groups to Classes

Instances of function groups as objects

Example: Function group as counter

Page 7: ABAP Objects

Intelligroup Asia Ltd., Technology Team

External session

… …

Internal session of an ABAP program

ABAP program with data

CALL FUNCTION ...

ABAP program with data

CALL FUNCTION ...

Instances of Function Groups as Objects

DataFunctionmodule

Function group 1

DataFunctionmodule

Function group 2

Page 8: ABAP Objects

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.

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.

Page 9: ABAP Objects

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.

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

Page 10: ABAP Objects

Intelligroup Asia Ltd., Technology Team

External session

Internal session of an ABAP program

DatenDatenDatenDaten... Data

...

InterfaceInterface

nth instance, class m

DatenDatenDatenDaten... Data

...

InterfaceInterface

nth instance, class 1

Classes Generalize Function Groups

ABAP program with dataABAP program with data

DataInterface

1st instance, class m

DataInterface

1st instance, class 1

Page 11: ABAP Objects

Intelligroup Asia Ltd., Technology Team

Classes, References, and Objects

Example: Class as counter

Reference variables

Creating objects

Calling methods

Working with references

Page 12: ABAP Objects

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 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.

CLASS counter IMPLEMENTATION. METHOD set. count = set_value. ENDMETHOD. METHOD increment. count = count + 1. ENDMETHOD. METHOD get. get_value = count. ENDMETHOD.ENDCLASS.

Page 13: ABAP Objects

Intelligroup Asia Ltd., Technology Team

Reference Variables

DATA: cnt_1 TYPE REF TO counter.DATA: cnt_1 TYPE REF TO counter.

CNT_1

Page 14: ABAP Objects

Intelligroup Asia Ltd., Technology Team

Creating an Object

DATA: cnt_1 TYPE REF TO counter.

CREATE OBJECT cnt_1 TYPE counter.

DATA: cnt_1 TYPE REF TO counter.

CREATE OBJECT cnt_1 TYPE counter.

CNT_1

1<COUNTER>

Page 15: ABAP Objects

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 IMPORTING get_value = number.

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 IMPORTING get_value = number.

CNT_1

1<COUNTER>

NUMBER has the value 8

Page 16: ABAP Objects

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.

DATA: cnt_1 TYPE REF TO counter,

cnt_2 TYPE REF TO counter,

cnt_3 TYPE REF TO counter.

CNT_1

CNT_2

CNT_3

Page 17: ABAP Objects

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.

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.

CNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

Page 18: ABAP Objects

Intelligroup Asia Ltd., Technology Team

CNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

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.

MOVE cnt_2 TO cnt_3.

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.

Page 19: ABAP Objects

Intelligroup Asia Ltd., Technology Team

CNT_2

CNT_3

2<COUNTER>

CNT_1

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.

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.

1<COUNTER>

Page 20: ABAP Objects

Intelligroup Asia Ltd., Technology Team

CNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

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.

CLEAR cnt_2.

cnt_3 = cnt_1.

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.

cnt_3 = cnt_1.

Page 21: ABAP Objects

Intelligroup Asia Ltd., Technology Team

CNT_1

CNT_2

CNT_3

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.

CLEAR cnt_2.

cnt_3 = cnt_1.

CLEAR cnt_3.

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.

cnt_3 = cnt_1.

CLEAR cnt_3.

2<COUNTER>

1<COUNTER>

Page 22: ABAP Objects

Intelligroup Asia Ltd., Technology Team

3<COUNTER>

New 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.

MOVE cnt_2 TO cnt_3.

CLEAR cnt_2.

cnt_3 = cnt_1.

CLEAR cnt_3.

CREATE OBJECT: cnt_2,

cnt_3.

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.

cnt_3 = cnt_1.

CLEAR cnt_3.

CREATE OBJECT: cnt_2,

cnt_3.

CNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

Page 23: ABAP Objects

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 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.

CLASS counter IMPLEMENTATION. METHOD set. count = set_value. ENDMETHOD. METHOD increment. count = count + 1. ENDMETHOD. METHOD get. get_value = count. ENDMETHOD.ENDCLASS.

Page 24: ABAP Objects

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.

CALL METHOD cnt_1->set EXPORTING set_value = number.

CALL METHOD cnt_2->set EXPORTING set_value = number.

* Reference Semantics

If cnt_1 = cnt_2.

* This will not be executed

endif

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.

CALL METHOD cnt_1->set EXPORTING set_value = number.

CALL METHOD cnt_2->set EXPORTING set_value = number.

* Reference Semantics

If cnt_1 = cnt_2.

* This will not be executed

endifCNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

Page 25: ABAP Objects

Intelligroup Asia Ltd., Technology Team

Identity (Contd.)

* Attribute values are the same!!!

If cnt_1->count = cnt_2->count.

* This will be executed

Endif

cnt_3 = cnt_1

If cnt_3 = cnt_1.

* This will be executed

Endif.

* Attribute values are the same!!!

If cnt_1->count = cnt_2->count.

* This will be executed

Endif

cnt_3 = cnt_1

If cnt_3 = cnt_1.

* This will be executed

Endif.

CNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

Page 26: ABAP Objects

Intelligroup Asia Ltd., Technology Team

3<COUNTER>

Methods of 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,

cnt_3.

CALL METHOD cnt_1->set EXPORTING set_value = 1.

CALL METHOD cnt_2->set EXPORTING set_value = 10.

CALL METHOD cnt_3->set EXPORTING set_value = 100.

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,

cnt_3.

CALL METHOD cnt_1->set EXPORTING set_value = 1.

CALL METHOD cnt_2->set EXPORTING set_value = 10.

CALL METHOD cnt_3->set EXPORTING set_value = 100.

CNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

The value of COUNT is different in each object

Page 27: ABAP Objects

Intelligroup Asia Ltd., Technology Team

Declaring reference variables

Creating objects

Accessing attributes and methods

Object References and identities

DATA: ref1 TYPE REF TO class, ref2 TYPE REF TO class.DATA: ref1 TYPE REF TO class, ref2 TYPE REF TO class.

CREATE OBJECT: ref1, ref2.CREATE OBJECT: ref1, ref2.

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

Objects: Summary