Professional Documents
Culture Documents
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 ).
***************************************
***----------------------------------------------------------------------*
*** 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
**********************************************************
***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.