Вы находитесь на странице: 1из 17

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

*& Report ZSEN_CLASS1


*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZSEN_CLASS1.
*CLASS CLS1 DEFINITION.
* PUBLIC SECTION.
* METHODS: METH1.
* ENDCLASS.
*
* CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* WRITE : / 'OK'.
* ENDMETHOD.
* ENDCLASS.
*
*START-OF-SELECTION.
*
* DATA : OBJ1 TYPE REF TO CLS1.
* CREATE OBJECT OBJ1.
*
* CALL METHOD OBJ1->METH1.

**************************************************************
*2. Encapsulation.
*CLASS CLS1 DEFINITION.
* PUBLIC SECTION.
* METHODS: METH1.
* PROTECTED SECTION.
* METHODS: METH2.
* PRIVATE SECTION.
* METHODS: METH3.
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* WRITE : / 'OK - in public'.
* ENDMETHOD. "METH1
*
* METHOD METH2.
* WRITE : / 'OK - in protected'.
* ENDMETHOD. "METH2
*
* METHOD METH3.
* WRITE : / 'OK - in private'.
* ENDMETHOD. "METH3
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*START-OF-SELECTION.
*
* DATA : OBJ1 TYPE REF TO CLS1.
* CREATE OBJECT OBJ1.
* CALL METHOD OBJ1->METH1.
****************************************************************************
*3. Inheritance
*CLASS CLS1 DEFINITION.
* PUBLIC SECTION.
* METHODS: METH1.
* PROTECTED SECTION.
* METHODS: METH2.
* PRIVATE SECTION.
* METHODS: METH3.
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* WRITE : / 'OK - in public'.
* ENDMETHOD. "METH1
*
* METHOD METH2.
* WRITE : / 'OK - in protected'.
* ENDMETHOD. "METH2
*
* METHOD METH3.
* WRITE : / 'OK - in private'.
* ENDMETHOD. "METH3
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*
*class CLS2 DEFINITION INHERITING FROM CLS1.
* PUBLIC SECTION.
* METHODS: METH4.
*ENDCLASS.
*
*CLASS CLS2 IMPLEMENTATION.
* METHOD METH4.
* WRITE : / 'OK - in class2 public'.
* ENDMETHOD.
*ENDCLASS.
*
*START-OF-SELECTION.
*
* DATA : OBJ1 TYPE REF TO CLS2.
* CREATE OBJECT OBJ1.
* CALL METHOD OBJ1->METH1.
* CALL METHOD OBJ1->METH4.

*4 polymorphism

*CLASS CLS1 DEFINITION.


* PUBLIC SECTION.
* METHODS: METH1.
* PROTECTED SECTION.
* METHODS: METH2.
* PRIVATE SECTION.
* METHODS: METH3.
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* WRITE : / 'OK - in public'.
* ENDMETHOD. "METH1
*
* METHOD METH2.
* WRITE : / 'OK - in protected'.
* ENDMETHOD. "METH2
*
* METHOD METH3.
* WRITE : / 'OK - in private'.
* ENDMETHOD. "METH3
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*
*class CLS2 DEFINITION INHERITING FROM CLS1.
* PUBLIC SECTION.
* METHODS: METH4.
* METHODS: METH1 REDEFINITION.
*ENDCLASS.
*
*CLASS CLS2 IMPLEMENTATION.
* METHOD METH4.
* WRITE : / 'OK - in class2 public'.
* ENDMETHOD.
*
* METHOD METH1.
* WRITE : / 'OK - in class2 public - Redefine meth1 of class1'.
* ENDMETHOD.
*ENDCLASS.
*
*START-OF-SELECTION.
*
* DATA : OBJ1 TYPE REF TO CLS2.
* CREATE OBJECT OBJ1.
* CALL METHOD OBJ1->METH1.
* CALL METHOD OBJ1->METH4.

*5.Super keyword

*CLASS CLS1 DEFINITION.


