abap03 abap objects workshop sv en

77
SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 1 Horst Keller SAP AG ABAP Objects

Upload: shadydogv5

Post on 20-Oct-2015

16 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 1

Horst KellerSAP AG

ABAP Objects

Page 2: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 2

Workshop Goals

l Position of ABAP Objects within the R/3 System

l Overview of the syntax of ABAP Objects

l Working with existing classes and interfaces

l Defining classes and interfaces

l Creating objects

l Reacting to events

l Understanding the polymorphism provided by interfaces and inheritance

Page 3: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 3

This is not a comprehensive course in object-oriented programming

SAP‘s training class BC404

Workshop Goals

l There is more to object-oriented development than just object-oriented programming. It has logical advantages that are independent of the concrete implementation.

l The most important (and most time-consuming) part of a real object-oriented application is the object-oriented modeling.

Page 4: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 4

Contents

l Introduction

l From Function Groups to Classes

l Objects and Object Handling

l Classes

l Inheritance

l Interfaces

l Events

l Using Global Classes

l Exercises

Page 5: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 5

Introduction

l Object orientation

l Objects

l ABAP Objects

Page 6: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 6

Function

Function Function Function Function

Data Data

Data Data

Data

Data

MethodMethodMethod

AttributesAttributes

AbstractionAbstraction

MethodsMethods

Functions and data Data model as an abstraction of the

real world

Software objects Object model as anabstraction of the

real world

Real-world objects

Object Orientation

Function Function Function

Page 7: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 7

PublicaccessPrivate

access

Privatecomponents

Interface

l Public events

l Publicattributes

l Public methods

BOOK

Objects

FLIGHT

AirlineFlight numberFlight

Address

Passenger-list

Customer

Page 8: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 8

ABAP Objects

l ABAP Objects is an downwards-compatible extension of the existing ABAP language

l You can use existing ABAP statements within ABAP Objects

l You can use ABAP Objects within existing programs

l ABAP Objects is fully integrated in the ABAP Debugger

l ABAP Objects is an downwards-compatible extension of the existing ABAP language

l You can use existing ABAP statements within ABAP Objects

l You can use ABAP Objects within existing programs

l ABAP Objects is fully integrated in the ABAP Debugger

Page 9: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 9

From Function Groups to Classes

l Instances of function groups as objects

l Example: Function group as counter

Page 10: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 10

External session

DataFunctionmodule

Function group 1

DataFunctionmodule

Function group 2

Internal session of an ABAP program

ABAP program with data

CALL FUNCTION ...

Instances of Function Groups as Objects

Page 11: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 11

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 12: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 12

Function Group as Counter - Call

DATA NUMBER TYPE I VALUE 5.

CALL FUNCTION 'SET_COUNTER' EXPORTINGSET_VALUE = NUMBER.

DO 3 TIMES.CALL FUNCTION 'INCREMENT_COUNTER'.

ENDDO.

CALL FUNCTION 'GET_COUNTER' IMPORTINGGET_VALUE = NUMBER.

DATA NUMBER TYPE I VALUE 5.

CALL FUNCTION 'SET_COUNTER' EXPORTINGSET_VALUE = NUMBER.

DO 3 TIMES.CALL FUNCTION 'INCREMENT_COUNTER'.

ENDDO.

CALL FUNCTION 'GET_COUNTER' IMPORTINGGET_VALUE = NUMBER.

NUMBER has value 8

Page 13: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 13

External session

Internal session of an ABAP program

DatenDaten... Data

...

FunktionsFunktions--bausteinbaustein

nth instance, class m

DataInterface

1st instance, class m

ABAP program with data

DatenDaten... Data

...

SchnittSchnitt--stellestelle

nth instance, class 1

DataInterface

1st instance, class 1

Classes Generalize Function Groups

Page 14: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 14

Classes, References, and Objects

l Example: Class as counter

l Reference variables

l Creating objects

l Calling methods

l Working with references

Page 15: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 15

Example: Class as Counter

CLASS counter DEFINITION.PUBLIC SECTION.

