35
R SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

Embed Size (px)

Citation preview

Page 1: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1

ABAP Objects

Page 2: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 2

ABAP Objects

ABAP Objects as a strategic SAP technology

Programming with objects, classes, and interfaces in ABAP

Interoperability with other object systems

R

Page 3: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 3

Positioning ABAP Objects

Benefits of object orientation

Current situation

External interoperability

ABAP programming

What are ABAP Objects ?

Benefits of ABAP Objects

R

Page 4: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 4

Benefits of Object Orientation

Encapsulation - outside vs. inside

Explicit interfaces

Control of complexity and dependencies

Reuse - of components and by inheritance

Maintainability

Interoperability across languages (Java, VB, ...) and object systems (DCOM/CORBA)

Foundation for patterns and frameworks

Page 5: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 5

Current Interoperability Technology

BOR (Business Object Repository)

Foundation for DCOM/CORBA connection

Fully featured standard object model

Medium level object wrappers for business functionality written in standard ABAP

BAPIs (Business APIs)

Defined within the BOR

Function-oriented, stable interfaces to R/3 applications

Support for Internet applications

Page 6: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 6

Current ABAP Programming

Complexity reduction by powerful high-level programming constructs

Procedural abstraction (function library)

Data abstraction (type pools, complex data types)

Logical databases for hierarchical data access

Event-oriented programming with logical databases and interactive reporting

Fully integrated SQL interface

In-memory tables: fast key access, sorted and/or nested, group control, ...

...R

Page 7: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 7

What Are ABAP Objects ?

Complete integration of a fully featured object model into the ABAP programming language

100% upward-compatible extension of ABAP/4

Bottom up: use objects in existing ABAP programs (reports, module- and function-pools)

Top down: call forms and functions from within objects

All ABAP language constructs are available within objects

Fully integrated into the ABAP Workbench

Class library for global classes (will absorb BOR)

Page 8: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 8

Benefits of ABAP Objects

Identical object model for external access and internal usage

Seamless object model from analysis through design to implementation

Kernel-embedded foundation for objects

Make OO benefits available for the implementation of the world’s largest business application

True two-way interoperability: ABAP <=> Java, ABAP <=> VB, ...

Speed, speed, speed !

Enabling technology for GUI programming with frontend controls (ActiveX, JavaBeans)

Page 9: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 9

ABAP Objects

ABAP Objects as a strategic SAP technology

Programming with objects, classes, and interfaces in ABAP

Interoperability with other object systems

R

Page 10: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 10

Fundamentals: Objects vs. Data & Functions

Objects occur 'naturally' in the world. We want to model our software accordingly

E.g.: Transportation company: trucks (various kinds), loads (various), etc.

Functions and data

‘Big common data structure’ and some common functions

Lots of CASE statements, sparsely filled data structures

Objects: car, truck, load, …

Various kinds of everything, objects for truck, load, …

Object: data and functions that belong together to model / implement a specific concept

Fewer CASE statements, densely filled data, cohesion

Page 11: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 11

Fundamentals: What Is an Object ?

Objects have…

...state, described by its attributes

...behavior, described by its methods

...identity to distinguish them from other objects with same state and behavior

Objects can interact with each other...

...by accessing (public) attributes

...by calling methods

...by raising or handling events

Objects are instances of classes

R

Page 12: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 12

The ABAP Object

Classes…

...specify behavior of ‘same kind of’ objects

...define how objects can be accessed from outside (public vs. protected vs. private)

...hide implementation details

...may be specialized in subclasses

CLASS class DEFINITION [ INHERITNG FROM superclass ].

[ PUBLIC SECTION. ...<definition of public components> ] [ PROTECTED SECTION. ...<definition of protected components> ] [ PRIVATE SECTION. ...<definition of private components> ]ENDCLASS.

CLASS class IMPLEMENTATION. [...<method implementations> ]ENDCLASS.

CLASS class DEFINITION [ INHERITNG FROM superclass ].

[ PUBLIC SECTION. ...<definition of public components> ] [ PROTECTED SECTION. ...<definition of protected components> ] [ PRIVATE SECTION. ...<definition of private components> ]ENDCLASS.

CLASS class IMPLEMENTATION. [...<method implementations> ]ENDCLASS.

Page 13: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 13

An Example

