ABAP-Objects

advertisement
ABAP Objects
R
 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
R
 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
R
 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
R
 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
R
 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, ...

...
R
 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)
R
 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
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)
R
 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
R
 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
R
 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
R
 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
R
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 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 ).
 SAP AG 1997
C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 13
R
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
R
 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
R
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
R
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.
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
R
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> ].
R
 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
R
 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
R
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
R
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
R
Interfaces
 Interfaces define the interaction between different
objects
 Polymorphism independent of class / inheritance
 Classes can implement multiple interfaces
 Uniform access through interface reference
A rc hiv eM gr
IArc hive
P lan
C us t om er
M at erial
R
 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
R
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
R
 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
CArch iveMg r
P lan1
iaT ab
IArchive
P lan2
M aterial
Cus tom er
R
Interfaces and Classes
Interface 1
Object reference
class 1
specific
Interface reference
if 3
specific
Interface 2
Comprising
Class 1
Part
Interface 3
Interface 3
Interface 4
Interface 5
Interface reference
interface
1
Interface reference
interface
2
Implementing
Class 1
Interface 4
Inheriting
from
Class 2
 SAP AG 1997
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’)
R
 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.

"--- name / syntax TBD
Friends
CLASS c1 DEFINITION
EXPOSING PRIVATE COMPONENTS
TO c2.
...
PRIVATE SECTION.
ENDCLASS.
CLASS c2 DEFINITION
ACCESSING PRIVATE COMPONENTS
OF c1.
...
PRIVATE SECTION.
ENDCLASS.
R
 SAP AG 1997
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
R
 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
R
 SAP AG 1997
C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 33
Interoperability: DCOM and CORBA
Client / Server
Client / Server
Visual
Basic
Component
Connector
DCOM
*Script,
...
ABAP
Objects
CORBA
Java
CORBA
Bridge
R
 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
R
 SAP AG 1997
C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 35
Download