Application Development 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: 

CLASS + Selection Screen

Former Member
0 Kudos

hi,

can anybody tell me how to create simple program using class(oop concept) and selection screen......

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Saurabh,

I am putting some simple report which have the selction screen and Coded with ABAP OOPs.

This may guide you.

REPORT demo_abap_objects.

----


  • Global Selection Screen

----


SELECTION-SCREEN BEGIN OF SCREEN 100 AS WINDOW TITLE text-100.

PARAMETERS: button1 RADIOBUTTON GROUP grp,

button2 RADIOBUTTON GROUP grp,

button3 RADIOBUTTON GROUP grp,

button4 RADIOBUTTON GROUP grp.

SELECTION-SCREEN END OF SCREEN 100.

----


  • INTERFACE status

----


  • Interface definition *

----


INTERFACE status.

METHODS write.

ENDINTERFACE.

----


  • CLASS vessel DEFINITION

----


  • Superclass definition *

----


CLASS vessel DEFINITION.

PUBLIC SECTION.

METHODS: constructor,

drive IMPORTING speed_up TYPE i,

get_id RETURNING value(id) TYPE i.

PROTECTED SECTION.

DATA: speed TYPE i,

max_speed TYPE i VALUE 100.

PRIVATE SECTION.

CLASS-DATA object_count TYPE i.

DATA id TYPE i.

ENDCLASS.

----


  • CLASS vessel IMPLEMENTATION

----


  • Superclass implementation *

----


CLASS vessel IMPLEMENTATION.

METHOD constructor.

object_count = object_count + 1.

id = object_count.

ENDMETHOD.

METHOD drive.

speed = speed + speed_up.

IF speed > max_speed.

speed = max_speed.

ENDIF.

ENDMETHOD.

METHOD get_id.

id = me->id.

ENDMETHOD.

ENDCLASS.

----


  • CLASS ship DEFINITION

----


  • Subclass definition *

----


CLASS ship DEFINITION INHERITING FROM vessel.

PUBLIC SECTION.

INTERFACES status.

DATA name TYPE string READ-ONLY.

METHODS: constructor IMPORTING name TYPE string,

drive REDEFINITION.

EVENTS emergency_call.

ENDCLASS.

----


  • CLASS ship IMPLEMENTATION

----


  • Subclass implementation *

----


CLASS ship IMPLEMENTATION.

METHOD constructor.

CALL METHOD super->constructor.

max_speed = 30.

me->name = name.

ENDMETHOD.

METHOD status~write.

DATA id.

id = me->get_id( ).

WRITE: / name, 'is vessel', id,

'and has speed', speed.

ENDMETHOD.

METHOD drive.

speed = speed + speed_up.

IF speed > max_speed.

max_speed = 0.

speed = 0.

RAISE EVENT emergency_call.

ENDIF.

ENDMETHOD.

ENDCLASS.

----


  • CLASS coast_guard DEFINITION

----


  • Event handler definition *

----


CLASS coast_guard DEFINITION.

PUBLIC SECTION.

INTERFACES status.

METHODS receive FOR EVENT emergency_call OF ship IMPORTING sender.

ALIASES write FOR status~write.

PRIVATE SECTION.

DATA caller TYPE string.

ENDCLASS.

----


  • CLASS coast_guard IMPLEMENTATION

----


  • Event handler implementation *

----


CLASS coast_guard IMPLEMENTATION.

METHOD status~write.

IF caller IS INITIAL.

WRITE: / 'Coast guard received no call'.

ELSE.

WRITE: / 'Coast guard received a call from', caller.

ENDIF.

ENDMETHOD.

METHOD receive.

caller = sender->name.

CALL METHOD write.

ENDMETHOD.

ENDCLASS.

----


  • CLASS main DEFINITION

----


  • Main class definition *

----


CLASS main DEFINITION.

PUBLIC SECTION.

CLASS-METHODS: start,

objects,

inheritance,

interfaces,

events.

ENDCLASS.

----


  • CLASS main IMPLEMENTATION

----


  • Main class implementation *

----


CLASS main IMPLEMENTATION.

METHOD start.

CALL SELECTION-SCREEN 100 STARTING AT 10 3

ENDING AT 42 7.

IF sy-subrc NE 0.

EXIT.

ELSEIF button1 = 'X'.

CALL METHOD objects.

ELSEIF button2 = 'X'.