CLASS CTruck DEFINITION. PUBLIC SECTION. DATA: VehicleId TYPE I READ-ONLY.

METHODS: LoadParcel IMPORTING Parcel TYPE REF TO CParcel,

UnloadParcel … PRIVATE SECTION. DATA: ParcelTab TYPE REF TO CParcel OCCURS 0.ENDCLASS.

CLASS CTruck IMPLEMENTATION. METHOD LoadParcel. APPEND Parcel TO ParcelTab. “-- do more stuff … ENDMETHOD.ENDCLASS.

CLASS CTruck DEFINITION. PUBLIC SECTION. DATA: VehicleId TYPE I READ-ONLY.

METHODS: LoadParcel IMPORTING Parcel TYPE REF TO CParcel,

UnloadParcel … PRIVATE SECTION. DATA: ParcelTab TYPE REF TO CParcel OCCURS 0.ENDCLASS.

CLASS CTruck IMPLEMENTATION. METHOD LoadParcel. APPEND Parcel TO ParcelTab. “-- do more stuff … ENDMETHOD.ENDCLASS.

PROGRAM xy. DATA: Parcel TYPE REF TO CParcel, Truck1 TYPE REF TO CTruck, Truck2 TYPE REF TO CTruck.

… “-- get input data for parcel from somewhere … CREATE OBJECT Parcel. CALL METHOD Parcel->SetPars EXPORTING Weight = In_weight.

“--- deal with multiple instances CALL METHOD Truck1->UnloadParcel IMPORTING Parcel = Parcel. CALL METHOD Truck2->LoadParcel( Parcel ).

PROGRAM xy. DATA: Parcel TYPE REF TO CParcel, Truck1 TYPE REF TO CTruck, Truck2 TYPE REF TO CTruck.

… “-- get input data for parcel from somewhere … CREATE OBJECT Parcel. CALL METHOD Parcel->SetPars EXPORTING Weight = In_weight.

“--- deal with multiple instances CALL METHOD Truck1->UnloadParcel IMPORTING Parcel = Parcel. CALL METHOD Truck2->LoadParcel( Parcel ).

Page 14: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 14

Some Important Points

Objects are created dynamically

Storage management, garbage collection

Access to objects via object reference only!!!

Distinguish instances by object reference

Only and explicit means of dependency

Sharing always and only via (object) references(similar to field-symbols; all other ABAP types are value-based!)

Internal data hidden from users

Private data accessible only by the object’s methods

Page 15: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 15

Component Definitions

Attributes…

...store the internal state of an object (data)

...can be references to other objects

…can be: read-only, virtual, class attributes

…can be constants

Virtual attributes: ‘Attribute’ from the outside, inside the object Set- and Get-methods. Dynamic control of Set-/Get-methods.

{DATA|CLASS-DATA} attr TYPE type [ VALUE val ] [ READ-ONLY ] [ VIRTUAL [ SET-METHOD set-method] [GET-METHOD get-method] ].

CONSTANTS const TYPE type VALUE val.

{DATA|CLASS-DATA} attr TYPE type [ VALUE val ] [ READ-ONLY ] [ VIRTUAL [ SET-METHOD set-method] [GET-METHOD get-method] ].

CONSTANTS const TYPE type VALUE val.

Page 16: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 16

Component Definitions

Methods…

…are operations on objects (the ‘functionality’)

…are the only way to change the state of an object (other than public attributes)

...have parameters and can raise exceptions (similar to function modules)

...can pass back a return value

No method-name overloading!

{METHODS|CLASS-METHODS} method [ IMPORTING ...<list of import parameters> ] [ EXPORTING ...<list of export parameters> ] [ CHANGING ...<list of import/export parameters> ] [ EXCEPTIONS ...<list of exceptions> ] [ RETURNING result TYPE t ].

{METHODS|CLASS-METHODS} method [ IMPORTING ...<list of import parameters> ] [ EXPORTING ...<list of export parameters> ] [ CHANGING ...<list of import/export parameters> ] [ EXCEPTIONS ...<list of exceptions> ] [ RETURNING result TYPE t ].

Page 17: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 17

Using Attributes and Methods

CLASS c1 DEFINITION.

PUBLIC SECTION.

DATA: v1 TYPE I,