* PUBLIC SECTION.
* METHODS: METH1.
* PROTECTED SECTION.
* METHODS: METH2.
* PRIVATE SECTION.
* METHODS: METH3.
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* WRITE : / 'OK - in public'.
* ENDMETHOD. "METH1
*
* METHOD METH2.
* WRITE : / 'OK - in protected'.
* ENDMETHOD. "METH2
*
* METHOD METH3.
* WRITE : / 'OK - in private'.
* ENDMETHOD. "METH3
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*
*class CLS2 DEFINITION INHERITING FROM CLS1.
* PUBLIC SECTION.
* METHODS: METH4.
* METHODS: METH1 REDEFINITION.
*ENDCLASS.
*
*CLASS CLS2 IMPLEMENTATION.
* METHOD METH4.
* WRITE : / 'OK - in class2 public'.
* ENDMETHOD.
*
* METHOD METH1.
* WRITE : / 'OK - in class2 public - Redefine meth1 of class1'.
* CALL METHOD SUPER->METH1.
* ENDMETHOD.
*ENDCLASS.
*
*START-OF-SELECTION.
*
* DATA : OBJ1 TYPE REF TO CLS2.
* CREATE OBJECT OBJ1.
* CALL METHOD OBJ1->METH1.
* CALL METHOD OBJ1->METH4.

*6.Abstract

*class cls0 DEFINITION ABSTRACT.


* PUBLIC SECTION.
* METHODS: METH0.
*ENDCLASS.
*
*CLASS CLS0 IMPLEMENTATION.
* METHOD METH0.
* WRITE : / 'Inside Abstract'.
* ENDMETHOD.
*ENDCLASS.
*
*CLASS CLS1 DEFINITION INHERITING FROM cls0.
* PUBLIC SECTION.
* METHODS: METH1.
* METHODS: METH0 REDEFINITION.
* PROTECTED SECTION.
* METHODS: METH2.
* PRIVATE SECTION.
* METHODS: METH3.
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* WRITE : / 'OK - in public'.
* ENDMETHOD. "METH1
*
* METHOD METH2.
* WRITE : / 'OK - in protected'.
* ENDMETHOD. "METH2
*
* METHOD METH3.
* WRITE : / 'OK - in private'.
* ENDMETHOD. "METH3
*
* METHOD METH0.
* WRITE : / 'OK - From abstract'.
* ENDMETHOD.
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*
*class CLS2 DEFINITION INHERITING FROM CLS1.
* PUBLIC SECTION.
* METHODS: METH4.
* METHODS: METH1 REDEFINITION.
*ENDCLASS.
*
*CLASS CLS2 IMPLEMENTATION.
* METHOD METH4.
* WRITE : / 'OK - in class2 public'.
* ENDMETHOD.
*
* METHOD METH1.
* WRITE : / 'OK - in class2 public - Redefine meth1 of class1'.
* CALL METHOD SUPER->METH1.
* ENDMETHOD.
*ENDCLASS.
*
*START-OF-SELECTION.
*
* DATA : OBJ1 TYPE REF TO CLS2.
* CREATE OBJECT OBJ1.
* CALL METHOD OBJ1->METH1.
* CALL METHOD OBJ1->METH4.
* CALL METHOD OBJ1->METH0.
*
*7.Friend-Definition

*class CLS2 DEFINITION DEFERRED.


*
*CLASS CLS1 DEFINITION FRIENDS CLS2.
* PRIVATE SECTION.
* METHODS: METH1.
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* WRITE : / 'OK - in private'.
* ENDMETHOD. "METH1
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*class CLS2 DEFINITION INHERITING FROM CLS1.
* PUBLIC SECTION.
* METHODS: METH2.
* ENDCLASS.
*
*CLASS CLS2 IMPLEMENTATION.
* METHOD METH2.
* WRITE : / 'OK - in class2 private'.
*
* DATA : OBFN TYPE REF TO CLS1.
* CREATE OBJECT OBFN.
* CALL METHOD OBFN->METH1.
* ENDMETHOD.
*ENDCLASS.
*
*START-OF-SELECTION.
*
* DATA : OBJ1 TYPE REF TO CLS2.
* CREATE OBJECT OBJ1.
* CALL METHOD OBJ1->METH2.

*8.Event

*CLASS CLS1 DEFINITION .


*
* PUBLIC SECTION.
* EVENTS: EVT1.
* METHODS: METH1.
* METHODS : METH2 FOR EVENT EVT1 OF CLS1.
*
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* WRITE : / 'OK - in PUBLIC'.
* RAISE EVENT EVT1.
* ENDMETHOD. "METH1
*
* METHOD METH2.
* WRITE : / 'OK - CALLED VIA EVENT'.
* ENDMETHOD.
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*START-OF-SELECTION.
*
* DATA : OBJ1 TYPE REF TO CLS1.
* CREATE OBJECT OBJ1.
* SET HANDLER OBJ1->METH2 FOR OBJ1.
* CALL METHOD OBJ1->METH1.

