ABAP Objects

Kannan Srinivasan


Net4site LLC

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


Net4site LLC

Positioning ABAP Objects 
Benefits of object orientation  Current situation 

External interoperability ABAP programming 

What are ABAP Objects ?  Benefits of ABAP Objects


Net4site LLC

Benefits of Object Orientation  Encapsulation .. VB.outside vs.) and object systems (DCOM/CORBA)  Foundation for patterns and frameworks R Net4site LLC .of components and by inheritance  Maintainability  Interoperability across languages (Java. inside  Explicit interfaces  Control of complexity and dependencies  Reuse .. .

stable interfaces to R/3 applications Support for Internet applications R Net4site LLC .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.

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...Current ABAP Programming  Complexity reduction by powerful high-level programming constructs     Procedural abstraction (function library) Data abstraction (type pools.. sorted and/or nested. R    Net4site LLC . .. group control. .

module.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.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 Net4site LLC .

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. speed !    Enabling technology for GUI programming with frontend controls (ActiveX.. speed. .. JavaBeans) R Net4site LLC . Speed. ABAP <=> VB.

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

Data & Functions  Objects occur 'naturally' in the world. cohesion R  Net4site LLC . load. objects for truck.g.  Functions and data   µBig common data structure¶ and some common functions Lots of CASE statements. « Object: data and functions that belong together to model / implement a specific concept Fewer CASE statements.: Transportation company: trucks (various kinds). etc. loads (various). «   Various kinds of everything. densely filled data. load. sparsely filled data structures  Objects: car. truck. We want to model our software accordingly  E.Fundamentals: Objects vs.

......identity to distinguish them from other objects with same state and behavior  Objects can interact with each other.by raising or handling events  Objects are instances of classes R Net4site LLC .state.behavior.by calling methods ...by accessing (public) attributes .. described by its attributes ..... described by its methods .    .Fundamentals: What Is an Object ?  Objects have«    ..

specify behavior of µsame kind of¶ objects .hide implementation details ..<definition of protected components> ] [ PRIVATE SECTION. Net4site LLC R .may be specialized in subclasses   CLASS class DEFINITION [ INHERITNG FROM superclass ]. [ PUBLIC SECTION. .....<definition of private components> ] ENDCLASS..The ABAP Object  Classes«   .. CLASS class IMPLEMENTATION.. private) . .....<method implementations> ] ENDCLASS.define how objects can be accessed from outside (public vs.. . protected vs..<definition of public components> ] [ PROTECTED SECTION.. [..

DATA: VehicleId TYPE I READ-ONLY. CALL METHOD Parcel->SetPars EXPORTING Weight = In_weight. METHODS: LoadParcel IMPORTING Parcel TYPE REF TO CParcel. Net4site LLC R . CLASS CTruck IMPLEMENTATION. ENDCLASS. Truck2 TYPE REF TO CTruck. PUBLIC SECTION. ³-. APPEND Parcel TO ParcelTab. ENDCLASS. ³--.An Example CLASS CTruck DEFINITION. « ³-. Truck1 TYPE REF TO CTruck. DATA: ParcelTab TYPE REF TO CParcel OCCURS 0. METHOD LoadParcel.do more stuff « ENDMETHOD. PROGRAM xy. DATA: Parcel TYPE REF TO CParcel.get input data for parcel from somewhere « CREATE OBJECT Parcel. UnloadParcel « PRIVATE SECTION. CALL METHOD Truck2->LoadParcel( Parcel ).deal with multiple instances CALL METHOD Truck1->UnloadParcel IMPORTING Parcel = Parcel.

all other ABAP types are value-based!)  Internal data hidden from users  Private data accessible only by the object¶s methods R Net4site LLC . 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.Some Important Points  Objects are created dynamically  Storage management.

R Net4site LLC . virtual. class attributes «can be constants Virtual attributes: µAttribute¶ from the outside.and Get-methods.store the internal state of an object (data) .can be references to other objects «can be: read-only. Dynamic control of Set-/Get-methods.Component Definitions  Attributes«      . {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... inside the object Set...

R Net4site LLC ...<list of import/export parameters> ] [ EXCEPTIONS .Component Definitions  Methods«   «are operations on objects (the µfunctionality¶) «are the only way to change the state of an object (other than public attributes) .<list of import parameters> ] [ EXPORTING .<list of export parameters> ] [ CHANGING ..can pass back a return value No method-name overloading!    {METHODS|CLASS-METHODS} method [ IMPORTING ......<list of exceptions> ] [ RETURNING result TYPE t ].....have parameters and can raise exceptions (similar to function modules) .

some method calls « CALL METHOD o1->m1 EXPORTING a1 = o1. CALL FUNCTION 'abc' EXPORTING p1 = o1->v1 « . ³-.result can be used in expressions « R Net4site LLC . ENDCLASS.short form for 1 exporting arg « y = obj1->m2( x ). DATA: v2 TYPE I. « ³--. PUBLIC SECTION. PROGRAM xy. x = o1->v1 + sin( o1-> v1 ).Using Attributes and Methods CLASS c1 DEFINITION. DATA o1 TYPE REF TO c1. o1 TYPE REF TO c1. DATA: v1 TYPE I. PRIVATE SECTION. ³-.attribute can occur anywhere a µnormal variable¶ can occur CREATE OBJECT o1. m2 IMPORTING a1 TYPE REF TO c1 RETURNING result TYPE I. CALL METHOD o1->m1( o1 ). ³--. METHODS: m1 IMPORTING a1 TYPE REF TO c1.

occur at a particular point in time.  . e.can be raised to inform other interested objects ...<list of export parameters> ].... µchange in state of an object¶ ... R Net4site LLC .g....Component Definitions  Events.can pass parameters   EVENTS event [ EXPORTING .

are declared with reference to the event to be handled (signature from there) «must be µregistered¶ explicitly  R Net4site LLC ...are methods for handling events from other objects .....Event Handling  Events are handled by classes   General publish-subscribe model Syntax similar to µVisual Basic¶ event handling  Event handlers.   .

ENDCLASS. « ENDIF. EVENTS: Clicked EXPORTING DoubleClick TYPE I. CanBtn. Handler CLASS CWindow1 DEFINITION. ENDMETHOD.event handler methods METHODS: OKClicked FOR EVENT Clicked OF CButton IMPORTING DoubleClick. PUBLIC SECTION. ENDMETHOD. ENDCLASS. « ENDMETHOD. « METHOD AnyMethod. ENDCLASS. METHOD OKClicked. « ENDCLASS.proxy class for GUI control CLASS CButton DEFINITION. METHOD CancelClicked. "--.Event Handling Example Sender *---. CanClicked FOR EVENT Clicked OF CButton. CREATE OBJECT: OKBtn. Net4site LLC . « "--. SET HANDLER: OKClicked FOR OKBtn. CLASS CButton IMPLEMENTATION. « RAISE EVENT Clicked EXPORTING DoubleClick = 0. IF DoubleClick = 1. CLASS CWindow1 IMPLEMENTATION.DoubleClick not visible R ENDMETHOD. METHODS: SetLabel IMPORTING Txt TYPE « . DATA: OKBtn TYPE REF TO CButton. CanClicked FOR CanBtn. PUBLIC SECTION. METHOD Init.handle events by implementing "--.

   .Class Component Definitions  Class attributes.class attribute definition CLASS-DATA: var TYPE t « ..class method definition CLASS-METHODS: cm « <parameter syntax like methods>.are µalways there¶ like global variables / functions ...   . R Net4site LLC .can only access class attributes .... with scope tied to class  Class methods.are data on class level.. independent of object / instance .... but are tied to class *--...can be called like µglobal functions¶. *--.have global lifetime...

ENDCLASS. CLASS-DATA: TAStack TYPE REF TO TACtrl OCCURS 0. R Net4site LLC . ³--. CLASS-DATA: Current TYPE REF TO TACtrl READ-ONLY. ENDMETHOD.start nested transaction CALL METHOD TACtrl=>CreateNew. METHODS: Commit. Current = NewTA. ENDCLASS.instance methods PRIVATE SECTION. DATA NewTA TYPE REF TO TACtrl.Using Class Components *---. Abort. APPEND NewTA TO TAStack. CLASS TACtrl IMPLEMENTATION. ³--. PUBLIC SECTION.Transaction controller for nested transactions ---CLASS TACtrl DEFINITION. ³-. CREATE OBJECT NewTA.class method to create new controller instance CLASS-METHODS: CreateNew RETURNING TaObj TYPE REF TO TACtrl. PROGRAM xy. METHOD CreateNew. « CALL METHOD TACtrl=>Current->Commit.

³--. µslight change¶ of interface possible µSingle inheritance¶ on class  CLASS class DEFINITION INHERITING FROM superclass.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. « SECTION.added attributes and methods DATA: « METHODS: « ³--. Net4site LLC .override / redefine existing method METHODS m REDEFINITION « R ENDCLASS.

DATA: DObjTab TYPE REF TO DrawableObject OCCURS 0. PUBLIC SECTION.Using Inheritance  Polymorphism on object references CLASS DrawableObject DEFINITION PUBLIC SECTION. CALL METHOD DObj->Draw. CLASS Polygon IMPLEMENTATION.draw all of them LOOP AT DObjTab INTO DObj. CLASS Polygon DEFINITION INHERITING FROM DrawableObject. ENDLOOP.create drawable objects « ³--. METHODS: AddPoint IMPORTING P TYPE T_Point. METHODS: Draw. DrawableObject Point PROGRAM xy. Draw REDEFINITION. R Net4site LLC . CALL METHOD DrawableObject=>Draw( Point ). ³--. ENDLOOP. DATA: Point TYPE T_Point. ENDCLASS. LOOP AT PointTab INTO Point. ENDCLASS. PRIVATE SECTION. Polygon Bitmap DATA: DObj TYPE REF TO DrawableObject. ENDMETHOD. DATA: PointTab TYPE T_Point OCCURS 0. ENDCLASS. METHOD Draw.

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 Net4site LLC .

<definition of interface components> ] ENDINTERFACE....Interface Definition  Interfaces.. there is a mapping/aliasing feature    INTERFACE interface..] [ ..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¶). R Net4site LLC ..without implementation . [ INTERFACES .  «can define same components as class ..<list of comprised interfaces> .

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 Net4site LLC .

Net4site LLC CLASS CArchiveMgr. « METHOD IArchive~GET_ObjID. WRITE: / ³Wrote:´. ENDMETHOD. DATA: IATab TYPE REF TO IArchive OCCURS 0. « METHOD IArchive~SaveYourself. ³--. ENDMETHOD.fast EVENTS: Saved. ³-. ENDINTERFACE. METHODS: SaveYourself IMPORTING « .save all own data into « « RAISE EVENT IArchive~Saved « . CALL FUNCTION µArchive_Get_OID¶ « IMPORTING IArchive~objid.Interface Example INTERFACE IArchive DEFINITION. ³-. « ENDCLASS. METHOD DoArchive. IAObj->ObjID. « METHOD AddToArchive IMPORTING IAObj « APPEND IAObj TO IATab. CArchiveMgr Plan1 iaTab IArchive Plan2 Material Customer R . ENDCLASS. DATA: ObjID TYPE T_OID VIRTUAL. « . DATA: IAObj TYPE REF TO IArchive. CALL METHOD IAObj->SaveYourself « . ENDLOOP. IWorkflow. CLASS Customer DEFINITION. CLASS Customer IMPLEMENTATION. ENDMETHOD.no more recompute SET DIRECT READ ACCESS FOR IArchive~ObjID. ENDMETHOD. ³--. INTERFACES: IArchive.archive all objects in table LOOP AT IATab INTO IAObj. « .

Interfaces and Classes Object reference class 1 specific Class 1 Part Interface 1 Interface 2 Interface reference Comprising Interface 3 Interface 4 Implementing Class 1 Inheriting from Class 2 Interface 5 if 3 specific Interface 3 Interface reference interface 1 Interface reference interface 2 if 4 specific Interface 4 Interface reference Object reference class 2 specific Class 2 Part R Interface reference interface 5 Net4site LLC .

.may be  public = visible to all  protected = visible to subclasses and implementation  private = visible to the class implementation only  ..   «share a common name space within the class ..Naming and Visibility  Class components....depend on instance data or not  Interface components   Separate name space for interface components Interfaces are visible as a whole (like µview¶) R Net4site LLC .


and events Classes can implement interfaces Interface composition Single inheritance for classes.The ABAP Object Model  Summary      Classes and interfaces Attributes. multiple composition + aliasing for interfaces Event handling  R Net4site LLC . methods.

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

. . CORBA Java ABAP Objects CORBA Bridge R Net4site LLC .Interoperability: DCOM and CORBA Client / Server Client / Server Visual Basic Component Connector DCOM *Script..

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 Net4site LLC .

Introducing the Enhancement Framework (BADI Development) R Net4site LLC .

Kernel BADI¶s Implement a BADI (Classic) Tips & Tricks Address feedback and questions from Audience R Net4site LLC .Objectives  The purpose of this presentation is to:       Provide an Overview of the Enhancement Framework Describe what a BADI is«« Classic vs.

. mySAP ERP) can be adapted by one of the following techniques: Customizing (defining system behavior through standard SAP provided mechanism without coding).Enhancement Framework  SAP is known for delivering business software easily adaptable by customers for their specific needs. Enhancement (adding custom code at strategic hook positions provided by SAP) Modification (modifying SAP supplied code directly ± often called CoreMod R Net4site LLC . Typically the software (for example.

Enhancement Framework 
Let us first take a look at how the enhancement technique has evolved so far in SAP. 

User-Exit¶ is one of the very first mechanisms provided by SAP to execute custom code in between the standard SAP control flow. This is implemented as subroutine call (PERFORM xxx). A classical example for User-Exit is MV45AFZZ include in order processing module of SAP R/3. Though this include object doesn¶t fall under customer namespace, the object doesn¶t get overwritten during upgrade. µCustomer-Exit¶ is better than the user-exit, in the sense that it is implemented using Function Modules and so has a well defined parameter interface. Also since the custom coding done as part of these customer-exits is located away from the original SAP code, the maintenance is easier than user-exits. The µBADI-s¶ (Business Add-Ins), as they exist in pre NW04s releases are now called old classic-BADI¶s. This was the first object-oriented way to enhance the ABAP system. This, to a certain extent, allows multiple implementations with limited filter support. The classic-BADI¶s are implemented using ABAP Objects

Net4site LLC

Enhancement Framework 
So what's so cool about this new enhancement technology?

» » » »

Source Code enhancement Function Group enhancement Class enhancement Kernel-BADI Enhancement 

The first three methods, viz., Source Code enhancement, Function Group enhancement, and Class enhancement are brand new ways to enhance the ABAP system. The final one Kernel-BADI is an improvement of the old classic-BADI now integrated into the Enhancement Framework. Remember that all of these techniques are considered enhancing and not modifying the system.

Net4site LLC

What is a BADI? 
Business Add In 

Business Add-Ins may be simply defined as an object-oriented extension of the SAP. They consist of special hooks provided by SAP core developers for incorporating customer (or company) specific logic. (BADI Definition) The process of adapting your program according to your specific scenario is known as implementation of the BADI. 

BADIs are based upon the concept of object-orientation. The program that incorporates the enhancement option calls a method of a generated BADI class. During the implementation procedure, the customer-specific code is written in the relevant method. The method name is specified via a BADI interface. The name of the interface is of the form IF_EX_BADI, where BADI is the name of the Business Add-In in question. For example, in the case of the HR Add-In HR_INDVAL, the involved interface is IF_EX_HR_INDVAL.

Net4site LLC

What is a BADI? BADI Architecture in SAP What's important about this diagram is that it reflects both the definition of a classic BADI as well as it¶s implementation. R Net4site LLC .

CORE SAP Application developers define an interface for the add-in 2.What is a BADI? (Definition) BADI Architecture in SAP 1 2 1.SAP generates an adapter class for implementing the add-in thus opening a path for customer or partner implementations R Net4site LLC .

Adapter class takes care of calling and filtering out the proper components Net4site LLC R .The interface definition ensures that consistent data is passed to the different add-in implementations 3.What is a BADI? (implementation) BADI Architecture in SAP 1 2 3 1.Customer/partner developer creates an interface of the adapter class 2.

e. performance problems can occur (No longer an issue with new Kernel BADI¶s)  Customers can create BADIs  Creating a BADI within a CMOD project exit can allow multiple developers to share an exit without stepping on each other¶s toes . ± no header lines on internal tables) Net4site LLC R  If an BADI is called frequently.What is a BADI?  SAP guarantees upward compatibility of all BADI interfaces  BADIs are not a replacement for Customer Exits (already existing exits were not converted to BADIs)  Enhancements. interfaces & generated classes all lie in the SAP namespace  Implementations lie in the customer/partner namespace and are transportable  Standard naming conventions apply for BADIs ± start your implementations with Z  Object oriented coding rules apply (i.

R Net4site LLC . both the definition and implementation are realized as workbench repository objects (global classes and interfaces).Classic vs. Kernel BADI¶s  The old classic-BADI¶s are implemented purely at the ABAP Workbench level. that is. Example: ..

Kernel BADI¶s  The new Kernel-BADI takes it to the ABAP language level.Classic vs. Example: data bd_hdl type ref to badi_name. R Net4site LLC . Because of this. the new Kernel-BADI¶s are much faster compared to the old classicBADI¶s  There are two new ABAP statements available now to support the Kernel-BADI¶s. GET BADI bd_hdl filters filt_1 = µVALUE¶. CALL BADI bd_hdl->method exporting param_1 = 10. namely GET BADI and CALL BADI.

 Whereas in the new Kernel-BADI. the active BADI implementations are included into the load of BADI handle at compile time and the filter criterion are expanded as IF statements. This is the reason the new Kernel-BADI¶s are much faster than classic-BADI¶s.  Some of the other new features of Kernel-BADI¶s are. Kernel BADI¶s  The old classic-BADI used to mix both implementation selection and method call in the same CALL METHOD statement. » » » ‡ Improved Filters with complex filter condition editor ‡ Possibility to inherit the implementations ‡ Switchable using Switch Framework R Net4site LLC . The implementations could only be chosen at runtime because of the above reason and due to the fact that the BADI handle could only be gotten from another method call by passing the BADI name.Classic vs.

Enter a suitable name for your implementation in the field provided. The BADI implementation screen appears. and click the Create button R Net4site LLC . as shown. Call transaction SE19.Implement a BADI (Classic)  Step 1: Creating an Implementation  The first step involves creating a BADI implementation.

as shown. R Net4site LLC . Enter the name of the BADI involved and press the Enter button.Implement a BADI (Classic)  A pop-up screen appears.

You may change the class if you like. R Net4site LLC . This shows the name of the class that will be generated as a result of the implementation. click on the Interface tab.Implement a BADI (Classic)  Enter an appropriate short text in the field provided. The Interface tab also contains the name of the BADI method. Then.

Implement a BADI (Classic)  Then. This is the area where you may write the code that you would like to be executed when the BADI method is called R Net4site LLC . double-click on the name of the method (in our case SAP_SCRIPT_TABLES). This takes you to the Class Builder¶s method editor screen.

The enhancement may be achieved by writing code that assigns suitable values to the changing and exporting parameters of the method. This code incorporates the enhancement logic and is executed by the application program upon the BADI method call.  The method has importing. However. and changing parameters. since the BADI technology is based upon ABAP Objects. and in this way the desired enhancement effect is achieved R Net4site LLC . some ABAP constructs are not allowed. Most of the ABAP statements are applicable in this case. The main application program uses these values for further processing. exporting.Implement a BADI (Classic)  Step 2: Writing the code for the BADI Method  The next step is to write the appropriate coding for the BADI method.

Implement a BADI (Classic)  Step 2: Activate the BADI! R Net4site LLC .

Hierarchy.Tips & Tricks  How do we find available BADI¶s? There are multiple ways of searching for BADI¶s. R Net4site LLC . or by program. First there is the obvious«« Go to Transaction Code SE18 (Definition) Press F4 Search by package.

The changing parameter µINSTANCE¶ will have the interface assigned to it. The export parameter µEXIT_NAME¶ for the method GET_INSTANCE of class CL_EXITHANDLER will have the METHOD assigned to it. Double click on the program name. Once inside the program search for CL_EXITHANDLER=>GET_INSTANCE¶. Double click on the method to enter the source code. for which we want to find the BADI. Click on System->Status. Make sure the radio button ³In main program´ is checked. A list of all the programs with call to the BADI¶s will be listed. R Net4site LLC .Tips & Tricks  Finding BADI Using CL_EXITHANDLER=>GET_INSTANCE Go to the Transaction.

filter the trace on Objects: ‡ V_EXT_IMP ‡ V_EXT_ACT Push button "Multiple selections" button behind field Objects Fill: V_EXT_IMP and V_EXT_ACT All the interface class names of view V_EXT_IMP start with IF_EX_. The popup screen "Set Restrictions for Displaying Trace" appears. because BADI database tables are buffered. Now. Set flag field "Buffer trace" Remark: We need to trace also the buffer calls. R So the BADI name of IF_EX_CUSTOMER_ADD_DATA is CUSTOMER_ADD_DATA Net4site LLC . This is the standard SAP prefix for BADI class interfaces. Start transaction in a new GUI session. (Especially view V_EXT_IMP and V_EXT_ACT) Push the button "Activate Trace". Push the button "Deactivate Trace". Go back to the Performance trace session. Push the button "Display Trace". The BADI name is after the IF_EX_.Tips & Tricks  Finding BADI Using SQL Trace (TCODE-ST05) Start transaction ST05 (Performance Analysis).

enter the Package Name and Execute.Tips & Tricks  Finding BADI Using Repository Information System (TCODESE84) Go to ³Maintain Transaction´ (TCODE. R Here you get a list of all the Enhancement BADI¶s for the given package Net4site LLC .SE93). Get the Package Name. Enter the Transaction for which you want to find BADI. Go to TCode: SE84->Enhancements->Business Addinns->Definition. Click on the Display push buttons.

I discussed in detail the steps required in implementing an add-in. Then.Conclusion  I reviewed the rudiments of Business Add-Ins and their benefits for SAP users and developers.  I hope this presentation will provide you with some breadcrumbs to help you in adapting standard SAP programs quickly and easily using BADI¶s! R Net4site LLC .

sap.com Documentation SAP Netweaver (04s) Application Platform ABAP technology ABAP Workbench Enhancement Framework  SDN http://sdn.Further Information  Help Portal http://help.com R Net4site LLC .sap.

Address Feedback & Questions from audience R Net4site LLC .