Demo program illustrating Interface

By Vikram Chellappa

*&---------------------------------------------------------------------*
*& Report  Z_OOABAP20                                                  *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  Z_OOABAP20
                           .
INTERFACE lif_employee.
  METHODS:
    add_employee
      IMPORTING im_no   TYPE i
                im_name TYPE string
                im_wage TYPE i.
ENDINTERFACE.

*******************************************************
* Super class LCL_CompanyEmployees
*******************************************************

CLASS lcl_company_employees DEFINITION.
  PUBLIC SECTION.
    INTERFACES lif_employee.
    TYPES:
      BEGIN OF t_employee,
        no  TYPE i,
        name TYPE string,
        wage TYPE i,
     END OF t_employee.
    METHODS:
      constructor,

      display_employee_list,
      display_no_of_employees.

  PRIVATE SECTION.
    CLASS-DATA: i_employee_list TYPE TABLE OF t_employee,
                no_of_employees TYPE i.
ENDCLASS.

*-- CLASS LCL_CompanyEmployees IMPLEMENTATION

CLASS lcl_company_employees IMPLEMENTATION.
  METHOD constructor.
    no_of_employees = no_of_employees + 1.
  ENDMETHOD.
  METHOD lif_employee~add_employee.
*   Adds a new employee to the list of employees
    DATA: l_employee TYPE t_employee.
    l_employee-no = im_no.
    l_employee-name = im_name.
    l_employee-wage = im_wage.
    APPEND l_employee TO i_employee_list.
  ENDMETHOD.
  METHOD display_employee_list.
*   Displays all employees and there wage
    DATA: l_employee TYPE t_employee.
    WRITE: / 'List of Employees'.
    LOOP AT i_employee_list INTO l_employee.
      WRITE: / l_employee-no, l_employee-name, l_employee-wage.
    ENDLOOP.
  ENDMETHOD.
  METHOD display_no_of_employees.
*   Displays total number of employees
    SKIP 3.
    WRITE: / 'Total number of employees:', no_of_employees.
  ENDMETHOD.
ENDCLASS.

*******************************************************
* Sub class LCL_BlueCollar_Employee
*******************************************************

CLASS lcl_bluecollar_employee DEFINITION
          INHERITING FROM lcl_company_employees.
  PUBLIC SECTION.
    METHODS:
        constructor
          IMPORTING im_no             TYPE i
                    im_name           TYPE string
                    im_hours          TYPE i
                    im_hourly_payment TYPE i,
         lif_employee~add_employee REDEFINITION..
  PRIVATE SECTION.
    DATA:no             TYPE i,
         name           TYPE string,
         hours          TYPE i,
         hourly_payment TYPE i.

ENDCLASS.

*---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION
CLASS lcl_bluecollar_employee IMPLEMENTATION.
  METHOD constructor.
*   The superclass constructor method must be called from the subclass
*   constructor method
    CALL METHOD super->constructor.
    no = im_no.
    name = im_name.
    hours = im_hours.
    hourly_payment = im_hourly_payment.
  ENDMETHOD.
  METHOD lif_employee~add_employee.
*   Calculate wage an call the superclass method add_employee to add
*   the employee to the employee list
    DATA: l_wage TYPE i.
    l_wage = hours * hourly_payment.
    CALL METHOD super->lif_employee~add_employee
      EXPORTING im_no = no
                im_name = name
                im_wage = l_wage.
  ENDMETHOD.
ENDCLASS.

*******************************************************
* Sub class LCL_WhiteCollar_Employee
*******************************************************
CLASS lcl_whitecollar_employee DEFINITION

    INHERITING FROM lcl_company_employees.
  PUBLIC SECTION.
    METHODS:
        constructor
          IMPORTING im_no                 TYPE i
                    im_name               TYPE string
                    im_monthly_salary     TYPE i
                    im_monthly_deducations TYPE i,
         lif_employee~add_employee REDEFINITION.
  PRIVATE SECTION.
    DATA:
      no                    TYPE i,
      name                  TYPE string,
      monthly_salary        TYPE i,
      monthly_deducations    TYPE i.
ENDCLASS.
*---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION
CLASS lcl_whitecollar_employee IMPLEMENTATION.
  METHOD constructor.
*   The superclass constructor method must be called from the subclass
*   constructor method

    CALL METHOD super->constructor.
    no = im_no.
    name = im_name.
    monthly_salary = im_monthly_salary.
    monthly_deducations = im_monthly_deducations.
  ENDMETHOD.
  METHOD lif_employee~add_employee.
*   Calculate wage an call the superclass method add_employee to add
*   the employee to the employee list
    DATA: l_wage TYPE i.
    l_wage = monthly_salary - monthly_deducations.
    CALL METHOD super->lif_employee~add_employee
      EXPORTING im_no = no
                im_name = name
                im_wage = l_wage.
  ENDMETHOD.
ENDCLASS.

*******************************************************
* R E P O R T
*******************************************************
DATA:
* Object references
  o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,
  o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.
START-OF-SELECTION.
* Create bluecollar employee obeject
  CREATE OBJECT o_bluecollar_employee1
      EXPORTING im_no  = 1
                im_name  = 'Chandrasekhar'
                im_hours = 38
                im_hourly_payment = 75.
* Add bluecollar employee to employee list
  CALL METHOD o_bluecollar_employee1->lif_employee~add_employee
      EXPORTING im_no  = 1
                im_name  = 'Vikram C'
                im_wage = 0.
* Create whitecollar employee obeject
  CREATE OBJECT o_whitecollar_employee1
      EXPORTING im_no  = 2
                im_name  = 'Raghava V'
                im_monthly_salary = 10000
                im_monthly_deducations = 2500.
* Add bluecollar employee to employee list
  CALL METHOD o_whitecollar_employee1->lif_employee~add_employee
      EXPORTING im_no  = 1
                im_name  = 'Gylle Karen'
                im_wage = 0.
* Display employee list and number of employees. Note that the result
* will be the same when called from o_whitecollar_employee1 or
* o_bluecolarcollar_employee1, because the methods are defined
* as static (CLASS-METHODS)
  CALL METHOD o_whitecollar_employee1->display_employee_list.
  CALL METHOD o_whitecollar_employee1->display_no_of_employees.



Please send us your feedback/suggestions at webmaster@SAPTechnical.COM 

HomeContribute About Us Privacy Terms Of Use • Disclaimer • SafeCompanies: Advertise on SAPTechnical.COM | Post JobContact Us  

Graphic Design by Round the Bend Wizards

footer image footer image