CALL METHOD inheritance.

ELSEIF button3 = 'X'.

CALL METHOD interfaces.

ELSEIF button4 = 'X'.

CALL METHOD events.

ENDIF.

ENDMETHOD.

METHOD objects.

DATA: vessel1 TYPE REF TO vessel,

vessel2 TYPE REF TO vessel.

DATA: vessel_id TYPE i.

CREATE OBJECT: vessel1 TYPE vessel,

vessel2 TYPE vessel.

CALL METHOD: vessel1->drive( 50 ),

vessel2->drive( 80 ).

vessel_id = vessel1->get_id( ).

WRITE: / 'Vessel ID is', vessel_id.

vessel_id = vessel2->get_id( ).

WRITE: / 'Vessel ID is', vessel_id.

ENDMETHOD.

METHOD inheritance.

DATA: vessel TYPE REF TO vessel,

ship TYPE REF TO ship.

CREATE OBJECT ship TYPE ship EXPORTING name = 'Titanic'.

CALL METHOD ship->drive( 20 ).

MOVE ship TO vessel.

CALL METHOD vessel->drive( 10 ).

CALL METHOD ship->status~write.

ENDMETHOD.

METHOD interfaces.

DATA: status_tab TYPE TABLE OF REF TO status,

status TYPE REF TO status.

DATA: ship TYPE REF TO ship,

station TYPE REF TO coast_guard.

CREATE OBJECT: ship EXPORTING name = 'Titanic'.

APPEND ship TO status_tab.

CREATE OBJECT station.

APPEND station TO status_tab.

LOOP AT status_tab INTO status.

CALL METHOD status->write.

ENDLOOP.

ENDMETHOD.

METHOD events.

DATA: ship TYPE REF TO ship,

station TYPE REF TO coast_guard.

CREATE OBJECT: ship EXPORTING name = 'Titanic',

station.

SET HANDLER station->receive FOR ship.

DO 5 TIMES.

CALL METHOD ship->drive( 10 ).

ENDDO.

ENDMETHOD.

ENDCLASS.

----


  • System event START-OF-SELECTION

----


  • Triggered by the ABAP runtime environment automatically *

----


START-OF-SELECTION.

CALL METHOD main=>start.

----


Warm Regards,

Vijay

1 REPLY 1

Former Member
0 Kudos

Hi Saurabh,

I am putting some simple report which have the selction screen and Coded with ABAP OOPs.

This may guide you.

REPORT demo_abap_objects.

----


  • Global Selection Screen

----


SELECTION-SCREEN BEGIN OF SCREEN 100 AS WINDOW TITLE text-100.

PARAMETERS: button1 RADIOBUTTON GROUP grp,

button2 RADIOBUTTON GROUP grp,

button3 RADIOBUTTON GROUP grp,

button4 RADIOBUTTON GROUP grp.

SELECTION-SCREEN END OF SCREEN 100.

----


  • INTERFACE status

----


  • Interface definition *

----


INTERFACE status.

METHODS write.

ENDINTERFACE.

----


  • CLASS vessel DEFINITION

----


  • Superclass definition *

----


CLASS vessel DEFINITION.

PUBLIC SECTION.

METHODS: constructor,

drive IMPORTING speed_up TYPE i,

get_id RETURNING value(id) TYPE i.

PROTECTED SECTION.

DATA: speed TYPE i,

max_speed TYPE i VALUE 100.

PRIVATE SECTION.

CLASS-DATA object_count TYPE i.

DATA id TYPE i.

ENDCLASS.

----


  • CLASS vessel IMPLEMENTATION

----


  • Superclass implementation *

----


CLASS vessel IMPLEMENTATION.

METHOD constructor.

object_count = object_count + 1.

id = object_count.

ENDMETHOD.

METHOD drive.

speed = speed + speed_up.

IF speed > max_speed.

speed = max_speed.

ENDIF.

ENDMETHOD.

METHOD get_id.

id = me->id.

ENDMETHOD.

ENDCLASS.

----


  • CLASS ship DEFINITION

----


  • Subclass definition *

----


CLASS ship DEFINITION INHERITING FROM vessel.

PUBLIC SECTION.

INTERFACES status.

DATA name TYPE string READ-ONLY.

METHODS: constructor IMPORTING name TYPE string,

drive REDEFINITION.

EVENTS emergency_call.

ENDCLASS.

----


  • CLASS ship IMPLEMENTATION

