Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SAP AG 1997
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
SAP AG 1997
SAP AG 1997
Foundation for DCOM/CORBA connection Fully featured standard object model Medium level object wrappers for business functionality written in standard ABAP
Defined within the BOR Function-oriented, stable interfaces to R/3 applications Support for Internet applications
SAP AG 1997
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
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
SAP AG 1997
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)
R
SAP AG 1997
ABAP Objects
ABAP Objects as a strategic SAP technology
SAP AG 1997
Big common data structure and some common functions Lots of CASE statements, sparsely filled data structures
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
...state, described by its attributes ...behavior, described by its methods ...identity to distinguish them from other objects with same state and behavior
...by accessing (public) attributes ...by calling methods ...by raising or handling events
SAP AG 1997
...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 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
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!)
SAP AG 1997
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
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
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
SAP AG 1997
Event Handling
Events are handled by classes
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
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.
CLASS CButton IMPLEMENTATION. METHOD AnyMethod. RAISE EVENT Clicked EXPORTING DoubleClick = 0. ENDMETHOD. ENDCLASS.
ENDIF.
METHOD CancelClicked. "--- DoubleClick not visible R ENDMETHOD. ENDCLASS. SAP AG 1997
C01 Technology Days `97, Karlsruhe (Blumenthal & Heymann) / 20
...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
SAP AG 1997
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
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.
DrawableObject
Point
PROGRAM xy.
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. ENDLOOP.
R
SAP AG 1997
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
R
SAP AG 1997
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.
R
SAP AG 1997
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
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.
CArchiveMgr
Plan1
iaTab
IArchive
Plan2
Material
Customer
Class 1 Part
Interface 1
Interface 2
Interface reference
if 3 specific
Interface reference
interface 2 if 4 specific
Object reference
class 2 specific
Class 2 Part
R
Interface reference
interface 5
SAP AG 1997
public = visible to all protected = visible to subclasses and implementation private = visible to the class implementation only
Interface components
Separate name space for interface components Interfaces are visible as a whole (like view)
SAP AG 1997
Miscellaneous
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
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
ABAP Objects
ABAP Objects as a strategic SAP technology Programming with objects, classes, and interfaces in ABAP
SAP AG 1997
Visual Basic
ABAP Objects
CORBA Bridge
R
SAP AG 1997
Interoperability Features
Transparent two-way mapping between ABAP Objects and external object models Automatic generation of proxies and stubs Location transparency:
SAP AG 1997