o1 TYPE REF TO c1. METHODS: m1 IMPORTING a1 TYPE REF TO c1, m2 IMPORTING a1 TYPE REF TO c1 RETURNING result TYPE I.

PRIVATE SECTION. DATA: v2 TYPE I.ENDCLASS.

CLASS c1 DEFINITION.

PUBLIC SECTION.

DATA: v1 TYPE I,

o1 TYPE REF TO c1. METHODS: m1 IMPORTING a1 TYPE REF TO c1, m2 IMPORTING a1 TYPE REF TO c1 RETURNING result TYPE I.

PRIVATE SECTION. DATA: v2 TYPE I.ENDCLASS.

PROGRAM xy. DATA o1 TYPE REF TO c1. … “--- attribute can occur anywhere a ‘normal variable’ can occur CREATE OBJECT o1. x = o1->v1 + sin( o1-> v1 ). CALL FUNCTION 'abc' EXPORTING p1 = o1->v1 … .

“--- some method calls … CALL METHOD o1->m1 EXPORTING a1 = o1. CALL METHOD o1->m1( o1 ). “-- short form for 1 exporting arg … y = obj1->m2( x ). “-- result can be used in expressions …

PROGRAM xy. DATA o1 TYPE REF TO c1. … “--- attribute can occur anywhere a ‘normal variable’ can occur CREATE OBJECT o1. x = o1->v1 + sin( o1-> v1 ). CALL FUNCTION 'abc' EXPORTING p1 = o1->v1 … .

“--- some method calls … CALL METHOD o1->m1 EXPORTING a1 = o1. CALL METHOD o1->m1( o1 ). “-- short form for 1 exporting arg … y = obj1->m2( x ). “-- result can be used in expressions …

Page 18: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 18

Component Definitions

Events...

...occur at a particular point in time, e.g. ‘change in state of an object’

...can be raised to inform other interested objects

...can pass parameters

EVENTS event [ EXPORTING ...<list of export parameters> ].EVENTS event [ EXPORTING ...<list of export parameters> ].

Page 19: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 19

Event Handling

Events are handled by classes

General publish-subscribe model

Syntax similar to ‘Visual Basic’ event handling

Event handlers...

...are methods for handling events from other objects

...are declared with reference to the event to be handled (signature from there)

…must be ‘registered’ explicitly

R

Page 20: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 20

*---- proxy class for GUI controlCLASS CButton DEFINITION.

PUBLIC SECTION. METHODS: SetLabel IMPORTING Txt TYPE … . EVENTS: Clicked EXPORTING DoubleClick TYPE I.ENDCLASS.

*---- proxy class for GUI controlCLASS CButton DEFINITION.

PUBLIC SECTION. METHODS: SetLabel IMPORTING Txt TYPE … . EVENTS: Clicked EXPORTING DoubleClick TYPE I.ENDCLASS.

CLASS CWindow1 DEFINITION.PUBLIC SECTION. "--- handle events by implementing "--- event handler methods METHODS: OKClicked FOR EVENT Clicked OF CButton IMPORTING DoubleClick, CanClicked FOR EVENT Clicked OF CButton. DATA: OKBtn TYPE REF TO CButton. … ENDCLASS.

CLASS CWindow1 IMPLEMENTATION. METHOD Init. CREATE OBJECT: OKBtn, CanBtn. SET HANDLER: OKClicked FOR OKBtn, CanClicked FOR CanBtn. ENDMETHOD.

METHOD OKClicked. IF DoubleClick = 1. … ENDIF. ENDMETHOD. METHOD CancelClicked. … "--- DoubleClick not visible ENDMETHOD.ENDCLASS.

CLASS CWindow1 DEFINITION.PUBLIC SECTION. "--- handle events by implementing "--- event handler methods METHODS: OKClicked FOR EVENT Clicked OF CButton IMPORTING DoubleClick, CanClicked FOR EVENT Clicked OF CButton. DATA: OKBtn TYPE REF TO CButton. … ENDCLASS.

CLASS CWindow1 IMPLEMENTATION. METHOD Init. CREATE OBJECT: OKBtn, CanBtn. SET HANDLER: OKClicked FOR OKBtn, CanClicked FOR CanBtn. ENDMETHOD.

METHOD OKClicked. IF DoubleClick = 1. … ENDIF. ENDMETHOD. METHOD CancelClicked. … "--- DoubleClick not visible ENDMETHOD.ENDCLASS.