----


  • Subclass implementation *

----


CLASS ship IMPLEMENTATION.

METHOD constructor.

CALL METHOD super->constructor.

max_speed = 30.

me->name = name.

ENDMETHOD.

METHOD status~write.

DATA id.

id = me->get_id( ).

WRITE: / name, 'is vessel', id,

'and has speed', speed.

ENDMETHOD.

METHOD drive.

speed = speed + speed_up.

IF speed > max_speed.

max_speed = 0.

speed = 0.

RAISE EVENT emergency_call.

ENDIF.

ENDMETHOD.

ENDCLASS.

----


  • CLASS coast_guard DEFINITION

----


  • Event handler definition *

----


CLASS coast_guard DEFINITION.

PUBLIC SECTION.

INTERFACES status.

METHODS receive FOR EVENT emergency_call OF ship IMPORTING sender.

ALIASES write FOR status~write.

PRIVATE SECTION.

DATA caller TYPE string.

ENDCLASS.

----


  • CLASS coast_guard IMPLEMENTATION

----


  • Event handler implementation *

----


CLASS coast_guard IMPLEMENTATION.

METHOD status~write.

IF caller IS INITIAL.

WRITE: / 'Coast guard received no call'.

ELSE.

WRITE: / 'Coast guard received a call from', caller.

ENDIF.

ENDMETHOD.

METHOD receive.

caller = sender->name.

CALL METHOD write.

ENDMETHOD.

ENDCLASS.

----


  • CLASS main DEFINITION

----


  • Main class definition *

----


CLASS main DEFINITION.

PUBLIC SECTION.

CLASS-METHODS: start,

objects,

inheritance,

interfaces,

events.

ENDCLASS.

----


  • CLASS main IMPLEMENTATION

----


  • Main class implementation *

----


CLASS main IMPLEMENTATION.

METHOD start.

CALL SELECTION-SCREEN 100 STARTING AT 10 3

ENDING AT 42 7.

IF sy-subrc NE 0.

EXIT.

ELSEIF button1 = 'X'.

CALL METHOD objects.

ELSEIF button2 = 'X'.

CALL METHOD inheritance.

ELSEIF button3 = 'X'.

CALL METHOD interfaces.

ELSEIF button4 = 'X'.

CALL METHOD events.

ENDIF.

ENDMETHOD.

METHOD objects.

DATA: vessel1 TYPE REF TO vessel,

vessel2 TYPE REF TO vessel.

DATA: vessel_id TYPE i.

CREATE OBJECT: vessel1 TYPE vessel,

vessel2 TYPE vessel.

CALL METHOD: vessel1->drive( 50 ),

vessel2->drive( 80 ).

vessel_id = vessel1->get_id( ).

WRITE: / 'Vessel ID is', vessel_id.

vessel_id = vessel2->get_id( ).

WRITE: / 'Vessel ID is', vessel_id.

ENDMETHOD.

METHOD inheritance.

DATA: vessel TYPE REF TO vessel,

ship TYPE REF TO ship.

CREATE OBJECT ship TYPE ship EXPORTING name = 'Titanic'.

CALL METHOD ship->drive( 20 ).

MOVE ship TO vessel.

CALL METHOD vessel->drive( 10 ).

CALL METHOD ship->status~write.

ENDMETHOD.

METHOD interfaces.

DATA: status_tab TYPE TABLE OF REF TO status,

status TYPE REF TO status.

DATA: ship TYPE REF TO ship,

station TYPE REF TO coast_guard.

CREATE OBJECT: ship EXPORTING name = 'Titanic'.

APPEND ship TO status_tab.

CREATE OBJECT station.

APPEND station TO status_tab.

LOOP AT status_tab INTO status.

CALL METHOD status->write.

ENDLOOP.

ENDMETHOD.

METHOD events.

DATA: ship TYPE REF TO ship,

station TYPE REF TO coast_guard.

CREATE OBJECT: ship EXPORTING name = 'Titanic',

station.

SET HANDLER station->receive FOR ship.

DO 5 TIMES.

CALL METHOD ship->drive( 10 ).

ENDDO.

ENDMETHOD.

ENDCLASS.

----


  • System event START-OF-SELECTION

----


  • Triggered by the ABAP runtime environment automatically *

----


START-OF-SELECTION.

CALL METHOD main=>start.

----


Warm Regards,

Vijay