1 / 35

ABAP Objects

ABAP Objects. R. ABAP Objects. ABAP Objects as a strategic SAP technology Programming with objects, classes, and interfaces in ABAP Interoperability with other object systems. R. Positioning ABAP Objects. Benefits of object orientation Current situation External interoperability

candie
Download Presentation

ABAP Objects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ABAP Objects

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

  3. R Positioning ABAP Objects • Benefits of object orientation • Current situation • External interoperability • ABAP programming • What are ABAP Objects ? • Benefits of ABAP Objects

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

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

  6. R 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, ... • ...

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

  8. 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)

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

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

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

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

  13. 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 ).

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

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

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

  17. 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 …

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

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

  20. Event Handling Example Sender 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. … ENDIF. ENDMETHOD. METHOD CancelClicked. … "--- DoubleClick not visible ENDMETHOD. ENDCLASS. *---- 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.

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

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

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

  24. Using Inheritance • Polymorphism on object references CLASS DrawableObject DEFINITION PUBLIC SECTION. METHODS: Draw. ENDCLASS. DrawableObject Point Polygon Bitmap 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. 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.

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

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

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

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

  29. class 1specific Class 1 Part Object reference if 3specific Interface reference Interface 3 Interface reference interface 1 Interface reference interface2 Interface 4 if 4specific Interface reference class 2specific Class 2Part Object reference Interface reference interface5 Interfaces and Classes Interface 1 Interface 2 Comprising Interface 3 Interface 4 Interface 5 Implementing Class 1 Inheritingfrom Class 2

  30. 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’)

  31. Miscellaneous • Avoid naming conflicts, selectively make components visible • Constructor (Destructor) • Friends {CLASS … DEFINITION | INTERFACE … }. INTERFACES i. ... ALIASES a FOR i~a. {ENDCLASS|ENDINTERFACE}. CLASS class DEFINITION. ... METHODS CONSTRUCTOR "--- name / syntax TBD IMPORTING p TYPE t … . … ENDCLASS. CLASS c1 DEFINITION CLASS c2 DEFINITIONEXPOSING PRIVATE COMPONENTS ACCESSING PRIVATE COMPONENTS TO c2. OF c1. ... ... PRIVATE SECTION. PRIVATE SECTION. ENDCLASS. ENDCLASS.

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

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

  34. Client / Server Client / Server VisualBasic Component Connector DCOM *Script, ... ABAP Objects CORBA Java CORBA Bridge Interoperability: DCOM and CORBA

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

More Related