CLASS CButton IMPLEMENTATION. … METHOD AnyMethod. … RAISE EVENT Clicked EXPORTING DoubleClick = 0. … ENDMETHOD.ENDCLASS.

CLASS CButton IMPLEMENTATION. … METHOD AnyMethod. … RAISE EVENT Clicked EXPORTING DoubleClick = 0. … ENDMETHOD.ENDCLASS.

HandlerSender

Event Handling Example

Page 21: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 21

*--- class attribute definitionCLASS-DATA: var TYPE t … .

*--- class method definitionCLASS-METHODS: cm … <parameter syntax like methods>.

*--- class attribute definitionCLASS-DATA: var TYPE t … .

*--- class method definitionCLASS-METHODS: cm … <parameter syntax like methods>.

Class Component Definitions

Class attributes...

...are data on class level, independent of object / instance

...are ‘always there’ like global variables / functions

...have global lifetime, with scope tied to class

Class methods...

...can only access class attributes

...can be called like ‘global functions’, but are tied to class

Page 22: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 22

Using Class Components

PROGRAM xy. “--- start nested transaction CALL METHOD TACtrl=>CreateNew. … CALL METHOD TACtrl=>Current->Commit.

PROGRAM xy. “--- start nested transaction CALL METHOD TACtrl=>CreateNew. … CALL METHOD TACtrl=>Current->Commit.

*---- Transaction controller for nested transactions ----CLASS TACtrl DEFINITION.

PUBLIC SECTION. “--- class method to create new controller instance CLASS-METHODS: CreateNew RETURNING TaObj TYPE REF TO TACtrl. CLASS-DATA: Current TYPE REF TO TACtrl READ-ONLY. METHODS: Commit, Abort. “-- instance methods

PRIVATE SECTION. CLASS-DATA: TAStack TYPE REF TO TACtrl OCCURS 0.ENDCLASS.

CLASS TACtrl IMPLEMENTATION. METHOD CreateNew. DATA NewTA TYPE REF TO TACtrl. CREATE OBJECT NewTA. APPEND NewTA TO TAStack. Current = NewTA. ENDMETHOD.ENDCLASS.

*---- Transaction controller for nested transactions ----CLASS TACtrl DEFINITION.

PUBLIC SECTION. “--- class method to create new controller instance CLASS-METHODS: CreateNew RETURNING TaObj TYPE REF TO TACtrl. CLASS-DATA: Current TYPE REF TO TACtrl READ-ONLY. METHODS: Commit, Abort. “-- instance methods

PRIVATE SECTION. CLASS-DATA: TAStack TYPE REF TO TACtrl OCCURS 0.ENDCLASS.

CLASS TACtrl IMPLEMENTATION. METHOD CreateNew. DATA NewTA TYPE REF TO TACtrl. CREATE OBJECT NewTA. APPEND NewTA TO TAStack. Current = NewTA. ENDMETHOD.ENDCLASS.

Page 23: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 23

Inheritance

A class can be derived from another

Only specify what is different / added

Add attributes and methods

Redefine / override existing methods (in any section) = change implementation, ‘slight change’ of interface possible

‘Single inheritance’ on class

CLASS class DEFINITION

INHERITING FROM superclass.

… SECTION.

“--- added attributes and methods

DATA: …

METHODS: …

“--- override / redefine existing method METHODS m REDEFINITION …

ENDCLASS.

CLASS class DEFINITION

INHERITING FROM superclass.

… SECTION.

“--- added attributes and methods

DATA: …

METHODS: …

“--- override / redefine existing method METHODS m REDEFINITION …

ENDCLASS.

Page 24: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 24

Using Inheritance

Polymorphism on object references

CLASS DrawableObject DEFINITION

PUBLIC SECTION.

METHODS: Draw.ENDCLASS.

CLASS DrawableObject DEFINITION

PUBLIC SECTION.

METHODS: Draw.ENDCLASS.

CLASS Polygon DEFINITION INHERITING FROM DrawableObject. PUBLIC SECTION. METHODS: AddPoint IMPORTING P TYPE T_Point, Draw REDEFINITION. PRIVATE SECTION. DATA: PointTab TYPE T_Point OCCURS 0. ENDCLASS.

