Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

How to pass an object as method parameter

Former Member
0 Likes
1,704

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,141

hi.

The following parts of your program were changed.

The result is OK?.

*(1)change

CLASS lcl_employee DEFINITION.

  • Public section

PUBLIC SECTION.

...

display_employee,

*get_no EXPORTING ex_no TYPE i,

*get_name EXPORTING ex_name TYPE string,

*get_wage EXPORTING ex_wage TYPE i.

get_no returning value(ex_no) TYPE i,

get_name returning value(ex_name) TYPE string,

get_wage returning value(ex_wage) TYPE i.

*(2)change

CLASS lcl_employee IMPLEMENTATION.

...

    • 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.

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

  • Result List

*----


Employee 1 John Jones

Name is: John Jones

Name is: John Jones

Employee 2 Sally Summer

Number of employees is: 2

*----


hi.

The following parts of your program were changed.

The result is OK?.

*(1)change

CLASS lcl_employee DEFINITION.

  • Public section

PUBLIC SECTION.

...

display_employee,

*get_no EXPORTING ex_no TYPE i,

*get_name EXPORTING ex_name TYPE string,

*get_wage EXPORTING ex_wage TYPE i.

get_no returning value(ex_no) TYPE i,

get_name returning value(ex_name) TYPE string,

get_wage returning value(ex_wage) TYPE i.

*(2)change

CLASS lcl_employee IMPLEMENTATION.

...

    • 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.

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

  • Result List

*----


Employee 1 John Jones

Name is: John Jones

Name is: John Jones

Employee 2 Sally Summer

Number of employees is: 2

*----


2 REPLIES 2
Read only

Former Member
0 Likes
1,142

hi.

The following parts of your program were changed.

The result is OK?.

*(1)change

CLASS lcl_employee DEFINITION.

  • Public section

PUBLIC SECTION.

...

display_employee,

*get_no EXPORTING ex_no TYPE i,

*get_name EXPORTING ex_name TYPE string,

*get_wage EXPORTING ex_wage TYPE i.

get_no returning value(ex_no) TYPE i,

get_name returning value(ex_name) TYPE string,

get_wage returning value(ex_wage) TYPE i.

*(2)change

CLASS lcl_employee IMPLEMENTATION.

...

    • 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.

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

  • Result List

*----


Employee 1 John Jones

Name is: John Jones

Name is: John Jones

Employee 2 Sally Summer

Number of employees is: 2

*----


Read only

0 Likes
1,141

Thanks a lot tayori... i have awarded you the points.