0% found this document useful (0 votes)
285 views35 pages

ABAP Objects: Strategic Overview

ABAP Objects allows for programming with objects, classes, and interfaces in the ABAP programming language. It provides a complete object model integrated into ABAP that is 100% compatible. This allows programmers to leverage the benefits of object-oriented programming like encapsulation, interfaces, and reuse when developing applications in ABAP.

Uploaded by

kc7988
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
285 views35 pages

ABAP Objects: Strategic Overview

ABAP Objects allows for programming with objects, classes, and interfaces in the ABAP programming language. It provides a complete object model integrated into ABAP that is 100% compatible. This allows programmers to leverage the benefits of object-oriented programming like encapsulation, interfaces, and reuse when developing applications in ABAP.

Uploaded by

kc7988
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

ABAP Objects

Andreas Blumenthal
Jürgen Heymann
SAP AG 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

 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, ...
 ...
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)

 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


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

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 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
R
CALL METHOD Truck1->UnloadParcel IMPORTING Parcel = Parcel.
CALL METHOD Truck2->LoadParcel( Parcel ).

 SAP AG 1997 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 object’s 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. R

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

 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 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 ...<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 Handler
CLASS CWindow1 DEFINITION.
PUBLIC SECTION.
"--- handle events by implementing
*---- proxy class for GUI control
"--- event handler methods
CLASS CButton DEFINITION.
METHODS:
PUBLIC SECTION. OKClicked FOR EVENT Clicked OF CButton
METHODS: SetLabel IMPORTING DoubleClick,
IMPORTING Txt TYPE … . CanClicked FOR EVENT Clicked OF CButton.
EVENTS: Clicked DATA: OKBtn TYPE REF TO CButton.
EXPORTING DoubleClick TYPE I. …
ENDCLASS. ENDCLASS.

CLASS CWindow1 IMPLEMENTATION.


CLASS CButton IMPLEMENTATION. METHOD Init.
… CREATE OBJECT: OKBtn, CanBtn.
METHOD AnyMethod. SET HANDLER: OKClicked FOR OKBtn,
… CanClicked FOR CanBtn.
RAISE EVENT Clicked ENDMETHOD.
EXPORTING DoubleClick = 0.
… METHOD OKClicked.
ENDMETHOD. IF DoubleClick = 1. … ENDIF.
ENDCLASS. ENDMETHOD.

METHOD CancelClicked.
… "--- DoubleClick not visible
ENDMETHOD. R

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

 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.
DrawableObject
METHODS: Draw.
ENDCLASS.

CLASS Polygon DEFINITION Point Polygon Bitmap


INHERITING FROM DrawableObject.
PUBLIC SECTION.
METHODS: AddPoint IMPORTING P TYPE T_Point, PROGRAM xy.
Draw REDEFINITION.
PRIVATE SECTION. DATA: DObj TYPE REF TO DrawableObject.
DATA: PointTab TYPE T_Point OCCURS 0. DATA: DObjTab
ENDCLASS. TYPE REF TO DrawableObject OCCURS 0.
CLASS Polygon IMPLEMENTATION. “--- create drawable objects
METHOD Draw. …
DATA: Point TYPE T_Point. “--- draw all of them
LOOP AT PointTab INTO Point. LOOP AT DObjTab INTO DObj.
CALL METHOD DrawableObject=>Draw( Point ). CALL METHOD DObj->Draw.
ENDLOOP. ENDLOOP.
ENDMETHOD. R

ENDCLASS.

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

IArchiv e

Plan
Customer Material
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 top-


level interface (‘black boxes’); there is a mapping/aliasing
feature

INTERFACE interface.

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

[ ...<definition of interface components> ]

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

 SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 27
Interface Example CLASS CArchiveMgr.

DATA: IAObj TYPE REF TO IArchive.


INTERFACE IArchive DEFINITION. DATA: IATab TYPE REF TO IArchive
DATA: ObjID TYPE T_OID VIRTUAL. “-- fast OCCURS 0.
EVENTS: Saved, … .
METHODS: SaveYourself IMPORTING … . …
ENDINTERFACE. METHOD AddToArchive IMPORTING IAObj …
APPEND IAObj TO IATab.
ENDMETHOD.
CLASS Customer DEFINITION.
INTERFACES: IArchive, IWorkflow, … . METHOD DoArchive.
ENDCLASS. “--- archive all objects in table
LOOP AT IATab INTO IAObj.
CLASS Customer IMPLEMENTATION. WRITE: / “Wrote:”, IAObj->ObjID.
… CALL METHOD IAObj->SaveYourself … .
METHOD IArchive~GET_ObjID. ENDLOOP.
CALL FUNCTION ‘Archive_Get_OID’ … ENDMETHOD.
IMPORTING IArchive~objid.
“-- no more recompute CArchiveMgr
SET DIRECT READ ACCESS FOR IArchive~ObjID. Plan1
iaTab

ENDMETHOD.
… IArchive

METHOD IArchive~SaveYourself. Plan2

“--- save all own data into …



RAISE EVENT IArchive~Saved … . Material

ENDMETHOD.
… Customer
R

ENDCLASS.

 SAP AG 1997 C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 28
Interfaces and Classes
class 1
Object reference specific
Class 1
Part
Interface 1 Interface 2
if 3
Interface reference specific
Comprising
Interface 3
Interface 3 Interface 4 Interface 5
Interface reference interface
1
Implementing
Class 1 Interface reference interface
2
Inheriting Interface 4
if 4
from Interface reference specific
Class 2

class 2
Object reference specific
Class 2
Part

Interface reference interface R

 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 "--- name / syntax TBD
IMPORTING p TYPE t … .

ENDCLASS.

 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

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

You might also like