Skip to Content
0
Former Member
Mar 26, 2009 at 02:14 AM

How to pass an object as method parameter

562 Views

Hi Guys

I was testing a simple program and was trying to pass an object to a method but it didnt seem to work and I couldnt find out WHY.

I am posting the code so please let me know who can i make my method ADD_EMPLOYEE work so that when i pass an object of LCL_EMPLOYEE, it updates I_EMPLOYEE_LIST.

-


&----


*& Report: ZOO_HR_SAMPLE_1

*& Author: Avinash Pandey

&----


*& Date: 25.03.2009

*& Description: Concepts of OO in ABAP

&----


REPORT zoo_hr_sample_1.

&----


*& Class LCL_EMPLOYEE

&----


  • Local class

----


CLASS lcl_employee DEFINITION.

  • Public section

PUBLIC SECTION.

  • Data type

TYPES:

BEGIN OF t_employee,

no TYPE i,

name TYPE string,

wage TYPE i,

END OF t_employee.

  • Method

METHODS:

constructor

IMPORTING im_employee_no TYPE i

im_employee_name TYPE string

im_wage TYPE i,

add_employee

IMPORTING im_employee TYPE REF TO lcl_employee,

display_employee_list,

display_employee,

get_no EXPORTING ex_no TYPE i,

get_name EXPORTING ex_name TYPE string,

get_wage EXPORTING ex_wage TYPE i.

  • Class methods are global for all instances

CLASS-METHODS: display_no_of_employees.

  • Protected section

PROTECTED SECTION.

  • Class data are global for all instances

CLASS-DATA: g_no_of_employees TYPE i.

CLASS-DATA: i_employee_list TYPE TABLE OF t_employee.

  • Private section

PRIVATE SECTION.

  • CLASS-DATA: i_employee_list TYPE TABLE OF t_employee.

DATA: g_employee TYPE t_employee.

ENDCLASS. "LCL_EMPLOYEE

&----


*& Class (Implementation) LCL_EMPLOYEE

&----


  • Text

----


CLASS lcl_employee IMPLEMENTATION.

  • Class constructor method

METHOD constructor.

g_employee-no = im_employee_no.

g_employee-name = im_employee_name.

g_employee-wage = im_wage.

g_no_of_employees = g_no_of_employees + 1.

ENDMETHOD. "constructor

  • Method

METHOD display_employee.

WRITE:/ 'Employee', g_employee-no, g_employee-name.

ENDMETHOD. "display_employee

  • Method

METHOD get_no.

ex_no = g_employee-no.

ENDMETHOD. "get_no

  • Method

METHOD get_name.

ex_name = g_employee-name.

WRITE: / 'Name is:' , ex_name.

ENDMETHOD. "get_no

  • Method

METHOD get_wage.

ex_wage = g_employee-wage.

ENDMETHOD. "get_no

  • Method

METHOD add_employee.

  • Adds a new employee to the list of employees

DATA: l_employee TYPE t_employee.

l_employee-no = im_employee->get_no.

l_employee-name = im_employee->get_name.

l_employee-wage = im_employee->get_wage.

APPEND l_employee TO i_employee_list.

ENDMETHOD. "add_employee

  • Method

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. "display_employee_list

  • Class method

METHOD display_no_of_employees.

WRITE: / 'Number of employees is:', g_no_of_employees.

ENDMETHOD. "display_no_of_employees

ENDCLASS. "LCL_EMPLOYEE

************************************************************************

  • REPORT

*********************************************************************

DATA: g_employee1 TYPE REF TO lcl_employee,

g_employee2 TYPE REF TO lcl_employee.

START-OF-SELECTION.

  • Create class instances

CREATE OBJECT g_employee1

EXPORTING

im_employee_no = 1

im_employee_name = 'John Jones'

im_wage = 20000.

CREATE OBJECT g_employee2

EXPORTING

im_employee_no = 2

im_employee_name = 'Sally Summer'

im_wage = 28000.

  • Call methods

CALL METHOD g_employee1->display_employee.

CALL METHOD g_employee1->add_employee

EXPORTING

im_employee = g_employee1.

CALL METHOD g_employee1->get_name.

CALL METHOD g_employee2->display_employee.

CALL METHOD g_employee2->display_no_of_employees.

-


The error I am getting is:

Field GET_NO/GET_NAME/GET_WAGE is unknown.

Please help me out on this.

Thanks a lot you people