*9.Interface
*INTERFACE INTF1.
* METHODS : METH_INTF1,METH_INTF2.
*ENDINTERFACE. "INTF1
*
*CLASS CLS1 DEFINITION .
* PUBLIC SECTION.
* INTERFACES INTF1.
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD INTF1~METH_INTF1.
* WRITE : / ' INSIDE CLASS 1 INTERFACE METHOD1'.
* ENDMETHOD. "INTF1~METH_INTF1
*
* METHOD INTF1~METH_INTF2.
* WRITE : / ' INSIDE CLASS 1 INTERFACE METHOD2'.
* ENDMETHOD. "INTF1~METH_INTF2
*
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*CLASS CLS2 DEFINITION.
* PUBLIC SECTION.
* INTERFACES INTF1.
*ENDCLASS. "CLS2 DEFINITION
*
*CLASS CLS2 IMPLEMENTATION.
* METHOD INTF1~METH_INTF1.
* WRITE : / ' INSIDE CLASS 2 INTERFACE METHOD1'.
* ENDMETHOD. "INTF1~METH_INTF1
*
* METHOD INTF1~METH_INTF2.
* WRITE : / ' INSIDE CLASS 2 INTERFACE METHOD2'.
* ENDMETHOD. "INTF1~METH_INTF2
*ENDCLASS. "CLS2 IMPLEMENTATION
*
*
*START-OF-SELECTION.
* DATA : OBJ1 TYPE REF TO CLS1.
* CREATE OBJECT OBJ1.
* CALL METHOD OBJ1->INTF1~METH_INTF1.
* CALL METHOD OBJ1->INTF1~METH_INTF2.
*
* DATA : OBJ2 TYPE REF TO CLS2.
* CREATE OBJECT OBJ2.
* CALL METHOD OBJ2->INTF1~METH_INTF1.
* CALL METHOD OBJ2->INTF1~METH_INTF2.

*10.Exception
*CLASS CLS1 DEFINITION .
* PUBLIC SECTION.
* METHODS METH1.
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* DATA : LR_EX TYPE REF TO CX_ROOT.
* DATA : VAL1 TYPE I VALUE 10 ,
* VAL2 TYPE I VALUE 0,
* VAL3 TYPE I.
*
* DATA : PRG_NAM TYPE SYREPID,
* INCL TYPE SYREPID,
* SRC_LIN TYPE I,
* GTEXT TYPE STRING,
* GTLTX TYPE STRING.
* TRY.
* VAL3 = VAL1 / VAL2.
* CATCH CX_ROOT INTO LR_EX.
* CALL METHOD LR_EX->GET_SOURCE_POSITION
* IMPORTING
* PROGRAM_NAME = PRG_NAM
* INCLUDE_NAME = INCL
* SOURCE_LINE = SRC_LIN.
*
* CALL METHOD LR_EX->IF_MESSAGE~GET_TEXT
* RECEIVING
* RESULT = GTEXT.
* CALL METHOD LR_EX->IF_MESSAGE~GET_LONGTEXT
* RECEIVING
* RESULT = GTLTX.
*
* WRITE : / 'Program Name : ',PRG_NAM.
* WRITE : / 'Include Name : ',INCL.
* WRITE : / 'Error Line No: ',SRC_LIN.
* WRITE : / 'Description: ',GTEXT.
* WRITE : / 'Long Text: ',GTLTX.
*
* ENDTRY.
* ENDMETHOD. "METH1
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*START-OF-SELECTION.
*
* DATA : OBJ1 TYPE REF TO CLS1.
* CREATE OBJECT OBJ1.
* CALL METHOD OBJ1->METH1.

*11.Test class / Test methods


