<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: OOABAP in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476389#M557468</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This example is a step by step example, moving from a simple class to more sophisticated classes, &lt;/P&gt;&lt;P&gt;and covers inheritance, interfaces and events.&lt;/P&gt;&lt;P&gt;Simple class &lt;/P&gt;&lt;P&gt;Inheritance and ploymorphism &lt;/P&gt;&lt;P&gt;Interfaces &lt;/P&gt;&lt;P&gt;Events &lt;/P&gt;&lt;P&gt; 1. Simple class&lt;/P&gt;&lt;P&gt;This example shows how to create a simple employee class. The constructor method is used to initialize number and name of thje employee when the object is created. A display_employee method can be called to show the attributes of the employee, and CLASS-METHOD dosplay_no_of_employees can be called to show the total number of employees (Number of instances of the employee class).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zbc404_hf_events_1.&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;L C L _ E M P L O Y E E&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;*---- LCL Employee - Definition&lt;/P&gt;&lt;P&gt;CLASS lcl_employee DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The public section is accesible from outside   &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;    TYPES:&lt;/P&gt;&lt;P&gt;      BEGIN OF t_employee,&lt;/P&gt;&lt;P&gt;        no  TYPE i,&lt;/P&gt;&lt;P&gt;        name TYPE string,&lt;/P&gt;&lt;P&gt;     END OF t_employee.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      constructor&lt;/P&gt;&lt;P&gt;        IMPORTING im_employee_no TYPE i&lt;/P&gt;&lt;P&gt;                  im_employee_name TYPE string,&lt;/P&gt;&lt;P&gt;      display_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Class methods are global for all instances       &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLASS-METHODS: display_no_of_employees.&lt;/P&gt;&lt;P&gt;  PROTECTED SECTION.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The protecetd section is accesible from the class and its subclasses  &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Class data are global for all instances       &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLASS-DATA: g_no_of_employees TYPE i.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The private section is only accesible from within the classs  &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: g_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*--- LCL Employee - Implementation&lt;/P&gt;&lt;P&gt;CLASS lcl_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    g_employee-no = im_employee_no.&lt;/P&gt;&lt;P&gt;    g_employee-name = im_employee_name.&lt;/P&gt;&lt;P&gt;    g_no_of_employees = g_no_of_employees + 1.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD display_employee.&lt;/P&gt;&lt;P&gt;    WRITE:/ 'Employee', g_employee-no, g_employee-name.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_no_of_employees.&lt;/P&gt;&lt;P&gt;    WRITE: / 'Number of employees is:', g_no_of_employees.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;R E P O R T&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;DATA: g_employee1 TYPE REF TO lcl_employee,&lt;/P&gt;&lt;P&gt;      g_employee2 TYPE REF TO lcl_employee.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  CREATE OBJECT g_employee1&lt;/P&gt;&lt;P&gt;    EXPORTING im_employee_no = 1&lt;/P&gt;&lt;P&gt;              im_employee_name = 'John Jones'.&lt;/P&gt;&lt;P&gt;  CREATE OBJECT g_employee2&lt;/P&gt;&lt;P&gt;    EXPORTING im_employee_no = 2&lt;/P&gt;&lt;P&gt;              im_employee_name = 'Sally Summer'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD g_employee1-&amp;gt;display_employee.&lt;/P&gt;&lt;P&gt;  CALL METHOD g_employee2-&amp;gt;display_employee.&lt;/P&gt;&lt;P&gt;  CALL METHOD g_employee2-&amp;gt;display_no_of_employees.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. Inheritance and polymorphism&lt;/P&gt;&lt;P&gt;This example uses a superclass lcl_company_employees and two subclasses lcl_bluecollar_employee and lcl_whitecollar_employee to add employees to a list and then display a list of employees and there wages. The wages are calcukated in the method add_employee, but as the wages are calculated differently for blue collar employees and white collar emplyees, the superclass method add_employee is redeifined in the subclasses.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Principles:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Create super class LCL_CompanyEmployees. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The class has the methods:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Constructor &lt;/P&gt;&lt;P&gt;Add_Employee - Adds a new employee to the list of employees &lt;/P&gt;&lt;P&gt;Display_Employee_List - Displays all employees and there wage &lt;/P&gt;&lt;P&gt;Display_no_of_employees - Displays total number of employees &lt;/P&gt;&lt;P&gt;Note the use of CLASS-DATA to keep the list of employees and number of employees the same from instance to instance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Create subclasses lcl_bluecollar_employee and lcl_whitecollar_employee. The calsses are identical, except for the redifinition of the add_employee method, where the caclculation of wage is different.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Methodes: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Constructor. The constructor is used to initialize the attributes of the employee. Note that the constructor in the supclasss has to be called from within the constructor of the subclass. &lt;/P&gt;&lt;P&gt;Add_Employee. This is a redinition of the same method in the superclass. In the redefined class the wage is calcuated, and the superclass method is called to add the employees to the emploee list.: &lt;/P&gt;&lt;P&gt;The program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zbc404_hf_events_2 .&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Super class LCL_CompanyEmployees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    TYPES:&lt;/P&gt;&lt;P&gt;      BEGIN OF t_employee,&lt;/P&gt;&lt;P&gt;        no  TYPE i,&lt;/P&gt;&lt;P&gt;        name TYPE string,&lt;/P&gt;&lt;P&gt;        wage TYPE i,&lt;/P&gt;&lt;P&gt;     END OF t_employee.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      constructor,&lt;/P&gt;&lt;P&gt;      add_employee&lt;/P&gt;&lt;P&gt;        IMPORTING im_no   TYPE i&lt;/P&gt;&lt;P&gt;                  im_name TYPE string&lt;/P&gt;&lt;P&gt;                  im_wage TYPE i,&lt;/P&gt;&lt;P&gt;      display_employee_list,&lt;/P&gt;&lt;P&gt;      display_no_of_employees.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    CLASS-DATA: i_employee_list TYPE TABLE OF t_employee,&lt;/P&gt;&lt;P&gt;                no_of_employees TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*-- CLASS LCL_CompanyEmployees IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    no_of_employees = no_of_employees + 1.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Adds a new employee to the list of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    l_employee-no = im_no.&lt;/P&gt;&lt;P&gt;    l_employee-name = im_name.&lt;/P&gt;&lt;P&gt;    l_employee-wage = im_wage.&lt;/P&gt;&lt;P&gt;    APPEND l_employee TO i_employee_list.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_employee_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays all employees and there wage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    WRITE: / 'List of Employees'.&lt;/P&gt;&lt;P&gt;    LOOP AT i_employee_list INTO l_employee.&lt;/P&gt;&lt;P&gt;      WRITE: / l_employee-no, l_employee-name, l_employee-wage.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_no_of_employees.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays total number of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SKIP 3.&lt;/P&gt;&lt;P&gt;    WRITE: / 'Total number of employees:', no_of_employees.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_BlueCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;          INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;        constructor&lt;/P&gt;&lt;P&gt;          IMPORTING im_no             TYPE i&lt;/P&gt;&lt;P&gt;                    im_name           TYPE string&lt;/P&gt;&lt;P&gt;                    im_hours          TYPE i&lt;/P&gt;&lt;P&gt;                    im_hourly_payment TYPE i,&lt;/P&gt;&lt;P&gt;         add_employee REDEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    DATA:no             TYPE i,&lt;/P&gt;&lt;P&gt;         name           TYPE string,&lt;/P&gt;&lt;P&gt;         hours          TYPE i,&lt;/P&gt;&lt;P&gt;         hourly_payment TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The superclass constructor method must be called from the subclass&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  constructor method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;constructor.&lt;/P&gt;&lt;P&gt;    no = im_no.&lt;/P&gt;&lt;P&gt;    name = im_name.&lt;/P&gt;&lt;P&gt;    hours = im_hours.&lt;/P&gt;&lt;P&gt;    hourly_payment = im_hourly_payment.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Calculate wage an call the superclass method add_employee to add&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the employee to the employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_wage TYPE i.&lt;/P&gt;&lt;P&gt;    l_wage = hours * hourly_payment.&lt;/P&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no = no&lt;/P&gt;&lt;P&gt;                im_name = name&lt;/P&gt;&lt;P&gt;                im_wage = l_wage.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_WhiteCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;    INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;        constructor&lt;/P&gt;&lt;P&gt;          IMPORTING im_no                 TYPE i&lt;/P&gt;&lt;P&gt;                    im_name               TYPE string&lt;/P&gt;&lt;P&gt;                    im_monthly_salary     TYPE i&lt;/P&gt;&lt;P&gt;                    im_monthly_deductions TYPE i,&lt;/P&gt;&lt;P&gt;         add_employee REDEFINITION.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    DATA:&lt;/P&gt;&lt;P&gt;      no                    TYPE i,&lt;/P&gt;&lt;P&gt;      name                  TYPE string,&lt;/P&gt;&lt;P&gt;      monthly_salary        TYPE i,&lt;/P&gt;&lt;P&gt;      monthly_deductions    TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The superclass constructor method must be called from the subclass&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  constructor method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;constructor.&lt;/P&gt;&lt;P&gt;    no = im_no.&lt;/P&gt;&lt;P&gt;    name = im_name.&lt;/P&gt;&lt;P&gt;    monthly_salary = im_monthly_salary.&lt;/P&gt;&lt;P&gt;    monthly_deductions = im_monthly_deductions.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Calculate wage an call the superclass method add_employee to add&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the employee to the employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_wage TYPE i.&lt;/P&gt;&lt;P&gt;    l_wage = monthly_salary - monthly_deductions.&lt;/P&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no = no&lt;/P&gt;&lt;P&gt;                im_name = name&lt;/P&gt;&lt;P&gt;                im_wage = l_wage.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;R E P O R T&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Object references&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,&lt;/P&gt;&lt;P&gt;  o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create bluecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_bluecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_hours = 38&lt;/P&gt;&lt;P&gt;                im_hourly_payment = 75.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_bluecollar_employee1-&amp;gt;add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create whitecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_whitecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 2&lt;/P&gt;&lt;P&gt;                im_name  = 'John Dickens'&lt;/P&gt;&lt;P&gt;                im_monthly_salary = 10000&lt;/P&gt;&lt;P&gt;                im_monthly_deductions = 2500.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Karen Johnson'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display employee list and number of employees. Note that the result&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;will be the same when called from o_whitecollar_employee1 or&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;o_bluecolarcollar_employee1, because the methods are defined&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;as static (CLASS-METHODS)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_employee_list.&lt;/P&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_no_of_employees.&lt;/P&gt;&lt;P&gt;The resulting report&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;List of Employees &lt;/P&gt;&lt;P&gt;1 Karen Johnson 2.850 &lt;/P&gt;&lt;P&gt;2 John Dickens 7.500 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Total number of employees: 2 &lt;/P&gt;&lt;P&gt;3. Interfaces&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This example is similiar to th eprevious example, however an interface is implemented with the method add_employee. Note that the interface is only implemented in the superclass ( The INTERFACE stament), but also used in the subclasses. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The interface in the example only contains a method, but an iterface can also contain attrbutes, constants, types and alias names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The output from example 3 is similiar to the output in example 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;All changes in the program compared to example 2 are marked with red.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zbc404_hf_events_3 .&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      INTERFACE lif_employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;INTERFACE lif_employee.&lt;/P&gt;&lt;P&gt;  METHODS:&lt;/P&gt;&lt;P&gt;    add_employee&lt;/P&gt;&lt;P&gt;       IMPORTING im_no   TYPE i&lt;/P&gt;&lt;P&gt;                  im_name TYPE string&lt;/P&gt;&lt;P&gt;                  im_wage TYPE i.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Super class LCL_CompanyEmployees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    INTERFACES lif_employee.&lt;/P&gt;&lt;P&gt;    TYPES:&lt;/P&gt;&lt;P&gt;      BEGIN OF t_employee,&lt;/P&gt;&lt;P&gt;        no  TYPE i,&lt;/P&gt;&lt;P&gt;        name TYPE string,&lt;/P&gt;&lt;P&gt;        wage TYPE i,&lt;/P&gt;&lt;P&gt;     END OF t_employee.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      constructor,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     add_employee      "Removed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IMPORTING im_no   TYPE i&lt;/P&gt;&lt;P&gt;                  im_name TYPE string&lt;/P&gt;&lt;P&gt;                  im_wage TYPE i,&lt;/P&gt;&lt;P&gt;      display_employee_list,&lt;/P&gt;&lt;P&gt;      display_no_of_employees.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    CLASS-DATA: i_employee_list TYPE TABLE OF t_employee,&lt;/P&gt;&lt;P&gt;                no_of_employees TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*-- CLASS LCL_CompanyEmployees IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    no_of_employees = no_of_employees + 1.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD lif_employee~add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Adds a new employee to the list of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    l_employee-no = im_no.&lt;/P&gt;&lt;P&gt;    l_employee-name = im_name.&lt;/P&gt;&lt;P&gt;    l_employee-wage = im_wage.&lt;/P&gt;&lt;P&gt;    APPEND l_employee TO i_employee_list.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_employee_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays all employees and there wage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    WRITE: / 'List of Employees'.&lt;/P&gt;&lt;P&gt;    LOOP AT i_employee_list INTO l_employee.&lt;/P&gt;&lt;P&gt;      WRITE: / l_employee-no, l_employee-name, l_employee-wage.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_no_of_employees.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays total number of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SKIP 3.&lt;/P&gt;&lt;P&gt;    WRITE: / 'Total number of employees:', no_of_employees.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_BlueCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;          INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;        constructor&lt;/P&gt;&lt;P&gt;          IMPORTING im_no             TYPE i&lt;/P&gt;&lt;P&gt;                    im_name           TYPE string&lt;/P&gt;&lt;P&gt;                    im_hours          TYPE i&lt;/P&gt;&lt;P&gt;                    im_hourly_payment TYPE i,&lt;/P&gt;&lt;P&gt;         lif_employee~add_employee REDEFINITION..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    DATA:no             TYPE i,&lt;/P&gt;&lt;P&gt;         name           TYPE string,&lt;/P&gt;&lt;P&gt;         hours          TYPE i,&lt;/P&gt;&lt;P&gt;         hourly_payment TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The superclass constructor method must be called from the subclass&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  constructor method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;constructor.&lt;/P&gt;&lt;P&gt;    no = im_no.&lt;/P&gt;&lt;P&gt;    name = im_name.&lt;/P&gt;&lt;P&gt;    hours = im_hours.&lt;/P&gt;&lt;P&gt;    hourly_payment = im_hourly_payment.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD lif_employee~add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Calculate wage an call the superclass method add_employee to add&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the employee to the employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_wage TYPE i.&lt;/P&gt;&lt;P&gt;    l_wage = hours * hourly_payment.&lt;/P&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no = no&lt;/P&gt;&lt;P&gt;                im_name = name&lt;/P&gt;&lt;P&gt;                im_wage = l_wage.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_WhiteCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;    INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;        constructor&lt;/P&gt;&lt;P&gt;          IMPORTING im_no                 TYPE i&lt;/P&gt;&lt;P&gt;                    im_name               TYPE string&lt;/P&gt;&lt;P&gt;                    im_monthly_salary     TYPE i&lt;/P&gt;&lt;P&gt;                    im_monthly_deductions TYPE i,&lt;/P&gt;&lt;P&gt;         lif_employee~add_employee REDEFINITION.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    DATA:&lt;/P&gt;&lt;P&gt;      no                    TYPE i,&lt;/P&gt;&lt;P&gt;      name                  TYPE string,&lt;/P&gt;&lt;P&gt;      monthly_salary        TYPE i,&lt;/P&gt;&lt;P&gt;      monthly_deductions    TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The superclass constructor method must be called from the subclass&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  constructor method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;constructor.&lt;/P&gt;&lt;P&gt;    no = im_no.&lt;/P&gt;&lt;P&gt;    name = im_name.&lt;/P&gt;&lt;P&gt;    monthly_salary = im_monthly_salary.&lt;/P&gt;&lt;P&gt;    monthly_deductions = im_monthly_deductions.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD lif_employee~add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Calculate wage an call the superclass method add_employee to add&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the employee to the employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_wage TYPE i.&lt;/P&gt;&lt;P&gt;    l_wage = monthly_salary - monthly_deductions.&lt;/P&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no = no&lt;/P&gt;&lt;P&gt;                im_name = name&lt;/P&gt;&lt;P&gt;                im_wage = l_wage.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;R E P O R T&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Object references&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,&lt;/P&gt;&lt;P&gt;  o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create bluecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_bluecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_hours = 38&lt;/P&gt;&lt;P&gt;                im_hourly_payment = 75.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_bluecollar_employee1-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Karen Johnson'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create whitecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_whitecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 2&lt;/P&gt;&lt;P&gt;                im_name  = 'John Dickens'&lt;/P&gt;&lt;P&gt;                im_monthly_salary = 10000&lt;/P&gt;&lt;P&gt;                im_monthly_deductions = 2500.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display employee list and number of employees. Note that the result&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;will be the same when called from o_whitecollar_employee1 or&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;o_bluecolarcollar_employee1, because the methods are defined&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;as static (CLASS-METHODS)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_employee_list.&lt;/P&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_no_of_employees.&lt;/P&gt;&lt;P&gt;4. Events&lt;/P&gt;&lt;P&gt;This is the same example as example 4. All changes are marked with red. There have been no canges to the subclasses, only to the superclass and the report, sp the code for th esubclasses is not shown.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For a simple example refer to Events in Examples.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zbc404_hf_events_4 .&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      INTERFACE lif_employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;INTERFACE lif_employee.&lt;/P&gt;&lt;P&gt;  METHODS:&lt;/P&gt;&lt;P&gt;    add_employee&lt;/P&gt;&lt;P&gt;       IMPORTING im_no   TYPE i&lt;/P&gt;&lt;P&gt;                  im_name TYPE string&lt;/P&gt;&lt;P&gt;                  im_wage TYPE i.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Super class LCL_CompanyEmployees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    TYPES:&lt;/P&gt;&lt;P&gt;    BEGIN OF t_employee,&lt;/P&gt;&lt;P&gt;      no  TYPE i,&lt;/P&gt;&lt;P&gt;      name TYPE string,&lt;/P&gt;&lt;P&gt;      wage TYPE i,&lt;/P&gt;&lt;P&gt;   END OF t_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Declare event. Note that declaration could also be placed in the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  interface&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    EVENTS: employee_added_to_list&lt;/P&gt;&lt;P&gt;        EXPORTING value(ex_employee_name) TYPE string.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CLASS-EVENTS: Events can also be defined as class-events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    INTERFACES lif_employee.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      constructor,&lt;/P&gt;&lt;P&gt;      display_employee_list,&lt;/P&gt;&lt;P&gt;      display_no_of_employees,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Declare event method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      on_employee_added_to_list FOR EVENT employee_added_to_list OF lcl_company_employees&lt;/P&gt;&lt;P&gt;         IMPORTING ex_employee_name sender.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    CLASS-DATA:&lt;/P&gt;&lt;P&gt;      i_employee_list TYPE TABLE OF t_employee,&lt;/P&gt;&lt;P&gt;      no_of_employees TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*-- CLASS LCL_CompanyEmployees IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    no_of_employees = no_of_employees + 1.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD lif_employee~add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Adds a new employee to the list of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    l_employee-no = im_no.&lt;/P&gt;&lt;P&gt;    l_employee-name = im_name.&lt;/P&gt;&lt;P&gt;    l_employee-wage = im_wage.&lt;/P&gt;&lt;P&gt;    APPEND l_employee TO i_employee_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Raise event employee_added_to_list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    RAISE EVENT employee_added_to_list&lt;/P&gt;&lt;P&gt;       EXPORTING ex_employee_name =  l_employee-name.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_employee_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays all employees and there wage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    WRITE: / 'List of Employees'.&lt;/P&gt;&lt;P&gt;    LOOP AT i_employee_list INTO l_employee.&lt;/P&gt;&lt;P&gt;      WRITE: / l_employee-no, l_employee-name, l_employee-wage.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_no_of_employees.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays total number of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SKIP 3.&lt;/P&gt;&lt;P&gt;    WRITE: / 'Total number of employees:', no_of_employees.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD on_employee_added_to_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Event method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WRITE: / 'Employee added to list', ex_employee_name.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_BlueCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;          INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt; See code in example 3...&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt; See code in example 3...&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_WhiteCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt; See code in example 3...&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt; See code in example 3...&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;R E P O R T&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Object references&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,&lt;/P&gt;&lt;P&gt;  o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create bluecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_bluecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Karen Johnson'&lt;/P&gt;&lt;P&gt;                im_hours = 38&lt;/P&gt;&lt;P&gt;                im_hourly_payment = 75.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Register event for o_bluecollar_employee1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET HANDLER o_bluecollar_employee1-&amp;gt;on_employee_added_to_list&lt;/P&gt;&lt;P&gt;     FOR o_bluecollar_employee1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_bluecollar_employee1-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create whitecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_whitecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 2&lt;/P&gt;&lt;P&gt;                im_name  = 'John Dickens'&lt;/P&gt;&lt;P&gt;                im_monthly_salary = 10000&lt;/P&gt;&lt;P&gt;               im_monthly_deductions = 2500.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Register event for o_whitecollar_employee1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET HANDLER o_whitecollar_employee1-&amp;gt;on_employee_added_to_list&lt;/P&gt;&lt;P&gt;     FOR o_whitecollar_employee1.´&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display employee list and number of employees. Note that the result&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;will be the same when called from o_whitecollar_employee1 or&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;o_bluecolarcollar_employee1, because the methods are defined&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;as static (CLASS-METHODS)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_employee_list.&lt;/P&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_no_of_employees.&lt;/P&gt;&lt;P&gt;Result:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Employee added to list Karen Johnson &lt;/P&gt;&lt;P&gt;Employee added to list John Dickens &lt;/P&gt;&lt;P&gt;List of Employees &lt;/P&gt;&lt;P&gt;1 Karen Johnson 2.850 &lt;/P&gt;&lt;P&gt;2 John Dickens 7.500 &lt;/P&gt;&lt;P&gt;Total number of employees: 2 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;heck the below links lot of info and examples r there&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.geocities.com/victorav15/sapr3/abap_ood.html" target="test_blank"&gt;http://www.geocities.com/victorav15/sapr3/abap_ood.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.brabandt.de/html/abap_oo.html" target="test_blank"&gt;http://www.brabandt.de/html/abap_oo.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this cool weblog:&lt;/P&gt;&lt;P&gt;/people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql&lt;/P&gt;&lt;P&gt;/people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt" target="test_blank"&gt;http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf" target="test_blank"&gt;http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt" target="test_blank"&gt;http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.allsaplinks.com/" target="test_blank"&gt;http://www.allsaplinks.com/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/" target="test_blank"&gt;http://www.sap-img.com/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/" target="test_blank"&gt;http://www.sapgenie.com/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/controls/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/controls/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf" target="test_blank"&gt;http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf" target="test_blank"&gt;http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;these links &lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;For funtion module to class&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;for classes&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;for methods&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;for inheritance&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;for interfaces&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 29 Jun 2007 05:19:33 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-06-29T05:19:33Z</dc:date>
    <item>
      <title>OOABAP</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476385#M557464</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can anyone help me with some examples of OOABAP&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Jun 2007 05:09:54 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476385#M557464</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-29T05:09:54Z</dc:date>
    </item>
    <item>
      <title>Re: OOABAP</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476386#M557465</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;GOto transaction ABAPDOCU and there check out the section ABAP Objects.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT demo_abap_objects_methods NO STANDARD PAGE HEADING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Global Selection Screens&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF: SCREEN 100 TITLE tit1, LINE.&lt;/P&gt;&lt;P&gt;PARAMETERS members TYPE i DEFAULT 10.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF: LINE, SCREEN 100.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF: SCREEN 200 TITLE tit2.&lt;/P&gt;&lt;P&gt;PARAMETERS: drive    RADIOBUTTON GROUP actn,&lt;/P&gt;&lt;P&gt;            stop     RADIOBUTTON GROUP actn,&lt;/P&gt;&lt;P&gt;            gearup   RADIOBUTTON GROUP actn,&lt;/P&gt;&lt;P&gt;            geardown RADIOBUTTON GROUP actn.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF: SCREEN 200.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Class Definitions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS: c_biker DEFINITION DEFERRED,&lt;/P&gt;&lt;P&gt;       c_bicycle DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS c_team DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    TYPES: biker_ref TYPE REF TO c_biker,&lt;/P&gt;&lt;P&gt;           biker_ref_tab TYPE STANDARD TABLE OF biker_ref&lt;/P&gt;&lt;P&gt;                                       WITH DEFAULT KEY,&lt;/P&gt;&lt;P&gt;           BEGIN OF status_line_type,&lt;/P&gt;&lt;P&gt;             flag(1)  TYPE c,&lt;/P&gt;&lt;P&gt;             text1(5) TYPE c,&lt;/P&gt;&lt;P&gt;             id       TYPE i,&lt;/P&gt;&lt;P&gt;             text2(7) TYPE c,&lt;/P&gt;&lt;P&gt;             text3(6) TYPE c,&lt;/P&gt;&lt;P&gt;             gear     TYPE i,&lt;/P&gt;&lt;P&gt;             text4(7) TYPE c,&lt;/P&gt;&lt;P&gt;             speed    TYPE i,&lt;/P&gt;&lt;P&gt;           END OF status_line_type.&lt;/P&gt;&lt;P&gt;    CLASS-METHODS: class_constructor.&lt;/P&gt;&lt;P&gt;    METHODS: constructor,&lt;/P&gt;&lt;P&gt;             create_team,&lt;/P&gt;&lt;P&gt;             selection,&lt;/P&gt;&lt;P&gt;             execution.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    CLASS-DATA: team_members TYPE i,&lt;/P&gt;&lt;P&gt;                counter TYPE i.&lt;/P&gt;&lt;P&gt;    DATA: id TYPE i,&lt;/P&gt;&lt;P&gt;          status_line TYPE status_line_type,&lt;/P&gt;&lt;P&gt;          status_list TYPE SORTED TABLE OF status_line_type&lt;/P&gt;&lt;P&gt;                           WITH UNIQUE KEY id,&lt;/P&gt;&lt;P&gt;          biker_tab TYPE biker_ref_tab,&lt;/P&gt;&lt;P&gt;          biker_selection LIKE biker_tab,&lt;/P&gt;&lt;P&gt;          biker LIKE LINE OF biker_tab.&lt;/P&gt;&lt;P&gt;    METHODS: write_list.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS c_biker DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS: constructor IMPORTING team_id TYPE i members TYPE i,&lt;/P&gt;&lt;P&gt;             select_action,&lt;/P&gt;&lt;P&gt;             status_line EXPORTING line TYPE c_team=&amp;gt;status_line_type.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    CLASS-DATA counter TYPE i.&lt;/P&gt;&lt;P&gt;    DATA: id TYPE i,&lt;/P&gt;&lt;P&gt;          bike TYPE REF TO c_bicycle,&lt;/P&gt;&lt;P&gt;          gear_status  TYPE i VALUE 1,&lt;/P&gt;&lt;P&gt;          speed_status TYPE i VALUE 0.&lt;/P&gt;&lt;P&gt;    METHODS biker_action IMPORTING action TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS c_bicycle DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS: drive EXPORTING velocity TYPE i,&lt;/P&gt;&lt;P&gt;             stop  EXPORTING velocity TYPE i,&lt;/P&gt;&lt;P&gt;             change_gear IMPORTING change TYPE i&lt;/P&gt;&lt;P&gt;                         RETURNING value(gear) TYPE i&lt;/P&gt;&lt;P&gt;                         EXCEPTIONS gear_min gear_max.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    DATA: speed TYPE i,&lt;/P&gt;&lt;P&gt;          gear  TYPE i VALUE 1.&lt;/P&gt;&lt;P&gt;    CONSTANTS: max_gear TYPE i VALUE 18,&lt;/P&gt;&lt;P&gt;               min_gear TYPE i VALUE 1.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Class Implementations&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS c_team IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD class_constructor.&lt;/P&gt;&lt;P&gt;    tit1 = 'Team members ?'.&lt;/P&gt;&lt;P&gt;    CALL SELECTION-SCREEN 100 STARTING AT 5 3.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      team_members = members.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    counter = counter + 1.&lt;/P&gt;&lt;P&gt;    id = counter.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD create_team.&lt;/P&gt;&lt;P&gt;    DO team_members TIMES.&lt;/P&gt;&lt;P&gt;      CREATE OBJECT biker EXPORTING team_id = id members = team_members.&lt;/P&gt;&lt;P&gt;      APPEND biker TO biker_tab.&lt;/P&gt;&lt;P&gt;      CALL METHOD biker-&amp;gt;status_line IMPORTING line = status_line.&lt;/P&gt;&lt;P&gt;      APPEND status_line TO status_list.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD selection.&lt;/P&gt;&lt;P&gt;    CLEAR biker_selection.&lt;/P&gt;&lt;P&gt;    DO.&lt;/P&gt;&lt;P&gt;      READ LINE sy-index.&lt;/P&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0. EXIT. ENDIF.&lt;/P&gt;&lt;P&gt;      IF sy-lisel+0(1) = 'X'.&lt;/P&gt;&lt;P&gt;        READ TABLE biker_tab INTO biker INDEX sy-index.&lt;/P&gt;&lt;P&gt;        APPEND biker TO biker_selection.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;    CALL METHOD write_list.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD execution.&lt;/P&gt;&lt;P&gt;    CHECK NOT biker_selection IS INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT biker_selection INTO biker.&lt;/P&gt;&lt;P&gt;      CALL METHOD biker-&amp;gt;select_action.&lt;/P&gt;&lt;P&gt;      CALL METHOD biker-&amp;gt;status_line IMPORTING line = status_line.&lt;/P&gt;&lt;P&gt;      MODIFY TABLE status_list FROM status_line.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;    CALL METHOD write_list.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD write_list.&lt;/P&gt;&lt;P&gt;    SET TITLEBAR 'TIT'.&lt;/P&gt;&lt;P&gt;    sy-lsind = 0.&lt;/P&gt;&lt;P&gt;    SKIP TO LINE 1.&lt;/P&gt;&lt;P&gt;    POSITION 1.&lt;/P&gt;&lt;P&gt;    LOOP AT status_list INTO status_line.&lt;/P&gt;&lt;P&gt;      WRITE: / status_line-flag AS CHECKBOX,&lt;/P&gt;&lt;P&gt;               status_line-text1,&lt;/P&gt;&lt;P&gt;               status_line-id,&lt;/P&gt;&lt;P&gt;               status_line-text2,&lt;/P&gt;&lt;P&gt;               status_line-text3,&lt;/P&gt;&lt;P&gt;               status_line-gear,&lt;/P&gt;&lt;P&gt;               status_line-text4,&lt;/P&gt;&lt;P&gt;               status_line-speed.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS c_biker IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    counter = counter + 1.&lt;/P&gt;&lt;P&gt;    id = counter - members * ( team_id - 1 ).&lt;/P&gt;&lt;P&gt;    CREATE OBJECT bike.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD select_action.&lt;/P&gt;&lt;P&gt;    DATA activity TYPE i.&lt;/P&gt;&lt;P&gt;    tit2 = 'Select action for BIKE'.&lt;/P&gt;&lt;P&gt;    tit2+24(3) = id.&lt;/P&gt;&lt;P&gt;    CALL SELECTION-SCREEN 200 STARTING AT 5 15.&lt;/P&gt;&lt;P&gt;    CHECK NOT sy-subrc GT 0.&lt;/P&gt;&lt;P&gt;    IF gearup = 'X' OR geardown = 'X'.&lt;/P&gt;&lt;P&gt;      IF gearup = 'X'.&lt;/P&gt;&lt;P&gt;        activity = 1.&lt;/P&gt;&lt;P&gt;      ELSEIF geardown = 'X'.&lt;/P&gt;&lt;P&gt;        activity = -1.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSEIF drive = 'X'.&lt;/P&gt;&lt;P&gt;      activity = 2.&lt;/P&gt;&lt;P&gt;    ELSEIF stop = 'X'.&lt;/P&gt;&lt;P&gt;      activity = 3.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    CALL METHOD biker_action( activity ).&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD biker_action.&lt;/P&gt;&lt;P&gt;    CASE action.&lt;/P&gt;&lt;P&gt;      WHEN -1 OR 1.&lt;/P&gt;&lt;P&gt;        CALL METHOD bike-&amp;gt;change_gear&lt;/P&gt;&lt;P&gt;                          EXPORTING change = action&lt;/P&gt;&lt;P&gt;                          RECEIVING gear = gear_status&lt;/P&gt;&lt;P&gt;                          EXCEPTIONS gear_max = 1&lt;/P&gt;&lt;P&gt;                                     gear_min = 2.&lt;/P&gt;&lt;P&gt;        CASE sy-subrc.&lt;/P&gt;&lt;P&gt;          WHEN 1.&lt;/P&gt;&lt;P&gt;            MESSAGE i888(SABAPDOCU) WITH 'BIKE' id&lt;/P&gt;&lt;P&gt;                                  ' is already at maximal gear!'.&lt;/P&gt;&lt;P&gt;          WHEN 2.&lt;/P&gt;&lt;P&gt;            MESSAGE i888(SABAPDOCU) WITH 'BIKE' id&lt;/P&gt;&lt;P&gt;                                  ' is already at minimal gear!'.&lt;/P&gt;&lt;P&gt;        ENDCASE.&lt;/P&gt;&lt;P&gt;      WHEN 2.&lt;/P&gt;&lt;P&gt;        CALL METHOD bike-&amp;gt;drive IMPORTING velocity = speed_status.&lt;/P&gt;&lt;P&gt;      WHEN 3.&lt;/P&gt;&lt;P&gt;        CALL METHOD bike-&amp;gt;stop  IMPORTING velocity = speed_status.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD status_line.&lt;/P&gt;&lt;P&gt;    line-flag = space.&lt;/P&gt;&lt;P&gt;    line-text1 = 'Biker'.&lt;/P&gt;&lt;P&gt;    line-id = id.&lt;/P&gt;&lt;P&gt;    line-text2 = 'Status:'.&lt;/P&gt;&lt;P&gt;    line-text3 = 'Gear = '.&lt;/P&gt;&lt;P&gt;    line-gear  = gear_status.&lt;/P&gt;&lt;P&gt;    line-text4 = 'Speed = '.&lt;/P&gt;&lt;P&gt;    line-speed = speed_status.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS c_bicycle IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD drive.&lt;/P&gt;&lt;P&gt;    speed = speed  + gear * 10.&lt;/P&gt;&lt;P&gt;    velocity = speed.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD stop.&lt;/P&gt;&lt;P&gt;    speed = 0.&lt;/P&gt;&lt;P&gt;    velocity = speed.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD change_gear.&lt;/P&gt;&lt;P&gt;    gear = me-&amp;gt;gear.&lt;/P&gt;&lt;P&gt;    gear = gear + change.&lt;/P&gt;&lt;P&gt;    IF gear GT max_gear.&lt;/P&gt;&lt;P&gt;      gear = max_gear.&lt;/P&gt;&lt;P&gt;      RAISE gear_max.&lt;/P&gt;&lt;P&gt;    ELSEIF gear LT min_gear.&lt;/P&gt;&lt;P&gt;      gear = min_gear.&lt;/P&gt;&lt;P&gt;      RAISE gear_min.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    me-&amp;gt;gear = gear.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Global Program Data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES team TYPE REF TO c_team.&lt;/P&gt;&lt;P&gt;DATA: team_blue  TYPE team,&lt;/P&gt;&lt;P&gt;      team_green TYPE team,&lt;/P&gt;&lt;P&gt;      team_red   TYPE team.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA  color(5) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Program events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  CREATE OBJECT: team_blue,&lt;/P&gt;&lt;P&gt;                 team_green,&lt;/P&gt;&lt;P&gt;                 team_red.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD: team_blue-&amp;gt;create_team,&lt;/P&gt;&lt;P&gt;               team_green-&amp;gt;create_team,&lt;/P&gt;&lt;P&gt;               team_red-&amp;gt;create_team.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'TEAMLIST'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE '                   Select a team!             ' COLOR = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT USER-COMMAND.&lt;/P&gt;&lt;P&gt;  CASE sy-ucomm.&lt;/P&gt;&lt;P&gt;    WHEN 'TEAM_BLUE'.&lt;/P&gt;&lt;P&gt;      color = 'BLUE '.&lt;/P&gt;&lt;P&gt;      FORMAT COLOR = 1 INTENSIFIED ON INVERSE ON.&lt;/P&gt;&lt;P&gt;      CALL METHOD team_blue-&amp;gt;selection.&lt;/P&gt;&lt;P&gt;    WHEN 'TEAM_GREEN'.&lt;/P&gt;&lt;P&gt;      color = 'GREEN'.&lt;/P&gt;&lt;P&gt;      FORMAT COLOR = 5 INTENSIFIED ON INVERSE ON.&lt;/P&gt;&lt;P&gt;      CALL METHOD team_green-&amp;gt;selection.&lt;/P&gt;&lt;P&gt;    WHEN 'TEAM_RED'.&lt;/P&gt;&lt;P&gt;      color = 'RED '.&lt;/P&gt;&lt;P&gt;      FORMAT COLOR = 6 INTENSIFIED ON INVERSE ON.&lt;/P&gt;&lt;P&gt;      CALL METHOD team_red-&amp;gt;selection.&lt;/P&gt;&lt;P&gt;    WHEN 'EXECUTION'.&lt;/P&gt;&lt;P&gt;      CASE color.&lt;/P&gt;&lt;P&gt;        WHEN 'BLUE '.&lt;/P&gt;&lt;P&gt;          FORMAT COLOR = 1 INTENSIFIED ON INVERSE ON.&lt;/P&gt;&lt;P&gt;          CALL METHOD team_blue-&amp;gt;selection.&lt;/P&gt;&lt;P&gt;          CALL METHOD team_blue-&amp;gt;execution.&lt;/P&gt;&lt;P&gt;        WHEN 'GREEN'.&lt;/P&gt;&lt;P&gt;          FORMAT COLOR = 5 INTENSIFIED ON INVERSE ON.&lt;/P&gt;&lt;P&gt;          CALL METHOD team_green-&amp;gt;selection.&lt;/P&gt;&lt;P&gt;          CALL METHOD team_green-&amp;gt;execution.&lt;/P&gt;&lt;P&gt;        WHEN 'RED '.&lt;/P&gt;&lt;P&gt;          FORMAT COLOR = 6 INTENSIFIED ON INVERSE ON.&lt;/P&gt;&lt;P&gt;          CALL METHOD team_red-&amp;gt;selection.&lt;/P&gt;&lt;P&gt;          CALL METHOD team_red-&amp;gt;execution.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sesh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Jun 2007 05:11:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476386#M557465</guid>
      <dc:creator>seshatalpasai_madala</dc:creator>
      <dc:date>2007-06-29T05:11:41Z</dc:date>
    </item>
    <item>
      <title>Re: OOABAP</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476387#M557466</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please check this online document (starting page 1291).&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf" target="test_blank"&gt;http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also check this links as well.&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw2004s/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw2004s/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.futureobjects.de/content/intro_oo_e.html" target="test_blank"&gt;http://www.futureobjects.de/content/intro_oo_e.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/business-add-in-you-need-to-understand-abap-oo-interface-concept.htm" target="test_blank"&gt;http://www.sap-img.com/abap/business-add-in-you-need-to-understand-abap-oo-interface-concept.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;/people/ravikumar.allampallam/blog/2005/02/11/abap-oo-in-action&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;check the below links lot of info and examples r there&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.geocities.com/victorav15/sapr3/abap_ood.html" target="test_blank"&gt;http://www.geocities.com/victorav15/sapr3/abap_ood.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.brabandt.de/html/abap_oo.html" target="test_blank"&gt;http://www.brabandt.de/html/abap_oo.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this cool weblog:&lt;/P&gt;&lt;P&gt;/people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql&lt;/P&gt;&lt;P&gt;/people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt" target="test_blank"&gt;http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf" target="test_blank"&gt;http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt" target="test_blank"&gt;http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.allsaplinks.com/" target="test_blank"&gt;http://www.allsaplinks.com/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/" target="test_blank"&gt;http://www.sap-img.com/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/" target="test_blank"&gt;http://www.sapgenie.com/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com" target="test_blank"&gt;http://help.sap.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/controls/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/controls/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf" target="test_blank"&gt;http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf" target="test_blank"&gt;http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;these links &lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For funtion module to class&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for classes&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for methods&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for inheritance&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for interfaces&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this resolves your query.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward all the helpful answers.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kishi.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Jun 2007 05:13:52 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476387#M557466</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-29T05:13:52Z</dc:date>
    </item>
    <item>
      <title>Re: OOABAP</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476388#M557467</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Give me your mail id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Anitha&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Jun 2007 05:17:19 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476388#M557467</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-29T05:17:19Z</dc:date>
    </item>
    <item>
      <title>Re: OOABAP</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476389#M557468</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This example is a step by step example, moving from a simple class to more sophisticated classes, &lt;/P&gt;&lt;P&gt;and covers inheritance, interfaces and events.&lt;/P&gt;&lt;P&gt;Simple class &lt;/P&gt;&lt;P&gt;Inheritance and ploymorphism &lt;/P&gt;&lt;P&gt;Interfaces &lt;/P&gt;&lt;P&gt;Events &lt;/P&gt;&lt;P&gt; 1. Simple class&lt;/P&gt;&lt;P&gt;This example shows how to create a simple employee class. The constructor method is used to initialize number and name of thje employee when the object is created. A display_employee method can be called to show the attributes of the employee, and CLASS-METHOD dosplay_no_of_employees can be called to show the total number of employees (Number of instances of the employee class).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zbc404_hf_events_1.&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;L C L _ E M P L O Y E E&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;*---- LCL Employee - Definition&lt;/P&gt;&lt;P&gt;CLASS lcl_employee DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The public section is accesible from outside   &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;    TYPES:&lt;/P&gt;&lt;P&gt;      BEGIN OF t_employee,&lt;/P&gt;&lt;P&gt;        no  TYPE i,&lt;/P&gt;&lt;P&gt;        name TYPE string,&lt;/P&gt;&lt;P&gt;     END OF t_employee.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      constructor&lt;/P&gt;&lt;P&gt;        IMPORTING im_employee_no TYPE i&lt;/P&gt;&lt;P&gt;                  im_employee_name TYPE string,&lt;/P&gt;&lt;P&gt;      display_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Class methods are global for all instances       &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLASS-METHODS: display_no_of_employees.&lt;/P&gt;&lt;P&gt;  PROTECTED SECTION.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The protecetd section is accesible from the class and its subclasses  &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Class data are global for all instances       &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLASS-DATA: g_no_of_employees TYPE i.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The private section is only accesible from within the classs  &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: g_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*--- LCL Employee - Implementation&lt;/P&gt;&lt;P&gt;CLASS lcl_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    g_employee-no = im_employee_no.&lt;/P&gt;&lt;P&gt;    g_employee-name = im_employee_name.&lt;/P&gt;&lt;P&gt;    g_no_of_employees = g_no_of_employees + 1.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD display_employee.&lt;/P&gt;&lt;P&gt;    WRITE:/ 'Employee', g_employee-no, g_employee-name.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_no_of_employees.&lt;/P&gt;&lt;P&gt;    WRITE: / 'Number of employees is:', g_no_of_employees.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;R E P O R T&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;DATA: g_employee1 TYPE REF TO lcl_employee,&lt;/P&gt;&lt;P&gt;      g_employee2 TYPE REF TO lcl_employee.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  CREATE OBJECT g_employee1&lt;/P&gt;&lt;P&gt;    EXPORTING im_employee_no = 1&lt;/P&gt;&lt;P&gt;              im_employee_name = 'John Jones'.&lt;/P&gt;&lt;P&gt;  CREATE OBJECT g_employee2&lt;/P&gt;&lt;P&gt;    EXPORTING im_employee_no = 2&lt;/P&gt;&lt;P&gt;              im_employee_name = 'Sally Summer'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD g_employee1-&amp;gt;display_employee.&lt;/P&gt;&lt;P&gt;  CALL METHOD g_employee2-&amp;gt;display_employee.&lt;/P&gt;&lt;P&gt;  CALL METHOD g_employee2-&amp;gt;display_no_of_employees.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. Inheritance and polymorphism&lt;/P&gt;&lt;P&gt;This example uses a superclass lcl_company_employees and two subclasses lcl_bluecollar_employee and lcl_whitecollar_employee to add employees to a list and then display a list of employees and there wages. The wages are calcukated in the method add_employee, but as the wages are calculated differently for blue collar employees and white collar emplyees, the superclass method add_employee is redeifined in the subclasses.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Principles:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Create super class LCL_CompanyEmployees. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The class has the methods:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Constructor &lt;/P&gt;&lt;P&gt;Add_Employee - Adds a new employee to the list of employees &lt;/P&gt;&lt;P&gt;Display_Employee_List - Displays all employees and there wage &lt;/P&gt;&lt;P&gt;Display_no_of_employees - Displays total number of employees &lt;/P&gt;&lt;P&gt;Note the use of CLASS-DATA to keep the list of employees and number of employees the same from instance to instance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Create subclasses lcl_bluecollar_employee and lcl_whitecollar_employee. The calsses are identical, except for the redifinition of the add_employee method, where the caclculation of wage is different.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Methodes: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Constructor. The constructor is used to initialize the attributes of the employee. Note that the constructor in the supclasss has to be called from within the constructor of the subclass. &lt;/P&gt;&lt;P&gt;Add_Employee. This is a redinition of the same method in the superclass. In the redefined class the wage is calcuated, and the superclass method is called to add the employees to the emploee list.: &lt;/P&gt;&lt;P&gt;The program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zbc404_hf_events_2 .&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Super class LCL_CompanyEmployees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    TYPES:&lt;/P&gt;&lt;P&gt;      BEGIN OF t_employee,&lt;/P&gt;&lt;P&gt;        no  TYPE i,&lt;/P&gt;&lt;P&gt;        name TYPE string,&lt;/P&gt;&lt;P&gt;        wage TYPE i,&lt;/P&gt;&lt;P&gt;     END OF t_employee.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      constructor,&lt;/P&gt;&lt;P&gt;      add_employee&lt;/P&gt;&lt;P&gt;        IMPORTING im_no   TYPE i&lt;/P&gt;&lt;P&gt;                  im_name TYPE string&lt;/P&gt;&lt;P&gt;                  im_wage TYPE i,&lt;/P&gt;&lt;P&gt;      display_employee_list,&lt;/P&gt;&lt;P&gt;      display_no_of_employees.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    CLASS-DATA: i_employee_list TYPE TABLE OF t_employee,&lt;/P&gt;&lt;P&gt;                no_of_employees TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*-- CLASS LCL_CompanyEmployees IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    no_of_employees = no_of_employees + 1.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Adds a new employee to the list of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    l_employee-no = im_no.&lt;/P&gt;&lt;P&gt;    l_employee-name = im_name.&lt;/P&gt;&lt;P&gt;    l_employee-wage = im_wage.&lt;/P&gt;&lt;P&gt;    APPEND l_employee TO i_employee_list.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_employee_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays all employees and there wage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    WRITE: / 'List of Employees'.&lt;/P&gt;&lt;P&gt;    LOOP AT i_employee_list INTO l_employee.&lt;/P&gt;&lt;P&gt;      WRITE: / l_employee-no, l_employee-name, l_employee-wage.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_no_of_employees.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays total number of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SKIP 3.&lt;/P&gt;&lt;P&gt;    WRITE: / 'Total number of employees:', no_of_employees.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_BlueCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;          INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;        constructor&lt;/P&gt;&lt;P&gt;          IMPORTING im_no             TYPE i&lt;/P&gt;&lt;P&gt;                    im_name           TYPE string&lt;/P&gt;&lt;P&gt;                    im_hours          TYPE i&lt;/P&gt;&lt;P&gt;                    im_hourly_payment TYPE i,&lt;/P&gt;&lt;P&gt;         add_employee REDEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    DATA:no             TYPE i,&lt;/P&gt;&lt;P&gt;         name           TYPE string,&lt;/P&gt;&lt;P&gt;         hours          TYPE i,&lt;/P&gt;&lt;P&gt;         hourly_payment TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The superclass constructor method must be called from the subclass&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  constructor method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;constructor.&lt;/P&gt;&lt;P&gt;    no = im_no.&lt;/P&gt;&lt;P&gt;    name = im_name.&lt;/P&gt;&lt;P&gt;    hours = im_hours.&lt;/P&gt;&lt;P&gt;    hourly_payment = im_hourly_payment.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Calculate wage an call the superclass method add_employee to add&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the employee to the employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_wage TYPE i.&lt;/P&gt;&lt;P&gt;    l_wage = hours * hourly_payment.&lt;/P&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no = no&lt;/P&gt;&lt;P&gt;                im_name = name&lt;/P&gt;&lt;P&gt;                im_wage = l_wage.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_WhiteCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;    INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;        constructor&lt;/P&gt;&lt;P&gt;          IMPORTING im_no                 TYPE i&lt;/P&gt;&lt;P&gt;                    im_name               TYPE string&lt;/P&gt;&lt;P&gt;                    im_monthly_salary     TYPE i&lt;/P&gt;&lt;P&gt;                    im_monthly_deductions TYPE i,&lt;/P&gt;&lt;P&gt;         add_employee REDEFINITION.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    DATA:&lt;/P&gt;&lt;P&gt;      no                    TYPE i,&lt;/P&gt;&lt;P&gt;      name                  TYPE string,&lt;/P&gt;&lt;P&gt;      monthly_salary        TYPE i,&lt;/P&gt;&lt;P&gt;      monthly_deductions    TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The superclass constructor method must be called from the subclass&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  constructor method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;constructor.&lt;/P&gt;&lt;P&gt;    no = im_no.&lt;/P&gt;&lt;P&gt;    name = im_name.&lt;/P&gt;&lt;P&gt;    monthly_salary = im_monthly_salary.&lt;/P&gt;&lt;P&gt;    monthly_deductions = im_monthly_deductions.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Calculate wage an call the superclass method add_employee to add&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the employee to the employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_wage TYPE i.&lt;/P&gt;&lt;P&gt;    l_wage = monthly_salary - monthly_deductions.&lt;/P&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no = no&lt;/P&gt;&lt;P&gt;                im_name = name&lt;/P&gt;&lt;P&gt;                im_wage = l_wage.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;R E P O R T&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Object references&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,&lt;/P&gt;&lt;P&gt;  o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create bluecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_bluecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_hours = 38&lt;/P&gt;&lt;P&gt;                im_hourly_payment = 75.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_bluecollar_employee1-&amp;gt;add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create whitecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_whitecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 2&lt;/P&gt;&lt;P&gt;                im_name  = 'John Dickens'&lt;/P&gt;&lt;P&gt;                im_monthly_salary = 10000&lt;/P&gt;&lt;P&gt;                im_monthly_deductions = 2500.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Karen Johnson'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display employee list and number of employees. Note that the result&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;will be the same when called from o_whitecollar_employee1 or&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;o_bluecolarcollar_employee1, because the methods are defined&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;as static (CLASS-METHODS)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_employee_list.&lt;/P&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_no_of_employees.&lt;/P&gt;&lt;P&gt;The resulting report&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;List of Employees &lt;/P&gt;&lt;P&gt;1 Karen Johnson 2.850 &lt;/P&gt;&lt;P&gt;2 John Dickens 7.500 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Total number of employees: 2 &lt;/P&gt;&lt;P&gt;3. Interfaces&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This example is similiar to th eprevious example, however an interface is implemented with the method add_employee. Note that the interface is only implemented in the superclass ( The INTERFACE stament), but also used in the subclasses. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The interface in the example only contains a method, but an iterface can also contain attrbutes, constants, types and alias names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The output from example 3 is similiar to the output in example 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;All changes in the program compared to example 2 are marked with red.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zbc404_hf_events_3 .&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      INTERFACE lif_employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;INTERFACE lif_employee.&lt;/P&gt;&lt;P&gt;  METHODS:&lt;/P&gt;&lt;P&gt;    add_employee&lt;/P&gt;&lt;P&gt;       IMPORTING im_no   TYPE i&lt;/P&gt;&lt;P&gt;                  im_name TYPE string&lt;/P&gt;&lt;P&gt;                  im_wage TYPE i.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Super class LCL_CompanyEmployees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    INTERFACES lif_employee.&lt;/P&gt;&lt;P&gt;    TYPES:&lt;/P&gt;&lt;P&gt;      BEGIN OF t_employee,&lt;/P&gt;&lt;P&gt;        no  TYPE i,&lt;/P&gt;&lt;P&gt;        name TYPE string,&lt;/P&gt;&lt;P&gt;        wage TYPE i,&lt;/P&gt;&lt;P&gt;     END OF t_employee.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      constructor,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     add_employee      "Removed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IMPORTING im_no   TYPE i&lt;/P&gt;&lt;P&gt;                  im_name TYPE string&lt;/P&gt;&lt;P&gt;                  im_wage TYPE i,&lt;/P&gt;&lt;P&gt;      display_employee_list,&lt;/P&gt;&lt;P&gt;      display_no_of_employees.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    CLASS-DATA: i_employee_list TYPE TABLE OF t_employee,&lt;/P&gt;&lt;P&gt;                no_of_employees TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*-- CLASS LCL_CompanyEmployees IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    no_of_employees = no_of_employees + 1.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD lif_employee~add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Adds a new employee to the list of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    l_employee-no = im_no.&lt;/P&gt;&lt;P&gt;    l_employee-name = im_name.&lt;/P&gt;&lt;P&gt;    l_employee-wage = im_wage.&lt;/P&gt;&lt;P&gt;    APPEND l_employee TO i_employee_list.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_employee_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays all employees and there wage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    WRITE: / 'List of Employees'.&lt;/P&gt;&lt;P&gt;    LOOP AT i_employee_list INTO l_employee.&lt;/P&gt;&lt;P&gt;      WRITE: / l_employee-no, l_employee-name, l_employee-wage.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_no_of_employees.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays total number of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SKIP 3.&lt;/P&gt;&lt;P&gt;    WRITE: / 'Total number of employees:', no_of_employees.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_BlueCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;          INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;        constructor&lt;/P&gt;&lt;P&gt;          IMPORTING im_no             TYPE i&lt;/P&gt;&lt;P&gt;                    im_name           TYPE string&lt;/P&gt;&lt;P&gt;                    im_hours          TYPE i&lt;/P&gt;&lt;P&gt;                    im_hourly_payment TYPE i,&lt;/P&gt;&lt;P&gt;         lif_employee~add_employee REDEFINITION..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    DATA:no             TYPE i,&lt;/P&gt;&lt;P&gt;         name           TYPE string,&lt;/P&gt;&lt;P&gt;         hours          TYPE i,&lt;/P&gt;&lt;P&gt;         hourly_payment TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The superclass constructor method must be called from the subclass&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  constructor method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;constructor.&lt;/P&gt;&lt;P&gt;    no = im_no.&lt;/P&gt;&lt;P&gt;    name = im_name.&lt;/P&gt;&lt;P&gt;    hours = im_hours.&lt;/P&gt;&lt;P&gt;    hourly_payment = im_hourly_payment.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD lif_employee~add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Calculate wage an call the superclass method add_employee to add&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the employee to the employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_wage TYPE i.&lt;/P&gt;&lt;P&gt;    l_wage = hours * hourly_payment.&lt;/P&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no = no&lt;/P&gt;&lt;P&gt;                im_name = name&lt;/P&gt;&lt;P&gt;                im_wage = l_wage.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_WhiteCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;    INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;        constructor&lt;/P&gt;&lt;P&gt;          IMPORTING im_no                 TYPE i&lt;/P&gt;&lt;P&gt;                    im_name               TYPE string&lt;/P&gt;&lt;P&gt;                    im_monthly_salary     TYPE i&lt;/P&gt;&lt;P&gt;                    im_monthly_deductions TYPE i,&lt;/P&gt;&lt;P&gt;         lif_employee~add_employee REDEFINITION.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    DATA:&lt;/P&gt;&lt;P&gt;      no                    TYPE i,&lt;/P&gt;&lt;P&gt;      name                  TYPE string,&lt;/P&gt;&lt;P&gt;      monthly_salary        TYPE i,&lt;/P&gt;&lt;P&gt;      monthly_deductions    TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The superclass constructor method must be called from the subclass&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  constructor method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;constructor.&lt;/P&gt;&lt;P&gt;    no = im_no.&lt;/P&gt;&lt;P&gt;    name = im_name.&lt;/P&gt;&lt;P&gt;    monthly_salary = im_monthly_salary.&lt;/P&gt;&lt;P&gt;    monthly_deductions = im_monthly_deductions.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD lif_employee~add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Calculate wage an call the superclass method add_employee to add&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the employee to the employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_wage TYPE i.&lt;/P&gt;&lt;P&gt;    l_wage = monthly_salary - monthly_deductions.&lt;/P&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no = no&lt;/P&gt;&lt;P&gt;                im_name = name&lt;/P&gt;&lt;P&gt;                im_wage = l_wage.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;R E P O R T&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Object references&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,&lt;/P&gt;&lt;P&gt;  o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create bluecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_bluecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_hours = 38&lt;/P&gt;&lt;P&gt;                im_hourly_payment = 75.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_bluecollar_employee1-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Karen Johnson'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create whitecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_whitecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 2&lt;/P&gt;&lt;P&gt;                im_name  = 'John Dickens'&lt;/P&gt;&lt;P&gt;                im_monthly_salary = 10000&lt;/P&gt;&lt;P&gt;                im_monthly_deductions = 2500.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display employee list and number of employees. Note that the result&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;will be the same when called from o_whitecollar_employee1 or&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;o_bluecolarcollar_employee1, because the methods are defined&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;as static (CLASS-METHODS)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_employee_list.&lt;/P&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_no_of_employees.&lt;/P&gt;&lt;P&gt;4. Events&lt;/P&gt;&lt;P&gt;This is the same example as example 4. All changes are marked with red. There have been no canges to the subclasses, only to the superclass and the report, sp the code for th esubclasses is not shown.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For a simple example refer to Events in Examples.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zbc404_hf_events_4 .&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      INTERFACE lif_employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;INTERFACE lif_employee.&lt;/P&gt;&lt;P&gt;  METHODS:&lt;/P&gt;&lt;P&gt;    add_employee&lt;/P&gt;&lt;P&gt;       IMPORTING im_no   TYPE i&lt;/P&gt;&lt;P&gt;                  im_name TYPE string&lt;/P&gt;&lt;P&gt;                  im_wage TYPE i.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Super class LCL_CompanyEmployees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees DEFINITION.&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    TYPES:&lt;/P&gt;&lt;P&gt;    BEGIN OF t_employee,&lt;/P&gt;&lt;P&gt;      no  TYPE i,&lt;/P&gt;&lt;P&gt;      name TYPE string,&lt;/P&gt;&lt;P&gt;      wage TYPE i,&lt;/P&gt;&lt;P&gt;   END OF t_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Declare event. Note that declaration could also be placed in the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  interface&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    EVENTS: employee_added_to_list&lt;/P&gt;&lt;P&gt;        EXPORTING value(ex_employee_name) TYPE string.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CLASS-EVENTS: Events can also be defined as class-events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    INTERFACES lif_employee.&lt;/P&gt;&lt;P&gt;    METHODS:&lt;/P&gt;&lt;P&gt;      constructor,&lt;/P&gt;&lt;P&gt;      display_employee_list,&lt;/P&gt;&lt;P&gt;      display_no_of_employees,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Declare event method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      on_employee_added_to_list FOR EVENT employee_added_to_list OF lcl_company_employees&lt;/P&gt;&lt;P&gt;         IMPORTING ex_employee_name sender.&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;    CLASS-DATA:&lt;/P&gt;&lt;P&gt;      i_employee_list TYPE TABLE OF t_employee,&lt;/P&gt;&lt;P&gt;      no_of_employees TYPE i.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*-- CLASS LCL_CompanyEmployees IMPLEMENTATION&lt;/P&gt;&lt;P&gt;CLASS lcl_company_employees IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;    no_of_employees = no_of_employees + 1.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD lif_employee~add_employee.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Adds a new employee to the list of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    l_employee-no = im_no.&lt;/P&gt;&lt;P&gt;    l_employee-name = im_name.&lt;/P&gt;&lt;P&gt;    l_employee-wage = im_wage.&lt;/P&gt;&lt;P&gt;    APPEND l_employee TO i_employee_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Raise event employee_added_to_list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    RAISE EVENT employee_added_to_list&lt;/P&gt;&lt;P&gt;       EXPORTING ex_employee_name =  l_employee-name.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_employee_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays all employees and there wage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    DATA: l_employee TYPE t_employee.&lt;/P&gt;&lt;P&gt;    WRITE: / 'List of Employees'.&lt;/P&gt;&lt;P&gt;    LOOP AT i_employee_list INTO l_employee.&lt;/P&gt;&lt;P&gt;      WRITE: / l_employee-no, l_employee-name, l_employee-wage.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD display_no_of_employees.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Displays total number of employees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SKIP 3.&lt;/P&gt;&lt;P&gt;    WRITE: / 'Total number of employees:', no_of_employees.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;  METHOD on_employee_added_to_list.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Event method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WRITE: / 'Employee added to list', ex_employee_name.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_BlueCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt;          INHERITING FROM lcl_company_employees.&lt;/P&gt;&lt;P&gt; See code in example 3...&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;CLASS lcl_bluecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt; See code in example 3...&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sub class LCL_WhiteCollar_Employee&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee DEFINITION&lt;/P&gt;&lt;P&gt; See code in example 3...&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;CLASS lcl_whitecollar_employee IMPLEMENTATION.&lt;/P&gt;&lt;P&gt; See code in example 3...&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;R E P O R T&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Object references&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,&lt;/P&gt;&lt;P&gt;  o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create bluecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_bluecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Karen Johnson'&lt;/P&gt;&lt;P&gt;                im_hours = 38&lt;/P&gt;&lt;P&gt;                im_hourly_payment = 75.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Register event for o_bluecollar_employee1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET HANDLER o_bluecollar_employee1-&amp;gt;on_employee_added_to_list&lt;/P&gt;&lt;P&gt;     FOR o_bluecollar_employee1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_bluecollar_employee1-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create whitecollar employee obeject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE OBJECT o_whitecollar_employee1&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 2&lt;/P&gt;&lt;P&gt;                im_name  = 'John Dickens'&lt;/P&gt;&lt;P&gt;                im_monthly_salary = 10000&lt;/P&gt;&lt;P&gt;               im_monthly_deductions = 2500.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Register event for o_whitecollar_employee1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET HANDLER o_whitecollar_employee1-&amp;gt;on_employee_added_to_list&lt;/P&gt;&lt;P&gt;     FOR o_whitecollar_employee1.´&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add bluecollar employee to employee list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;lif_employee~add_employee&lt;/P&gt;&lt;P&gt;      EXPORTING im_no  = 1&lt;/P&gt;&lt;P&gt;                im_name  = 'Gylle Karen'&lt;/P&gt;&lt;P&gt;                im_wage = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display employee list and number of employees. Note that the result&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;will be the same when called from o_whitecollar_employee1 or&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;o_bluecolarcollar_employee1, because the methods are defined&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;as static (CLASS-METHODS)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_employee_list.&lt;/P&gt;&lt;P&gt;  CALL METHOD o_whitecollar_employee1-&amp;gt;display_no_of_employees.&lt;/P&gt;&lt;P&gt;Result:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Employee added to list Karen Johnson &lt;/P&gt;&lt;P&gt;Employee added to list John Dickens &lt;/P&gt;&lt;P&gt;List of Employees &lt;/P&gt;&lt;P&gt;1 Karen Johnson 2.850 &lt;/P&gt;&lt;P&gt;2 John Dickens 7.500 &lt;/P&gt;&lt;P&gt;Total number of employees: 2 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;heck the below links lot of info and examples r there&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.geocities.com/victorav15/sapr3/abap_ood.html" target="test_blank"&gt;http://www.geocities.com/victorav15/sapr3/abap_ood.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.brabandt.de/html/abap_oo.html" target="test_blank"&gt;http://www.brabandt.de/html/abap_oo.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this cool weblog:&lt;/P&gt;&lt;P&gt;/people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql&lt;/P&gt;&lt;P&gt;/people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt" target="test_blank"&gt;http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf" target="test_blank"&gt;http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt" target="test_blank"&gt;http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.allsaplinks.com/" target="test_blank"&gt;http://www.allsaplinks.com/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/" target="test_blank"&gt;http://www.sap-img.com/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/" target="test_blank"&gt;http://www.sapgenie.com/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/controls/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/controls/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf" target="test_blank"&gt;http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf" target="test_blank"&gt;http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/OO/index.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/OO/index.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;these links &lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;For funtion module to class&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;for classes&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;for methods&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;for inheritance&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;for interfaces&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Jun 2007 05:19:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476389#M557468</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-29T05:19:33Z</dc:date>
    </item>
    <item>
      <title>Re: OOABAP</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476390#M557469</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Jun 2007 05:55:55 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/ooabap/m-p/2476390#M557469</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-29T05:55:55Z</dc:date>
    </item>
  </channel>
</rss>