CLASS Polygon IMPLEMENTATION. METHOD Draw. DATA: Point TYPE T_Point. LOOP AT PointTab INTO Point. CALL METHOD DrawableObject=>Draw( Point ). ENDLOOP. ENDMETHOD.ENDCLASS.

CLASS Polygon DEFINITION INHERITING FROM DrawableObject. PUBLIC SECTION. METHODS: AddPoint IMPORTING P TYPE T_Point, Draw REDEFINITION. PRIVATE SECTION. DATA: PointTab TYPE T_Point OCCURS 0. ENDCLASS.

CLASS Polygon IMPLEMENTATION. METHOD Draw. DATA: Point TYPE T_Point. LOOP AT PointTab INTO Point. CALL METHOD DrawableObject=>Draw( Point ). ENDLOOP. ENDMETHOD.ENDCLASS.

PROGRAM xy.

DATA: DObj TYPE REF TO DrawableObject. DATA: DObjTab TYPE REF TO DrawableObject OCCURS 0.

“--- create drawable objects … “--- draw all of them LOOP AT DObjTab INTO DObj. CALL METHOD DObj->Draw. ENDLOOP.

PROGRAM xy.

DATA: DObj TYPE REF TO DrawableObject. DATA: DObjTab TYPE REF TO DrawableObject OCCURS 0.

“--- create drawable objects … “--- draw all of them LOOP AT DObjTab INTO DObj. CALL METHOD DObj->Draw. ENDLOOP.

DrawableObjectDrawableObject

BitmapBitmapPolygonPolygonPointPoint

Page 25: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 25

Interfaces define the interaction between different objects

Polymorphism independent of class / inheritance

Classes can implement multiple interfaces

Uniform access through interface reference

ArchiveMgr

PlanCustomer Material

IArchive

Interfaces

Page 26: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 26

Interfaces...

…can define same components as class - without implementation

...may ‘enclose’ multiple other interfaces (hierarchy)

…have separate name spaces for their components

Components of enclosed interfaces are not visible in the top-level interface (‘black boxes’); there is a mapping/aliasing feature

INTERFACE interface.

[ INTERFACES ...<list of comprised interfaces> .]

[ ...<definition of interface components> ]

ENDINTERFACE.

INTERFACE interface.

[ INTERFACES ...<list of comprised interfaces> .]

[ ...<definition of interface components> ]

ENDINTERFACE.

Interface Definition

Page 27: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 27

Implementation of interfaces

A class can implement many interfaces

Interfaces are implemented ‘side-by-side’ in a class (like COM)

No name conflicts on the class level

No semantic conflicts at class level and interface composition

Using interfaces

Access by interface reference like object reference

An interface reference only exposes the components of that interface

Assignment / ‘cast’ to another interface possible

Interfaces

Page 28: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 28

Interface Example

INTERFACE IArchive DEFINITION. DATA: ObjID TYPE T_OID VIRTUAL. “-- fast EVENTS: Saved, … . METHODS: SaveYourself IMPORTING … .

ENDINTERFACE.

INTERFACE IArchive DEFINITION. DATA: ObjID TYPE T_OID VIRTUAL. “-- fast EVENTS: Saved, … . METHODS: SaveYourself IMPORTING … .

ENDINTERFACE.

CLASS Customer DEFINITION. INTERFACES: IArchive, IWorkflow, … .ENDCLASS.

CLASS Customer IMPLEMENTATION. … METHOD IArchive~GET_ObjID. CALL FUNCTION ‘Archive_Get_OID’ … IMPORTING IArchive~objid. “-- no more recompute SET DIRECT READ ACCESS FOR IArchive~ObjID. ENDMETHOD. … METHOD IArchive~SaveYourself. “--- save all own data into … … RAISE EVENT IArchive~Saved … . ENDMETHOD. … ENDCLASS.

CLASS Customer DEFINITION. INTERFACES: IArchive, IWorkflow, … .ENDCLASS.

CLASS Customer IMPLEMENTATION. … METHOD IArchive~GET_ObjID. CALL FUNCTION ‘Archive_Get_OID’ … IMPORTING IArchive~objid. “-- no more recompute SET DIRECT READ ACCESS FOR IArchive~ObjID. ENDMETHOD. … METHOD IArchive~SaveYourself. “--- save all own data into … … RAISE EVENT IArchive~Saved … . ENDMETHOD. … ENDCLASS.

