Вы находитесь на странице: 1из 35

ABAP Objects

SAP AG 1997

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

ABAP Objects
ABAP Objects as a strategic SAP technology
Programming with objects, classes, and interfaces in
ABAP
Interoperability with other object systems

SAP AG 1997

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

Positioning ABAP Objects


Benefits of object orientation
Current situation

External interoperability

ABAP programming

What are ABAP Objects ?


Benefits of ABAP Objects

SAP AG 1997

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

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

SAP AG 1997

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

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

SAP AG 1997

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

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

...

SAP AG 1997

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

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)

SAP AG 1997

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

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


worlds largest business application

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

Speed, speed, speed !

Enabling technology for GUI programming with


frontend controls (ActiveX, JavaBeans)

SAP AG 1997

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

ABAP Objects
ABAP Objects as a strategic SAP technology
Programming with objects, classes, and interfaces in
ABAP
Interoperability with other object systems

SAP AG 1997

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

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

SAP AG 1997

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

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

SAP AG 1997

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

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.
SAP AG 1997

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

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.
PROGRAM xy.
DATA: Parcel
Truck1
Truck2

TYPE
TYPE
TYPE

REF
REF
REF

TO
TO
TO

CParcel,
CTruck,
CTruck.

-- get input data for parcel from somewhere


CREATE OBJECT Parcel.
CALL METHOD Parcel->SetPars EXPORTING Weight = In_weight.

--CALL
CALL
SAP AG 1997

deal with multiple instances


METHOD Truck1->UnloadParcel IMPORTING Parcel = Parcel.
METHOD Truck2->LoadParcel( Parcel ).
C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 13

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 objects methods

SAP AG 1997

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

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.

SAP AG 1997

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

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

SAP AG 1997

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

Using Attributes and Methods


CLASS c1 DEFINITION.
PUBLIC SECTION.
DATA: v1 TYPE I,
o1 TYPE REF TO c1.
METHODS: m1 IMPORTING a1 TYPE REF
m2 IMPORTING a1 TYPE REF
RETURNING result TYPE
PRIVATE SECTION.
DATA: v2 TYPE I.
ENDCLASS.

TO c1,
TO c1
I.

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

SAP AG 1997

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

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

SAP AG 1997

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

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

SAP AG 1997

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

Event Handling Example


Sender
*---- proxy class for GUI control
CLASS CButton DEFINITION.
PUBLIC SECTION.
METHODS: SetLabel
IMPORTING Txt TYPE .
EVENTS: Clicked
EXPORTING DoubleClick TYPE I.
ENDCLASS.

CLASS CButton IMPLEMENTATION.

METHOD AnyMethod.

RAISE EVENT Clicked


EXPORTING DoubleClick = 0.

ENDMETHOD.
ENDCLASS.

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

ENDIF.

METHOD CancelClicked.

"--- DoubleClick not visible


R
ENDMETHOD.
ENDCLASS.
SAP AG 1997

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

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

*--- class attribute definition


CLASS-DATA: var TYPE t .

*--- class method definition


CLASS-METHODS: cm <parameter syntax like methods>.

SAP AG 1997

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

Using Class Components


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

PROGRAM xy.
--- start nested transaction
CALL METHOD TACtrl=>CreateNew.

CALL METHOD TACtrl=>Current->Commit.

SAP AG 1997

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

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
R

ENDCLASS.

SAP AG 1997

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

Using Inheritance
Polymorphism on object references
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.

SAP AG 1997

DrawableObject

Point

Polygon

Bitmap

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.

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

Interfaces
Interfaces define the interaction between different
objects
Polymorphism independent of class / inheritance
Classes can implement multiple interfaces
Uniform access through interface reference

ArchiveMgr

IArchive

Plan

Customer

Material

SAP AG 1997

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

Interface Definition
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 toplevel interface (black boxes); there is a mapping/aliasing
feature

INTERFACE interface.
[ INTERFACES ...<list of comprised interfaces> .]
[ ...<definition of interface components> ]

ENDINTERFACE.

SAP AG 1997

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

Interfaces
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

SAP AG 1997

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

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

SAP AG 1997

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.

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

CArchiveMgr

Plan1

iaTab

IArchive

Plan2

Material

Customer

Interfaces and Classes


Interface 1

class 1
specific

Interface reference

if 3
specific

Interface 2

Comprising
Interface 3

Object reference

Interface 4

Interface 5

Class 1
Part

Interface 3
Interface reference

interface
1

Interface reference

interface
2

Implementing
Class 1

Inheriting
from

SAP AG 1997

Interface 4

Class 2

Interface reference

if 4
specific

Object reference

class 2
specific

Interface reference

interface
5

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

Class 2
Part
R

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)

SAP AG 1997

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

Miscellaneous

Avoid naming conflicts, selectively make components visible


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

Constructor (Destructor)
CLASS class DEFINITION.
...
METHODS CONSTRUCTOR
IMPORTING p TYPE t .

ENDCLASS.

Friends
CLASS c1 DEFINITION
EXPOSING PRIVATE COMPONENTS
TO c2.
...
PRIVATE SECTION.
ENDCLASS.

"--- name / syntax TBD

SAP AG 1997

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

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

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

SAP AG 1997

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

ABAP Objects
ABAP Objects as a strategic SAP technology
Programming with objects, classes, and interfaces in
ABAP
Interoperability with other object systems

SAP AG 1997

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

Interoperability: DCOM and CORBA


Client / Server

Client / Server

Visual
Basic

*Script,
...

Component
Connector
DCOM
ABAP
Objects
CORBA

Java
CORBA
Bridge

SAP AG 1997

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

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

SAP AG 1997

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

Вам также может понравиться