METHODS: set IMPORTINGVALUE(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 IMPORTINGVALUE(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 16: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 16

Reference Variables

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

CNT_1

Page 17: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 17

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 18: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 18

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 19: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 19

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 20: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 20

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 21: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 21

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.

CNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

Page 22: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 22

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.

CNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

Page 23: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 23

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.

CNT_1

CNT_2

CNT_3

2<COUNTER>

1<COUNTER>

Page 24: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 24

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.

CNT_1

CNT_2

CNT_3

1<COUNTER>

Page 25: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 25

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 26: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 26

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: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 27

l Declaring reference variables

l Creating objects

l Accessing attributes and methods

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

Page 28: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 28

Classes in Detail

l Structure of classes

l Components of classes

l Accessing the components

Page 29: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 29

Class c1Class c1

All usersAll users

Privatecomponents

a3, m3, e3

Methodimplementations

Protected componentsa2, m2, e2, …

Public components

a1,m1,e1

CLASS c1 DEFINITION.PUBLIC SECTION.

DATA: a1 …METHODS: m1 …EVENTS: e1 …

PROTECTED SECTION.

PRIVATE SECTION.

ENDCLASS.

CLASS c1 IMPLEMENTATION.

METHOD m1. … ENDMETHOD.

METHOD m2. … ENDMETHOD.

METHOD m3. … ENDMETHOD.

ENDCLASS.

Subclasses of c1

Structure of Classes - Visibility Sections

DATA: a2 …METHODS: m2 …EVENTS: e2 …DATA: a3 …METHODS: m3 …EVENTS: e3 …

Page 30: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 30

CLASS ... DEFINITION....... SECTION.

DATA ... TYPE ... [READ-ONLY] ... CLASS-DATA ... TYPE ... [READ-ONLY] ... CONSTANTS ... TYPE ... VALUE ... ...

ENDCLASS.

CLASS ... DEFINITION....... SECTION.

DATA ... TYPE ... [READ-ONLY] ... CLASS-DATA ... TYPE ... [READ-ONLY] ... CONSTANTS ... TYPE ... VALUE ... ...

ENDCLASS.

Components of Classes: Attributes

l DATA: Instance attributes

l CLASS-DATA: Static attributes

l CONSTANTS: Constants

Page 31: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 31

Static Attributes and Instance Attributes

DATA: cref TYPE REF TO c.

WRITE c=>a1.

CREATE OBJECT cref TYPE c.

WRITE cref->a2.

DATA: cref TYPE REF TO c.

WRITE c=>a1.

CREATE OBJECT cref TYPE c.

WRITE cref->a2.

CREF

1<CLASS>

a2...

CLASSa1...

CLASSa1...

CLASS c DEFINITION.PUBLIC SECTION.

... CLASS-DATA a1(10) TYPE C

VALUE 'Static'.DATA a2(10) TYPE C

VALUE 'Instance'....

ENDCLASS.

CLASS c DEFINITION.PUBLIC SECTION.

... CLASS-DATA a1(10) TYPE C

VALUE 'Static'.DATA a2(10) TYPE C

VALUE 'Instance'....

ENDCLASS.

Page 32: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 32

CLASS ... DEFINITION....... SECTION.

METHODS ... IMPORTING [VALUE] ... TYPE ... [OPTIONAL]EXPORTING [VALUE] ... TYPE ...CHANGING [VALUE] ... TYPE ... [OPTIONAL]RETURNING VALUE(...) TYPE ...EXCEPTIONS ...

CLASS-METHODS ... ...

ENDCLASS.

CLASS ... DEFINITION....... SECTION.

METHODS ... IMPORTING [VALUE] ... TYPE ... [OPTIONAL]EXPORTING [VALUE] ... TYPE ...CHANGING [VALUE] ... TYPE ... [OPTIONAL]RETURNING VALUE(...) TYPE ...EXCEPTIONS ...

CLASS-METHODS ... ...

ENDCLASS.

CLASS ... IMPLEMENTATION.METHOD ...

...ENDMETHOD.

ENDCLASS.

CLASS ... IMPLEMENTATION.METHOD ...

...ENDMETHOD.

ENDCLASS.

Components of Classes: Methods

l METHODS : Instance methods

l CLASS-METHODS: Static methods

Page 33: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 33

CLASS c DEFINITION.PUBLIC SECTION.

METHODS CONSTRUCTOR[IMPORTING arg1 TYPE type ... ].

CLASS-METHODS CLASS_CONSTRUCTOR.

ENDCLASS.

CLASS c DEFINITION.PUBLIC SECTION.

METHODS CONSTRUCTOR[IMPORTING arg1 TYPE type ... ].

CLASS-METHODS CLASS_CONSTRUCTOR.

ENDCLASS.

CLASS c IMPLEMENTATION.METHOD CONSTRUCTOR.

...ENDMETHOD.METHOD CLASS_CONSTRUCTOR.

...ENDMETHOD.

ENDCLASS.

CLASS c IMPLEMENTATION.METHOD CONSTRUCTOR.

...ENDMETHOD.METHOD CLASS_CONSTRUCTOR.

...ENDMETHOD.

ENDCLASS.

PROGRAM … .

DATA o1 TYPE REF TO c. CREATE OBJECT o1 EXPORTING arg1 = v1 ...

PROGRAM … .

DATA o1 TYPE REF TO c. CREATE OBJECT o1 EXPORTING arg1 = v1 ...

Constructors

Page 34: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 34

class=>compclass=>comp

ref–>compref–>comp

Accessing the components of classes

l Instance components

n Instance attribute ref->attr

n Instance method: call method ref->meth

l Static components

n Static attribute: class=>attr

n Static method: call method class=>meth

l Special references in methods

n Self reference: ME->comp

n Pseudo reference SUPER->comp

n<class>

...

ME

Page 35: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 35

Inheritance

l Introduction

l Overview

l Single inheritance

l Redefining methods

l Example: Subclass of superclass counter

Page 36: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 36

n<class3>class1

CREF3

CREF2

CREF1

class2

class3

Inheritance: Introduction

l Definition of a class by inheriting the components from a superclass (Reuse)

l Specialization by adding own components and redefining methods in subclasses

l Polymorphism by accessing subclass objects

Page 37: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 37

Class c1CLASS c1 DEFINITION INHERITING FROM ......ENDCLASS.

CLASS c1 IMPLEMENTATION....

ENDCLASS.

CLASS c2 DEFINITION INHERITING FROM c1....ENDCLASS.

CLASS c2 IMPLEMENTATION....

ENDCLASS.

Class c2

Class OBJECT

Class ...

...

...

Inheritance - Overview

Page 38: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 38

C1 ...

OBJECT

C2...

...

Single Inheritance

Page 39: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 39

CLASS ... DEFINITION INHERITING FROM ...

... SECTION.METHODS ... REDEFINITON ... ...

...

ENDCLASS.

CLASS ... DEFINITION INHERITING FROM ...

... SECTION.METHODS ... REDEFINITON ... ...

...

ENDCLASS.

CLASS ... IMPLEMENTATION.

METHOD ......

ENDMETHOD.

ENDCLASS.

CLASS ... IMPLEMENTATION.

METHOD ......

ENDMETHOD.

ENDCLASS.

Redefining Methods

Semantic rules

l Subclasses must behave just like their superclass for all users of inherited components

l A redefined method must observe the original semantics

l Inheritance should only be used to specialize

Page 40: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 40

CLASS subclass DEFINITION INHERITING FROM superclass.PUBLIC SECTION.

METHODS CONSTRUCTOR IMPORTING ... ...

ENDCLASS.

CLASS subclass DEFINITION INHERITING FROM superclass.PUBLIC SECTION.

METHODS CONSTRUCTOR IMPORTING ... ...

ENDCLASS.CLASS subclass IMPLEMENTATION.

METHOD CONSTRUCTOR....CALL METHOD SUPER->CONSTRUCTOR EXPORTING ......

ENDMETHOD....

ENDCLASS.

CLASS subclass IMPLEMENTATION.METHOD CONSTRUCTOR.

...CALL METHOD SUPER->CONSTRUCTOR EXPORTING ......

ENDMETHOD....

ENDCLASS.

PROGRAM ...

DATA o1 TYPE REF TO subclass. CREATE OBJECT o1 TYPE subclass EXPORTING ...

PROGRAM ...

DATA o1 TYPE REF TO subclass. CREATE OBJECT o1 TYPE subclass EXPORTING ...

Access to staticattributes only

Accress to instance attributes also

Inheritance and Constructors

Page 41: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 41

Subclass for Superclass Counter*

CLASS counter_ten DEFINITION INHERITING FROM counter. PUBLIC SECTION.

METHODS increment REDEFINITION. DATA count_ten.

ENDCLASS.

CLASS counter_ten DEFINITION INHERITING FROM counter. PUBLIC SECTION.

METHODS increment REDEFINITION. DATA count_ten.

ENDCLASS. CLASS counter_ten IMPLEMENTATION. METHOD increment.

DATA modulo TYPE I. CALL METHOD super->increment.modulo = count mod 10.IF modulo = 0.

count_ten = count_ten + 1.ENDIF.

ENDMETHOD. ENDCLASS.

CLASS counter_ten IMPLEMENTATION. METHOD increment.

DATA modulo TYPE I. CALL METHOD super->increment.modulo = count mod 10.IF modulo = 0.

count_ten = count_ten + 1.ENDIF.

ENDMETHOD. ENDCLASS.

DATA: count TYPE REF TO counter.

CREATE OBJECT count TYPE counter_ten.CALL METHOD count->set EXPORTING set_value = number.DO 10 TIMES.

CALL METHOD count->increment.ENDDO.

DATA: count TYPE REF TO counter.

CREATE OBJECT count TYPE counter_ten.CALL METHOD count->set EXPORTING set_value = number.DO 10 TIMES.

CALL METHOD count->increment.ENDDO.

PROTECTED SECTION. DATA count TYPE I.

PROTECTED SECTION. DATA count TYPE I.

*Replace PRIVATE with:

Page 42: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 42

Interfaces

l Introduction

l Overview

l Definition

l Implementation

l Interface references

l Example: Interface for counter

Page 43: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 43

n<class3>

n<class2>

n<class1>iref_line

iref_line

iref_line

iref_tab

Interface

Interfaces: Introduction

l Definition of an interface for a class without implementation

l Classes can implement several interfaces

l Uniform access with interface references

l Polymorphism independent from inheritance

Page 44: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 44

Class c1Class c1

Privatecomponents

a2, m2, e2

Methodimplementations

Protected componentsa3, m3, e3, …

Publiccomponents

CLASS c1 DEFINITION.PUBLIC SECTION.

INTERFACES i1 ...DATA a1 ...

PROTECTED SECTION.PRIVATE SECTION.

ENDCLASS.

CLASS c1 IMPLEMENTATION.

METHOD i1~m1. … ENDMETHOD.

ENDCLASS.

INTERFACE i1.DATA: a1 ...METHODS: m1 ...EVENTS: e1 ...

ENDINTERFACE.

i1~a1,i1~m1,...

a1,...

Interfaces - Overview

All usersAll users Subclasses of c1

Page 45: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 45

INTERFACE ... ....DATA: ... TYPE ... [READ-ONLY] ... CLASS-DATA: ... TYPE ... [READ-ONLY] ... CONSTANTS: ... TYPE ... [VALUE ...]

METHODS: ... IMPORTING [VALUE] ... TYPE ... [OPTIONAL]EXPORTING [VALUE] ... TYPE ...CHANGING [VALUE] ... TYPE ... [OPTIONAL]RETURNING VALUE(...) TYPE ...EXCEPTIONS ...

CLASS-METHODS: ...

EVENTS: ... [EXPORTING VALUE(...) TYPE ... [OPTIONAL]]. CLASS-EVENTS:...

INTERFACES: ...

ENDINTERFACE.

INTERFACE ... ....DATA: ... TYPE ... [READ-ONLY] ... CLASS-DATA: ... TYPE ... [READ-ONLY] ... CONSTANTS: ... TYPE ... [VALUE ...]

METHODS: ... IMPORTING [VALUE] ... TYPE ... [OPTIONAL]EXPORTING [VALUE] ... TYPE ...CHANGING [VALUE] ... TYPE ... [OPTIONAL]RETURNING VALUE(...) TYPE ...EXCEPTIONS ...

CLASS-METHODS: ...

EVENTS: ... [EXPORTING VALUE(...) TYPE ... [OPTIONAL]]. CLASS-EVENTS:...

INTERFACES: ...

ENDINTERFACE.

Interfaces - Definition

Page 46: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 46

CLASS ... DEFINITION.

PUBLIC SECTION.INTERFACES: ... ...

...

ENDCLASS.

CLASS ... DEFINITION.

PUBLIC SECTION.INTERFACES: ... ...

...

ENDCLASS.

CLASS ... IMPLEMENTATION.

METHOD ...~......

ENDMETHOD.

ENDCLASS.

CLASS ... IMPLEMENTATION.

METHOD ...~......

ENDMETHOD.

ENDCLASS.

Interfaces - Implementation

Page 47: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 47

INTERFACE i1. ...

ENDINTERFACE.

CLASS c1 DEFINITION. PUBLIC SECTION.

DATA a1. INTERFACES i1.

ENDCLASS.

CLASS c2 DEFINITION. PUBLIC SECTION.

INTERFACES i1. ENDCLASS.

DATA cnt_c TYPE REF TO c1. DATA: cnt_1 TYPE REF TO i1,

cnt_2 LIKE cnt_1.

CREATE OBJECT: cnt_c TYPE c1,cnt_1 TYPE c2.

MOVE cnt_c to cnt_2.

INTERFACE i1. ...

ENDINTERFACE.

CLASS c1 DEFINITION. PUBLIC SECTION.

DATA a1. INTERFACES i1.

ENDCLASS.

CLASS c2 DEFINITION. PUBLIC SECTION.

INTERFACES i1. ENDCLASS.

DATA cnt_c TYPE REF TO c1. DATA: cnt_1 TYPE REF TO i1,

cnt_2 LIKE cnt_1.

CREATE OBJECT: cnt_c TYPE c1,cnt_1 TYPE c2.

MOVE cnt_c to cnt_2.

1<C2>

CNT_C

1<C1>CNT_1

CNT_2

Interface References

Page 48: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 48

CLASS bicycle DEFINITION. PUBLIC SECTION.

INTERFACES status.METHODS drive.

PRIVATE SECTION. DATA speed TYPE i.

ENDCLASS.

CLASS bicycle DEFINITION. PUBLIC SECTION.

INTERFACES status.METHODS drive.

PRIVATE SECTION. DATA speed TYPE i.

ENDCLASS.

Interface for Object State - Implementation

CLASS counter DEFINITION. PUBLIC SECTION.

INTERFACES status.METHODS increment.

PRIVATE SECTION. DATA count TYPE i.

ENDCLASS.

CLASS counter DEFINITION. PUBLIC SECTION.

INTERFACES status.METHODS increment.

PRIVATE SECTION. DATA count TYPE i.

ENDCLASS.

CLASS bicycle IMPLEMENTATION. METHOD status~write. WRITE: 'Speed of bicycle is',

speed. ENDMETHOD. METHOD drive.

speed = speed + 10. ENDMETHOD.

ENDCLASS.

CLASS bicycle IMPLEMENTATION. METHOD status~write. WRITE: 'Speed of bicycle is',

speed. ENDMETHOD. METHOD drive.

speed = speed + 10. ENDMETHOD.

ENDCLASS.

INTERFACE status. METHODS write.

ENDINTERFACE.

INTERFACE status. METHODS write.

ENDINTERFACE.

CLASS counter IMPLEMENTATION. METHOD status~write. WRITE: 'Count in counter is',

count. ENDMETHOD.METHOD increment.

count = count + 1. ENDMETHOD.

ENDCLASS.

CLASS counter IMPLEMENTATION. METHOD status~write. WRITE: 'Count in counter is',

count. ENDMETHOD.METHOD increment.

count = count + 1. ENDMETHOD.

ENDCLASS.

Page 49: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 49

Interface for Object State - Use

DATA: count TYPE REF TO counter, bike TYPE REF TO bicycle, status TYPE REF TO status.

CREATE OBJECT: count, bike.

DO 5 TIMES.CALL METHOD: count->increment,

bike->drive.ENDDO.

status = count.CALL METHOD status->write.

status = bike.CALL METHOD status->write.

DATA: count TYPE REF TO counter, bike TYPE REF TO bicycle, status TYPE REF TO status.

CREATE OBJECT: count, bike.

DO 5 TIMES.CALL METHOD: count->increment,

bike->drive.ENDDO.

status = count.CALL METHOD status->write.

status = bike.CALL METHOD status->write.

Counter status

Bike speed

Page 50: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 50

Events

l Introduction

l Overview

l Declaring and triggering events

l Event handler methods

l Handling events

l Example: Overflow in counter

Page 51: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 51

2<HANDLER>

1<HANDLER>

1<TRIGGER>

Events - Introduction

l Events are components of classes

l Methods can raise the events of their class

l Handler methods can be triggered by events

Page 52: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 52

Event trigger

CLASS c1 DEFINITION.PUBLIC SECTION.

EVENTS e1 EXPORTING VALUE(p1)TYPE i.

METHODS m1.

PRIVATE SECTION. DATA a1 TYPE i.

ENDCLASS.

CLASS c1 IMPLEMENTATION.METHOD m1.

a1 = ...RAISE EVENT e1

EXPORTING p1 = a1. ENDMETHOD.

ENDCLASS.

CLASS c2 DEFINITION.PUBLIC SECTION.

METHODS m2 FOR EVENT e1 OF c1IMPORTING p1.

PRIVATE SECTION. DATA a2 TYPE i.

ENDCLASS.

CLASS C2 IMPLEMENTATION.METHOD m2.

a2 = p1....

ENDMETHOD.ENDCLASS.

Event handler

Events - Overview

Page 53: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 53

CLASS ... DEFINITION.

... SECTION.

METHODS ...

EVENTS ... [EXPORTING VALUE(...) TYPE ... [OPTIONAL]].

CLASS-EVENTS ...

ENDCLASS.

CLASS ... DEFINITION.

... SECTION.

METHODS ...

EVENTS ... [EXPORTING VALUE(...) TYPE ... [OPTIONAL]].

CLASS-EVENTS ...

ENDCLASS.

CLASS ... IMPLEMENTATION.

METHOD ......RAISE EVENT ... EXPORTING ... = ......

ENDMETHOD.

ENDCLASS.

CLASS ... IMPLEMENTATION.

METHOD ......RAISE EVENT ... EXPORTING ... = ......

ENDMETHOD.

ENDCLASS.

Declaring and Triggering Events

Page 54: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 54

CLASS ... DEFINITION.

... SECTION.

METHODS ... FOR EVENT ... OF ... [IMPORTING ... SENDER ... ].

ENDCLASS.

CLASS ... DEFINITION.

... SECTION.

METHODS ... FOR EVENT ... OF ... [IMPORTING ... SENDER ... ].

ENDCLASS.

CLASS ... IMPLEMENTATION.

METHOD ......

ENDMETHOD.

ENDCLASS.

CLASS ... IMPLEMENTATION.

METHOD ......

ENDMETHOD.

ENDCLASS.

Event Handler Methods

Page 55: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 55

PROGRAM ...

DATA: trigger TYPE REF TO trigger, handler_1 TYPE REF TO handler, handler_2 TYPE REF TO handler.

CREATE OBJECT: trigger, handler_1, handler_2.

SET HANDLER handler_1->handle_event handler_2->handle_event FOR trigger.

CALL METHOD trigger->raise_event.

PROGRAM ...

DATA: trigger TYPE REF TO trigger, handler_1 TYPE REF TO handler, handler_2 TYPE REF TO handler.

CREATE OBJECT: trigger, handler_1, handler_2.

SET HANDLER handler_1->handle_event handler_2->handle_event FOR trigger.

CALL METHOD trigger->raise_event.

Event Handling - Registration

Page 56: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 56

2<HANDLER>

TRIGGER HANDLER_2

HANDLER_1

Event

….

Method

1<TRIGGER>

1<HANDLER>Method

Handling Events - References

Page 57: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 57

Threshold in Counter - Trigger

CLASS counter DEFINITION.PUBLIC SECTION.

METHODS increment.EVENTS critical_value EXPORTING value(excess) TYPE i.

PRIVATE SECTION.DATA: count TYPE i,

threshold TYPE i VALUE 10.ENDCLASS.

CLASS counter DEFINITION.PUBLIC SECTION.

METHODS increment.EVENTS critical_value EXPORTING value(excess) TYPE i.

PRIVATE SECTION.DATA: count TYPE i,

threshold TYPE i VALUE 10.ENDCLASS.

CLASS counter IMPLEMENTATION.METHOD increment.

DATA diff TYPE i.count = count + 1.

IF count > threshold.diff = count - threshold.RAISE EVENT critical_value

EXPORTING excess = diff.ENDIF.

ENDMETHOD.

ENDCLASS.

CLASS counter IMPLEMENTATION.METHOD increment.

DATA diff TYPE i.count = count + 1.

IF count > threshold.diff = count - threshold.RAISE EVENT critical_value

EXPORTING excess = diff.ENDIF.

ENDMETHOD.

ENDCLASS.

Page 58: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 58

Threshold in Counter - Handling

CLASS handler DEFINITION.PUBLIC SECTION.

METHODS handle_excess FOR EVENT critical_value OFcounter IMPORTING excess.

ENDCLASS.

CLASS handler DEFINITION.PUBLIC SECTION.

METHODS handle_excess FOR EVENT critical_value OFcounter IMPORTING excess.

ENDCLASS.

DATA: cnt TYPE REF TO counter,react TYPE REF TO handler.

CREATE OBJECT: cnt, react.

SET HANDLER react->handle_excess FOR ALL INSTANCES.

DO 20 TIMES.CALL METHOD cnt->increment.

ENDDO.

DATA: cnt TYPE REF TO counter,react TYPE REF TO handler.

CREATE OBJECT: cnt, react.

SET HANDLER react->handle_excess FOR ALL INSTANCES.

DO 20 TIMES.CALL METHOD cnt->increment.

ENDDO.

CLASS handler IMPLEMENTATION.METHOD handle_excess.

WRITE: / ’Excess is', excess.ENDMETHOD.

ENDCLASS.

CLASS handler IMPLEMENTATION.METHOD handle_excess.

WRITE: / ’Excess is', excess.ENDMETHOD.

ENDCLASS.

Page 59: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 59

Using Global Classes

l Class pools

l Class Browser and Class Builder

l Class Builder

l Example: Using CL_GUI_PICTURE

Page 60: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 60

TYPES …

CLASS …...

ENDCLASS.

INTERFACE …...

ENDINTERFACE.

TYPES …

CLASS …...

ENDCLASS.

INTERFACE …...

ENDINTERFACE.

CLASS … DEFINITION PUBLIC....

ENDCLASS.

CLASS … DEFINITION PUBLIC....

ENDCLASS.

CLASS … IMPLEMENTATION....

ENDCLASS.

CLASS … IMPLEMENTATION....

ENDCLASS.

Visibility

CLASS-POOL ...

Class Pools

Page 61: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 61

Class Library and Class Browser

Page 62: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 62

Class Builder

Page 63: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 63

CLASS screen_handler DEFINITION.PUBLIC SECTION.METHODS: handle_node_double_click

FOR EVENT node_double_clickOF cl_gui_simple_treeIMPORTING node_key.

PRIVATE SECTION.DATA: html_viewer TYPE REF TO cl_gui_html_viewer,...

CREATE OBJECT: html_viewer EXPORTING parent = container,...

SET HANDLER event_handler->handle_node_double_click FOR tree....

CLASS screen_handler DEFINITION.PUBLIC SECTION.METHODS: handle_node_double_click

FOR EVENT node_double_clickOF cl_gui_simple_treeIMPORTING node_key.

PRIVATE SECTION.DATA: html_viewer TYPE REF TO cl_gui_html_viewer,...

CREATE OBJECT: html_viewer EXPORTING parent = container,...

SET HANDLER event_handler->handle_node_double_click FOR tree....

CLASS screen_handler IMPLEMENTATION.METHOD handle_node_double_click....CALL METHOD html_viewer->show_url EXPORTING url = url.

...ENDMETHOD.ENDCLASS.

CLASS screen_handler IMPLEMENTATION.METHOD handle_node_double_click....CALL METHOD html_viewer->show_url EXPORTING url = url.

...ENDMETHOD.ENDCLASS.

Using Global Classes

Page 64: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 64

CL_GUI_PICTURE and CL_GUI_SIMPLE_TREE

Page 65: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 65

Mouse Click

Page 66: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 66

CL_GUI_HTML_VIEWER

Page 67: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 67

Further Information

l Keyword documentation

l Example Library

Page 68: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 68

KeywordDocumentation

ABAP Keyword Documentation

Further Information

Page 69: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 69

Further Information

Example Library

Page 70: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 70

Exercises

1. Defining classes

2. Creating objects

3. Deriving classes using inheritance

4. Using interfaces

5. Triggering and handling events

Page 71: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 71

Exercises - Scenario

Interface StatusWith methods fordisplaying attributes

Class "Truck" with its own maximum speed and attribute output

Class "Helicopter"Can handle eventsfrom ship

Class "Ship"with its own maximum speed and attribute output, a name, and an event

Class "Vehicle"with attribute for speed, and a method for changing it

Page 72: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 72

Exercise 1 - Classes

l Copy the template ABAP_OBJECTS_ENJOY_0 into an own program.

l Define a local class VEHICLE in the designated area in front of the predefined class MAIN.

l Class VEHICLE should have the protected instance attributes SPEED and MAX_SPEED for its speed and maximum speed, and the public methods SPEED_UP, STOP, and WRITE.

l SPEED_UP should have an IMPORTING parameter STEP. The method should increase the speed by STEP, but not allow it to exceed the maximum speed.

l STOP should reset the speed to zero.

l WRITE should display a list line containing the speed and the maximum speed.

Page 73: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 73

Exercise 2 - Objects

l Continuing the program from exercise 1, create objects from the class VEHICLE.

l Program the respective coding in the predefined method START ofclass MAIN.

l Define a reference variable VEHICLE with type VEHICLE, and an internal table VEHICLE_TAB, whose line type is also a reference variable to this class.

l In a DO loop, create a number of instances of the class VEHICLE and insert them into the internal table.

l In a LOOP construction, call the methods SPEED_UP and WRITE once for each entry in the internal table. When you call SPEED_UP, pass the value SY-TABIX * 10 to the parameter STEP.

Page 74: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 74

Exercise 3 - Inheritance

l Change your program from exercise 2 to define classes TRUCK and SHIP as direct subclasses of VEHICLE.

l The class TRUCK should have an instance constructor and redefine the method WRITE.

l The class SHIP should have an IMPORTING parameter NAME, a new public attribute NAME, and should also redefine the method WRITE.

l The instance constructor of each class should change the maximum speed. The instance constructor of SHIP should set the attribute NAME to the actual parameter that you imported.

l The WRITE method should show the class from which the display comes. For SHIP, use the NAME attribute.

l Declare extra reference variables TRUCK and SHIP for the new classes.

l You can delete the code that creates objects for VEHICLE. Instead, create one instance of each of your new classes and place the corresponding reference into VEHICLE_TAB.

l Call the method SPEED_UP for both classes using the correct subclass reference, and WRITE using a superclass reference.

Page 75: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 75

Exercise 4 - Interfaces

l Change your program from exercise 3 so that the method WRITE is contained in an interface STATUS.

l The class VEHICLE should implement the interface instead of its own WRITE method. The name must be changed accordingly in each implementation (including the subclasses), but the function remains the same.

l Replace the reference variables VEHICLE and the table VEHICLE_TAB with the interface reference STATUS and internal table STATUS_TAB.

l Use these references to display the status of the objects.

l Create a new class HELICOPTER that also implements STATUS. Declare an alias WRITE in that class for the interface method.

l The interface method in HELICOPTER should display a different line from that displayed in VEHICLE.

l Declare a reference variable HELI for the class HELICOPTER, create acorresponding object, and insert the reference variable into the tableSTATUS_TAB.

Page 76: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 76

Exercise 5 - Events

l Change your program from exercise 4 to include an event DAMAGED for the class SHIP.

l Redefine the method SPEED_UP in the class SHIP.

l When the maximum speed is exceeded, SPEED_UP should set the maximum speed to zero and trigger the event DAMAGED.

l Add a new method RECEIVE to the class HELICOPTER to allow it to handle the event DAMAGED. Import the implicit parameter SENDER.

l RECEIVE should use the SENDER parameter to display the name of the ship that triggered the event.

l Register the handler method of the object to which HELI is pointing as a handler for objects from the class SHIP.

l Increase the speed of the object from the class SHIP until it exceeds the maximum speed and triggers the event.

Page 77: ABAP03 ABAP Objects Workshop Sv En

SAP Labs, Inc. SAP TechEd 2000 June 20–23, 2000 ABAP03.ppt/ 77

Copyright 2000 SAP AG (All rights reserved)

l Some software products marketed by SAP AG and its distributors contain proprietary software components of other software vendors.

l Microsoft®, WINDOWS®, NT®, EXCEL®, Word® and SQL-Server® are registered trademarks of Microsoft Corporation.

l IBM®, DB2®, OS/2®, DB2/6000®, Parallel Sysplex®, MVS/ESA®, RS/6000®, AIX®, S/390®, AS/400®, OS/390®, and OS/400® are registered trademarks of IBM Corporation.

l OSF/Motif® is a registered trademark of Open Software Foundation.

l ORACLE® is a registered trademark of ORACLE Corporation, California, USA.

l INFORMIX®-OnLine for SAP is a registered trademark of Informix Software Incorporated.

l UNIX®, X/Open®, OSF/1®, and Motif® are registered trademarks of The Open Group.

l ADABAS® is a registered trademark of Software AG.

l SAP, SAP-Logo, mySAP.com, R/2, R/3, RIVA, ABAP, SAP-EDI, SAP Business Workflow, SAP EarlyWatch, SAP ArchiveLink, ALE/WEB, BAPI, SAPPHIRE, Management Cockpit, SEM, are trademarks or registered trademarks of SAP AG in Germany and in several other countries all over the world. All other products mentioned are trademarks or registered trademarks of their respective companies.