You are on page 1of 5

*&---------------------------------------------------------------------*

*& Report ZVC_OO_METHODS


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zvc_oo_methods.

***----------------------------------------------------------------------*
*** CLASS c1 DEFINITION
***----------------------------------------------------------------------*
***
***----------------------------------------------------------------------*
**CLASS c1 DEFINITION.
** PUBLIC SECTION.
** DATA: num TYPE i VALUE 5.
** METHODS: m1 IMPORTING input1 TYPE i.
**ENDCLASS. "c1 DEFINITION
**
***----------------------------------------------------------------------*
*** CLASS c1 IMPLEMENTATION
***----------------------------------------------------------------------*
***
***----------------------------------------------------------------------*
**CLASS c1 IMPLEMENTATION.
** METHOD m1.
** num = num * input1.
** WRITE /: num.
** num = 5.
** ENDMETHOD. "m1
**ENDCLASS. "c1 IMPLEMENTATION
**
**START-OF-SELECTION.
** DATA: oref TYPE REF TO c1.
** CREATE OBJECT: oref.
**
******Different ways of calling local method with parameters
** CALL METHOD oref->m1
** EXPORTING
** input1 = 5.
**
****2ND METHOD
** CALL METHOD oref->m1( input1 = 5 ).
**
****3rd way
** CALL METHOD oref->m1( 5 ).
***************************************

***** Method with optional parameters and PREFERRED PARAMETER keyword

***----------------------------------------------------------------------*
*** CLASS c1 DEFINITION
***----------------------------------------------------------------------*
***
***----------------------------------------------------------------------*
**CLASS c1 DEFINITION.
** PUBLIC SECTION.
** DATA: num TYPE i VALUE 5.
** METHODS: m1 IMPORTING value(input1) TYPE i OPTIONAL
** input2 TYPE i OPTIONAL
** PREFERRED PARAMETER input2.
**
**ENDCLASS. "c1 DEFINITION
**
***----------------------------------------------------------------------*
*** CLASS c1 IMPLEMENTATION
***----------------------------------------------------------------------*
***
***----------------------------------------------------------------------*
**CLASS c1 IMPLEMENTATION.
** METHOD m1.
** input1 = 4.
** num = num * input1.
** WRITE /: num.
** num = 5.
** WRITE /: 'Input2 value is:',input2.
** ENDMETHOD. "m1
**ENDCLASS. "c1 IMPLEMENTATION
**
**START-OF-SELECTION.
** DATA: oref TYPE REF TO c1.
** CREATE OBJECT: oref.
**
******Different ways of calling local method with parameters
** CALL METHOD oref->m1
** EXPORTING
** input1 = 5
** input2 = 6.
**
****2ND METHOD
** CALL METHOD oref->m1( input1 = 5 input2 = 6 ).
**
****3rd way
** CALL METHOD oref->m1( 5 ).
***********************************************************
***Method with EXPORTING & CHANGING parameters
**DATA: w_tax TYPE p DECIMALS 2,
** w_salary TYPE p DECIMALS 2.
**
***----------------------------------------------------------------------*
*** CLASS ctax DEFINITION
***----------------------------------------------------------------------*
***
***----------------------------------------------------------------------*
**CLASS ctax DEFINITION.
** PUBLIC SECTION.
** METHODS: tax_calc IMPORTING grade TYPE c
** EXPORTING itax TYPE p
** CHANGING salary TYPE p.
**ENDCLASS. "ctax DEFINITION
**
***----------------------------------------------------------------------*
*** CLASS ctax IMPLEMENTATION
***----------------------------------------------------------------------*
***
***----------------------------------------------------------------------*
**CLASS ctax IMPLEMENTATION.
** METHOD tax_calc.
** CASE grade.
** WHEN 'A01'.
** itax = salary * '0.2' .
** WHEN 'A02'.
** itax = salary * '0.15'.
** WHEN OTHERS.
** itax = salary * '0.1'.
** ENDCASE.
**
** salary = salary - itax.
** ENDMETHOD. "tax_calc
**ENDCLASS. "ctax IMPLEMENTATION
**
**START-OF-SELECTION.
** DATA: oref TYPE REF TO ctax.
** CREATE OBJECT : oref.
**
** w_tax = 0.
** w_salary = 30000.
**
** WRITE /: 'Before calling method the salary is:', w_salary, 'And tax is:',w_tax.
**
** CALL METHOD oref->tax_calc
** EXPORTING
** grade = 'A01'
** IMPORTING
** itax = w_tax
** CHANGING
** salary = w_salary.
**
** WRITE /: 'After calling method the salary is:', w_salary, 'And tax is:',w_tax.