**How to execute this type of test: from menu path Program->Test->Unit Test.
*CLASS CLS1 DEFINITION .
* PUBLIC SECTION.
* METHODS METH1.
*ENDCLASS. "CLS1 DEFINITION
*
*CLASS CLS1 IMPLEMENTATION.
* METHOD METH1.
* DATA : LR_EX TYPE REF TO CX_ROOT.
* DATA : VAL1 TYPE I VALUE 10 ,
* VAL2 TYPE I VALUE 0,
* VAL3 TYPE I.
*
* DATA : PRG_NAM TYPE SYREPID,
* INCL TYPE SYREPID,
* SRC_LIN TYPE I,
* GTEXT TYPE STRING,
* GTLTX TYPE STRING.
* TRY.
* VAL3 = VAL1 / VAL2.
* CATCH CX_ROOT INTO LR_EX.
* RAISE EXCEPTION LR_EX.
* CALL METHOD LR_EX->GET_SOURCE_POSITION
* IMPORTING
* PROGRAM_NAME = PRG_NAM
* INCLUDE_NAME = INCL
* SOURCE_LINE = SRC_LIN.
* CALL METHOD LR_EX->IF_MESSAGE~GET_TEXT
* RECEIVING
* RESULT = GTEXT.
* CALL METHOD LR_EX->IF_MESSAGE~GET_LONGTEXT
* RECEIVING
* RESULT = GTLTX.
* WRITE : / 'Program Name : ',PRG_NAM.
* WRITE : / 'Include Name : ',INCL.
* WRITE : / 'Error Line No: ',SRC_LIN.
* WRITE : / 'Description: ',GTEXT.
* WRITE : / 'Long Text: ',GTLTX.
* ENDTRY.
* ENDMETHOD. "METH1
*ENDCLASS. "CLS1 IMPLEMENTATION
*
*CLASS TST1 DEFINITION "#AU Duration Short
* FOR TESTING. "#AU Risk_Level Harmless
* PUBLIC SECTION.
* METHODS TST FOR TESTING.
*
*ENDCLASS. "TST1 DEFINITION
*
*CLASS TST1 IMPLEMENTATION.
* METHOD TST.
* DATA : OBJ1 TYPE REF TO CLS1.
* CREATE OBJECT OBJ1.
* CALL METHOD OBJ1->METH1.
* ENDMETHOD. "TST
*ENDCLASS. "TST1 IMPLEMENTATION

*12.Object parameters - Part 1


*class cls1 DEFINITION.
* PUBLIC SECTION.
* methods ADDITION
* IMPORTING VALUE(V1) TYPE I VALUE(V2) TYPE I RETURNING VALUE(R1) TYPE I.
* methods DIVISION
* IMPORTING VALUE(V1) TYPE I VALUE(V2) TYPE I RETURNING VALUE(R1) TYPE I.
* methods MULTIPLI
* IMPORTING VALUE(V1) TYPE I VALUE(V2) TYPE I RETURNING VALUE(R1) TYPE I.
* methods SUBSTRAC
* IMPORTING VALUE(V1) TYPE I VALUE(V2) TYPE I RETURNING VALUE(R1) TYPE I.
*
* PRIVATE SECTION.
* DATA : ANS TYPE I.
* endclass.
*
*class cls1 IMPLEMENTATION.
* method ADDITION.
* CLEAR ans.
* ANS = V1 + V2.
* R1 = ANS.
* ENDMETHOD.
*
* method DIVISION.
* CLEAR ans.
* ANS = V1 / V2.
* R1 = ANS.
* ENDMETHOD.
*
* method MULTIPLI.
* CLEAR ans.
* ANS = V1 * V2.
* R1 = ANS.
* ENDMETHOD.
*
* method SUBSTRAC.
* CLEAR ans.
* ANS = V1 - V2.
* R1 = ANS.
* ENDMETHOD.
*
*ENDCLASS.
*
*
*
* START-OF-SELECTION.
* DATA : ANS TYPE I.
* DATA : OBJ1 TYPE REF TO CLS1.
* CREATE OBJECT OBJ1.
*
* CALL METHOD OBJ1->ADDITION EXPORTING V1 = 10 V2 = 20 RECEIVING R1 = ANS.
* WRITE : / 'Addition is: ',ans.
*
* CALL METHOD OBJ1->DIVISION EXPORTING V1 = 10 V2 = 20 RECEIVING R1 = ANS.
* WRITE : / 'Division is: ',ans.
*
* CALL METHOD OBJ1->MULTIPLI EXPORTING V1 = 10 V2 = 20 RECEIVING R1 = ANS.
* WRITE : / 'Multiplication is: ',ans.
*
* CALL METHOD OBJ1->SUBSTRAC EXPORTING V1 = 10 V2 = 20 RECEIVING R1 = ANS.
* WRITE : / 'Substraction is: ',ans.
*13.Object parameters - Part 2 (Exception and Raising)
*A. Raising->Automatic error handling.
*class cls1 DEFINITION.
* PUBLIC SECTION.
* methods DIVISION
* IMPORTING VALUE(V1) TYPE I VALUE(V2) TYPE I
* RETURNING VALUE(R1) TYPE I RAISING cx_sy_arithmetic_error.
*
* PRIVATE SECTION.
* DATA : ANS TYPE I.
* endclass.
*
*class cls1 IMPLEMENTATION.
* method DIVISION.
* CLEAR ans.
* ANS = V1 / V2.
* R1 = ANS.
* ENDMETHOD.
*
*ENDCLASS.
*
*
* START-OF-SELECTION.
* DATA : ANS TYPE I.
* data : err type ref to cx_sy_arithmetic_error.
* data : txt type string.
* DATA : OBJ1 TYPE REF TO CLS1.
* CREATE OBJECT OBJ1.
*
* try.
* CALL METHOD OBJ1->DIVISION EXPORTING V1 = 10 V2 = 0 RECEIVING R1 = ANS.
* catch cx_sy_arithmetic_error INTO err.
* txt = err->get_text( ).
* endtry.
*
* WRITE : / 'Division is: ',ans.
* WRITE : / 'Error is : ',txt.

