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