Transcript ABAP-Objects
ABAP Objects
SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 1
R
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 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, ...
...
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
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
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.
...
[ PROTECTED SECTION.
...
[ PRIVATE SECTION.
...
ENDCLASS.
CLASS class IMPLEMENTATION.
[...
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 ...
] [ EXPORTING ...
] [ CHANGING ...
] [ 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 … R
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 ...
].
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
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.
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 CButton IMPLEMENTATION.
… METHOD AnyMethod. … RAISE EVENT Clicked EXPORTING DoubleClick = 0.
… ENDMETHOD.
ENDCLASS. CLASS CWindow1 IMPLEMENTATION.
METHOD Init.
CREATE OBJECT: OKBtn, CanBtn.
SET HANDLER: OKClicked FOR OKBtn, CanClicked FOR CanBtn.
ENDMETHOD.
METHOD OKClicked ENDMETHOD.
.
IF DoubleClick = 1. … ENDIF.
METHOD CancelClicked … "--- DoubleClick not visible ENDMETHOD.
ENDCLASS. .
R
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 …
R
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 ENDCLASS.
TYPE REF TO TACtrl OCCURS 0.
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 … ENDCLASS.
SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 23
R
Using Inheritance
Polymorphism on object references CLASS DrawableObject PUBLIC SECTION.
METHODS: Draw.
ENDCLASS.
DEFINITION 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 ENDLOOP.
ENDMETHOD.
ENDCLASS.
.
DATA: Point TYPE T_Point.
LOOP AT PointTab INTO Point.
CALL METHOD DrawableObject=>Draw( Point ).
Point PROGRAM xy.
ENDLOOP.
SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 24
DrawableObject Polygon Bitmap 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 .
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 h iv e M g r P la n IA rc h iv e C u s to m e r M a te ria l SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 25
R
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 top level interface (‘black boxes’); there is a mapping/aliasing feature INTERFACE interface.
[ INTERFACES ... .
] [ ...
ENDINTERFACE.
R
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 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 … METHOD … IArchive~GET_ObjID .
CALL FUNCTION ‘Archive_Get_OID’ … IMPORTING IArchive~objid.
“-- no more recompute SET DIRECT READ ACCESS FOR IArchive~ObjID.
ENDMETHOD.
IArchive~SaveYourself.
“--- save all own data into … RAISE EVENT IArchive~Saved … .
ENDMETHOD.
… ENDCLASS.
SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 28
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:”, IA Obj->ObjID .
CALL METHOD IAObj->SaveYourself … .
ENDLOOP.
ENDMETHOD.
P la n 1
C A r ch iveM g r iaT ab
IArc hiv e P la n 2 M a te ria l C u s to m e r
R
Interfaces and Classes
Interface 1 Interface 3 Interface 2 Comprising Interface 4 Implementing Class 1 Inheriting from Class 2 Interface 5 Object reference class 1 specific Interface reference if 3 specific Interface 3 Interface reference interface 1 Interface reference interface 2 Interface 4 Interface reference if 4 specific Object reference class 2 specific Class 1 Part R Class 2 Part Interface reference interface 5
SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 29
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. "--- name / syntax TBD
Friends CLASS c1 DEFINITION CLASS c2 DEFINITION EXPOSING PRIVATE COMPONENTS ACCESSING PRIVATE COMPONENTS TO c2. OF c1.
... ... PRIVATE SECTION. PRIVATE SECTION.
ENDCLASS. 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
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 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