******************************************************************
**Use of INTERNAL TABLE as parameter for a method

**TYPES : BEGIN OF ty_mara,


** matnr LIKE mara-matnr,
** meins LIKE mara-meins,
** END OF ty_mara.
**DATA: it_mara TYPE TABLE OF ty_mara,
** wa_mara TYPE ty_mara.
**
***----------------------------------------------------------------------*
*** CLASS get_materials DEFINITION
***----------------------------------------------------------------------*
***
***----------------------------------------------------------------------*
**CLASS get_materials DEFINITION.
** PUBLIC SECTION.
** METHODS: mat_list IMPORTING matgr TYPE c
** EXPORTING l_tab TYPE ANY TABLE.
**ENDCLASS. "get_materials DEFINITION
**
***----------------------------------------------------------------------*
*** CLASS get_materials IMPLEMENTATION
***----------------------------------------------------------------------*
***
***----------------------------------------------------------------------*
**CLASS get_materials IMPLEMENTATION.
** METHOD mat_list.
** SELECT matnr
** meins FROM mara
** INTO TABLE l_tab
** WHERE matkl = matgr.
** ENDMETHOD. "mat_list
**ENDCLASS. "get_materials IMPLEMENTATION
**
**PARAMETER : p_matkl TYPE matkl.
**
**START-OF-SELECTION.
** DATA: oref TYPE REF TO get_materials.
** CREATE OBJECT : oref.
** CALL METHOD oref->mat_list
** EXPORTING
** matgr = p_matkl
** IMPORTING
** l_tab = it_mara.
**
** LOOP AT it_mara INTO wa_mara.
** WRITE :/ wa_mara-matnr,
** wa_mara-meins.
** ENDLOOP.

**********************************************************
***Use of RETURNING parameter in a method

**CLASS c1 DEFINITION.
** PUBLIC SECTION.
** DATA : num TYPE i VALUE 5. "Instance attribute
** class-data: num1 type i. "static attribute
** METHODS: m1 IMPORTING input1 TYPE i
** input2 TYPE i
** RETURNING value(result) TYPE i.
**ENDCLASS. "c1 DEFINITION
**
***----------------------------------------------------------------------*
*** CLASS c1 IMPLEMENTATION
***----------------------------------------------------------------------*
***
***----------------------------------------------------------------------*
**CLASS c1 IMPLEMENTATION.
** METHOD m1.
** result = input1 * input2.
** WRITE /: result.
** ENDMETHOD. "m1
**ENDCLASS. "c1 IMPLEMENTATION
**DATA: w_num TYPE i.
**
**START-OF-SELECTION.
**
** DATA: oref TYPE REF TO c1.
** CREATE OBJECT oref.
**
** CALL METHOD oref->m1
** EXPORTING
** input1 = 5
** input2 = 6
** RECEIVING
** result = w_num.
**
** WRITE: / 'value is :', w_num .
**
***********************************************
**Use of STATIC method

CLASS c1 DEFINITION.
PUBLIC SECTION.
CLASS-DATA: num TYPE i VALUE 6. "static attribute
CLASS-METHODS: m1. "static method
METHODS: m2 . "instance method
ENDCLASS. "c1 DEFINITION
*----------------------------------------------------------------------*
* CLASS c1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
METHOD m1.
WRITE /: 'I am Static Method'.
ENDMETHOD. "m1

METHOD m2.
WRITE /: 'I am instance method'.
ENDMETHOD. "m2
ENDCLASS. "c1 IMPLEMENTATION

START-OF-SELECTION.
CALL METHOD c1=>m1. "calling static method using Static component selector

DATA : oref TYPE REF TO c1. " calling static method using object reference
CREATE OBJECT: oref.
CALL METHOD oref->m1.
CALL METHOD oref->m2.

You might also like