*B. Exception->manually error code assign and handle.


*class cls1 DEFINITION.
* PUBLIC SECTION.
* methods DIVISION
* IMPORTING VALUE(V1) TYPE I VALUE(V2) TYPE I
* RETURNING VALUE(R1) TYPE I EXCEPTIONS err.
*
* PRIVATE SECTION.
* DATA : ANS TYPE I.
* endclass.
*
*class cls1 IMPLEMENTATION.
* method DIVISION.
* CLEAR ans.
* try.
* ANS = V1 / V2.
* catch cx_sy_arithmetic_error.
* RAISE ERR.
* ENDTRY.
* R1 = ANS.
* ENDMETHOD.
*ENDCLASS.
*
*START-OF-SELECTION.
* DATA : ANS TYPE I.
* data : err type ref to cx_sy_arithmetic_error.
* data : txt type string.
* DATA : OBJ1 TYPE REF TO CLS1.
* CREATE OBJECT OBJ1.
*
* CALL METHOD OBJ1->DIVISION
* EXPORTING V1 = 10 V2 = 0 RECEIVING R1 = ANS EXCEPTIONS ERR = 11.
*
*IF SY-SUBRC EQ 0.
* WRITE : ANS.
* ELSEIF SY-SUBRC EQ 11.
* WRITE : / 'Divide zero error'.
* ENDIF.

*14.MVC Pattern
*
*
*REPORT ZAVI_LOGIC.
*
*DATA : IT TYPE TABLE OF MARA .
*
*CLASS MODEL DEFINITION.
* PUBLIC SECTION.
* METHODS: QUERY.
*ENDCLASS.
*
*CLASS MODEL IMPLEMENTATION.
* METHOD QUERY.
* SELECT * FROM MARA INTO TABLE IT UP TO 50 ROWS.
* ENDMETHOD.
*ENDCLASS.
*
*CLASS CTRL DEFINITION.
* PUBLIC SECTION.
* DATA : MODEL TYPE REF TO MODEL.
* METHODS: CONSTRUCTOR,
* DSP_REPORT.
* PRIVATE SECTION.
* DATA : GRID TYPE REF TO CL_SALV_TABLE.
* METHODS: SHOW_GRID.
*ENDCLASS.
*
*CLASS CTRL IMPLEMENTATION.
* METHOD CONSTRUCTOR.
* CREATE OBJECT MODEL.
* ENDMETHOD.
*
* METHOD DSP_REPORT.
* CALL METHOD MODEL->QUERY.
* SHOW_GRID( ).
* ENDMETHOD.
*
* METHOD SHOW_GRID.
* CL_SALV_TABLE=>FACTORY( IMPORTING R_SALV_TABLE = GRID CHANGING
T_TABLE = IT ).
* GRID->DISPLAY( ).
* ENDMETHOD.
*ENDCLASS.
*
*START-OF-SELECTION.
*DATA : LR_CTRL TYPE REF TO CTRL.
*CREATE OBJECT LR_CTRL.
*CALL METHOD LR_CTRL->DSP_REPORT.
*

Вам также может понравиться