CLASS CArchiveMgr.

DATA: IAObj TYPE REF TO IArchive.DATA: IATab TYPE REF TO IArchive OCCURS 0.

… METHOD AddToArchive IMPORTING IAObj … APPEND IAObj TO IATab.ENDMETHOD.

METHOD DoArchive. “--- archive all objects in table LOOP AT IATab INTO IAObj. WRITE: / “Wrote:”, IAObj->ObjID. CALL METHOD IAObj->SaveYourself … . ENDLOOP.ENDMETHOD.

CLASS CArchiveMgr.

DATA: IAObj TYPE REF TO IArchive.DATA: IATab TYPE REF TO IArchive OCCURS 0.

… METHOD AddToArchive IMPORTING IAObj … APPEND IAObj TO IATab.ENDMETHOD.

METHOD DoArchive. “--- archive all objects in table LOOP AT IATab INTO IAObj. WRITE: / “Wrote:”, IAObj->ObjID. CALL METHOD IAObj->SaveYourself … . ENDLOOP.ENDMETHOD.

CArchiveMgr

IArchive

iaTabPlan1

Plan2

Material

Customer

Page 29: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 29

Interfaces and Classes

Interface 1Interface 1 Interface 2Interface 2

Interface 4Interface 4Interface 3Interface 3 Interface 5Interface 5

Class 2Class 2

Class 1Class 1

Comprising

Implementing

Inheritingfrom

class 1specific

interface5

if 3specific

interface 1

interface2

if 4specific

class 2specific

Object reference

Interface reference

Object reference

Interface reference

Interface reference

Interface reference

Interface reference

Class 1Part

Class 2Part

Interface 3

Interface 4

Page 30: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 30

Naming and Visibility

Class components...

…share a common name space within the class

...may be

public = visible to all

protected = visible to subclasses and implementation

private = visible to the class implementation only

...depend on instance data or not

Interface components

Separate name space for interface components

Interfaces are visible as a whole (like ‘view’)

R

Page 31: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 31

Miscellaneous Avoid naming conflicts, selectively make components visible

Constructor (Destructor)

Friends

{CLASS … DEFINITION | INTERFACE … }. INTERFACES i. ... ALIASES a FOR i~a.{ENDCLASS|ENDINTERFACE}.

{CLASS … DEFINITION | INTERFACE … }. INTERFACES i. ... ALIASES a FOR i~a.{ENDCLASS|ENDINTERFACE}.

CLASS class DEFINITION. ... METHODS CONSTRUCTOR "--- name / syntax TBD IMPORTING p TYPE t … . … ENDCLASS.

CLASS class DEFINITION. ... METHODS CONSTRUCTOR "--- name / syntax TBD IMPORTING p TYPE t … . … ENDCLASS.

CLASS c1 DEFINITION CLASS c2 DEFINITION EXPOSING PRIVATE COMPONENTS ACCESSING PRIVATE COMPONENTS TO c2. OF c1. ... ... PRIVATE SECTION. PRIVATE SECTION.ENDCLASS. ENDCLASS.

CLASS c1 DEFINITION CLASS c2 DEFINITION EXPOSING PRIVATE COMPONENTS ACCESSING PRIVATE COMPONENTS TO c2. OF c1. ... ... PRIVATE SECTION. PRIVATE SECTION.ENDCLASS. ENDCLASS.

Page 32: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 32

The ABAP Object Model

Summary

Classes and interfaces

Attributes, methods, and events

Classes can implement interfaces

Interface composition

Single inheritance for classes, multiple composition + aliasing for interfaces

Event handling

R

Page 33: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 33

ABAP Objects

ABAP Objects as a strategic SAP technology

Programming with objects, classes, and interfaces in ABAP

Interoperability with other object systems

R

Page 34: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 34

VisualBasic

*Script,...

Java

Client / Server Client / Server

DCOM

CORBA

ABAPObjects

ComponentConnector

CORBA Bridge

Interoperability: DCOM and CORBA

Page 35: R  SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1 ABAP Objects

R

SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 35

Interoperability Features

Transparent two-way mapping between ABAP Objects and external object models

Automatic generation of proxies and stubs

Location transparency:

CREATE OBJECT obj DESTINATION dest

Delta management for mass data

For details see presentation on Distributed Objects