Wednesday, January 6, 2010

Program to understand Interface concept in abap oops

PARAMETERS:p_pass(25TYPE c,
           p_ptyp     TYPE saplane-planetype.

PARAMETERS:p_cargo(25TYPE c,
           p_ctyp      TYPE saplane-planetype.

*----------------------------------------------------------------------*
*       CLASS lcl_airplane DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_airplane DEFINITION.
  PUBLIC SECTION.
    METHODS:constructor IMPORTING im_name TYPE c
                                  im_planetyp TYPE saplane-planetype,
            display_attributes.
  PROTECTED SECTION.
    DATA:name(25TYPE c,
         planetyp TYPE saplane-planetype.
    CLASS-DATA:n_o_airplanes TYPE i.
ENDCLASS.                    "lcl_airplane DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_airplane IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_airplane IMPLEMENTATION.
  METHOD constructor.
    name     = im_name.
    planetyp = im_planetyp.
    n_o_airplanes = n_o_airplanes + 1.
  ENDMETHOD.                    "constructor
  METHOD display_attributes.
    WRITE:/'Name of plane',name,
          /'Plane type',planetyp.
  ENDMETHOD.                    "display_attributes
ENDCLASS.                    "lcl_airplane IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS lcl_passenger_airplane DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_passenger_airplane DEFINITION INHERITING FROM lcl_airplane.
  PUBLIC SECTION.
    METHODS:constructor IMPORTING im_name TYPE c
                                  im_planetyp TYPE saplane-planetype,
            display_attributes REDEFINITION.
  PRIVATE SECTION.
    DATA:n_o_seats TYPE sflight-seatsmax.
ENDCLASS.                    "lcl_passenger_airplane DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_passenger_airplane IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_passenger_airplane IMPLEMENTATION.
  METHOD constructor.
    CALL METHOD super->constructor
      EXPORTING
        im_name     = im_name
        im_planetyp = im_planetyp.
    n_o_seats = '20'.
  ENDMETHOD.                    "constructor
  METHOD display_attributes.
    CALL METHOD super->display_attributes.
    WRITE:/'Number of passenger plane seats',n_o_seats.
  ENDMETHOD.                    "display_attributes
ENDCLASS.                    "lcl_passenger_airplane IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS lcl_cargo_airplane DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_cargo_airplane DEFINITION INHERITING FROM lcl_airplane.
  PUBLIC SECTION.
    METHODS:constructor IMPORTING im_name TYPE c
                                  im_planetyp TYPE saplane-planetype,
            display_attributes REDEFINITION.
  PRIVATE SECTION.
    DATA:cargo_max TYPE scplane-cargomax.
ENDCLASS.                    "lcl_cargo_airplane DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_cargo_airplane IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_cargo_airplane IMPLEMENTATION.
  METHOD constructor.
    CALL METHOD super->constructor
      EXPORTING
        im_name     = im_name
        im_planetyp = im_planetyp.
    cargo_max = '30'.
  ENDMETHOD.                    "constructor
  METHOD display_attributes.
    CALL METHOD super->display_attributes.
    WRITE:/'Number of maximum cargo seats',cargo_max.
  ENDMETHOD.                    "display_attributes
ENDCLASS.

*----------------------------------------------------------------------*
*       INTERFACE lif_business_partners IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE lif_business_partners.
  METHODS:display_company_data.
ENDINTERFACE.                    "lif_business_partners

*----------------------------------------------------------------------*
*       CLASS lcl_carrier DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_carrier DEFINITION.
  PUBLIC SECTION.
    INTERFACES lif_business_partners.
    METHODS:add_a_new_airplane IMPORTING airplane_ref TYPE REF TO lcl_airplane.
    DATA:no_of_planes TYPE i.
     DATA:list_of_airplanes TYPE TABLE OF REF TO lcl_airplane,
          wa_airplanes      TYPE REF TO lcl_airplane.
ENDCLASS.                    "lcl_carrier DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_carrier IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_carrier IMPLEMENTATION.
  METHOD lif_business_partners~display_company_data.
    DESCRIBE TABLE list_of_airplanes LINES no_of_planes.
    WRITE:'Name of airplane','TEST PLANE',
          /'No of planes available',no_of_planes.
  ENDMETHOD.                    "lif_business_partners~display_company_data
  METHOD add_a_new_airplane.
    wa_airplanes = airplane_ref.
    APPEND wa_airplanes TO list_of_airplanes.
  ENDMETHOD.                    "add_a_new_airplane
ENDCLASS.                    "lcl_carrier IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS lcl_hotel DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_hotel DEFINITION.
  PUBLIC SECTION.
    INTERFACES lif_business_partners.
ENDCLASS.                    "lcl_hotel DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_hotel IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_hotel IMPLEMENTATION.
  METHOD lif_business_partners~display_company_data.
    WRITE:'Name of hotel''HOTEL',
          /'town','HYD',
          /'no of rooms'5.
  ENDMETHOD.                    "lif_business_partners~display_company_data
ENDCLASS.                    "lcl_hotel IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS lcl_travel_agency DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_travel_agency DEFINITION.
  PUBLIC SECTION.
    METHODS:add_business_partner IMPORTING business_partners_ref
                TYPE REF TO lif_business_partners,
            display_business_partners.
  PRIVATE SECTION.
    DATA:list_of_business_partners TYPE TABLE OF REF TO lif_business_partners,
         wa_business_partners      TYPE REF TO lif_business_partners.
ENDCLASS.                    "lcl_travel_agency DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_travel_agency IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_travel_agency IMPLEMENTATION.
  METHOD add_business_partner.
    wa_business_partners  = business_partners_ref .
    APPEND wa_business_partners TO list_of_business_partners.
  ENDMETHOD.                    "add_business_partner
  METHOD display_business_partners.
    LOOP AT list_of_business_partners INTO wa_business_partners.
      CALL METHOD wa_business_partners->display_company_data.
    ENDLOOP.
  ENDMETHOD.                    "display_business_partners
ENDCLASS.                    "lcl_travel_agency IMPLEMENTATION

START-OF-SELECTION.
DATA:lcl_travel_agency_ref TYPE REF TO lcl_travel_agency,
     lcl_hotel_ref         TYPE REF TO lcl_hotel,
     lcl_carrier_ref       TYPE REF TO lcl_carrier.

DATA:lcl_passenger_airplane_ref TYPE REF TO lcl_passenger_airplane,
     lcl_cargo_airplane_ref  TYPE REF TO lcl_cargo_airplane.


CREATE OBJECT lcl_passenger_airplane_ref         EXPORTING
                                                 im_name = p_pass
                                                 im_planetyp = p_ptyp.

CREATE OBJECT lcl_carrier_ref.

CALL METHOD lcl_carrier_ref->add_a_new_airplane
 EXPORTING
   airplane_ref = lcl_passenger_airplane_ref.

CREATE OBJECT lcl_cargo_airplane_ref             EXPORTING
                                                 im_name = p_cargo
                                                 im_planetyp = p_ctyp.

CALL METHOD lcl_carrier_ref->add_a_new_airplane
  EXPORTING
   airplane_ref = lcl_cargo_airplane_ref.

CREATE OBJECT lcl_travel_agency_ref.

CREATE OBJECT lcl_hotel_ref.
CALL METHOD lcl_travel_agency_ref->add_business_partner
 EXPORTING business_partners_ref = lcl_hotel_ref.

CALL METHOD lcl_travel_agency_ref->add_business_partner
 EXPORTING business_partners_ref = lcl_carrier_ref.

CALL METHOD lcl_travel_agency_ref->display_business_partners.

About Me

I have 5+ years experience in SAP ABAP and ABAP CRM.I am working with SAP LABS now.

Search This Blog