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

Sample program

Former Member
0 Likes
913

Hi Experts,

could anybody provide me a sample program in OOPs concept and the same programe should be in procedurel language also.

so that i can compare both the programs for better understanding..?

Thanx & Reg,

Sameer

7 REPLIES 7
Read only

Former Member
0 Likes
861
BCALV_TEST_GRID
Read only

former_member69765
Contributor
0 Likes
861

Hi.. If you want to understand the ABAP Objects then some sample programs are available here :[ www.abaplearning.com| www.abaplearning.com];

Cheers.

Varun.

Read only

Former Member
0 Likes
861

Hii!

Check out this sample code in debugging mode.


REPORT  z_CLASS_CASTING.

TYPE-POOLS icon.
INCLUDE z_class.

DATA: r_plane TYPE REF TO lcl_airplane,
      r_cargo TYPE REF TO lcl_cargo_plane,
      r_passenger TYPE REF TO lcl_passenger_plane,
      plane_list TYPE TABLE OF REF TO lcl_airplane.

START-OF-SELECTION.

lcl_airplane=>display_n_o_airplanes( ).

CREATE OBJECT r_passenger EXPORTING
                            im_name      = 'LH BERLIN'
                            im_planetype = '747-400'
                            im_seats     = 345.

APPEND r_passenger TO plane_list.

CREATE OBJECT r_cargo EXPORTING
                        im_name      = 'US Hercules'
                        im_planetype = '747-500'
                        im_cargo     = 533.

APPEND r_cargo TO plane_list.

LOOP AT plane_list INTO r_plane.
  r_plane->display_attributes( ).
ENDLOOP.
lcl_airplane=>display_n_o_airplanes( ).

INCLUDE PROGRAM


CLASS lcl_airplane DEFINITION.
  PUBLIC SECTION.
    CONSTANTS: pos_1 TYPE i VALUE 30.
    METHODS:
      constructor IMPORTING
                    im_name TYPE string
                    im_planetype TYPE saplane-planetype,
                  display_attributes.
    CLASS-METHODS: display_n_o_airplanes.
  PRIVATE SECTION.
    METHODS: get_technical_attributes
               IMPORTING im_type    TYPE saplane-planetype
               EXPORTING ex_weight  TYPE s_plan_wei
                         ex_tankcap TYPE s_capacity.

    DATA: name TYPE string,
          planetype TYPE saplane-planetype.

    CLASS-DATA: n_o_airplanes TYPE i.
ENDCLASS.                    "lcl_airplane DEFINITION

*---------------------------------------------------------------------*
*       CLASS lcl_airplane IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_airplane IMPLEMENTATION.

  METHOD constructor.
    name      = im_name.
    planetype = im_planetype.
    n_o_airplanes = n_o_airplanes + 1.
  ENDMETHOD.                    "constructor

  METHOD display_attributes.
    DATA: weight TYPE saplane-weight,
             cap TYPE saplane-tankcap.
    WRITE: / icon_ws_plane AS ICON,
           / 'Name of airplane', AT pos_1 name,
           / 'Airplane type:', AT pos_1 planetype.
    get_technical_attributes( EXPORTING im_type    = planetype
                              IMPORTING ex_weight  = weight
                                        ex_tankcap = cap ).
    WRITE: / 'Weight:', weight,
             'Tank capacity:', cap.

  ENDMETHOD.                    "display_attributes

  METHOD display_n_o_airplanes.
    WRITE: /,/ 'Number of airplanes:',AT pos_1 n_o_airplanes
                LEFT-JUSTIFIED, /.
  ENDMETHOD.                    "display_n_o_airplanes

  METHOD get_technical_attributes.
    SELECT SINGLE weight
                  tankcap
             FROM saplane
             INTO (ex_weight, ex_tankcap)
            WHERE planetype = im_type.
    IF sy-subrc <> 0.
      ex_weight = 100000.
      ex_tankcap = 10000.
    ENDIF.
  ENDMETHOD.                    "get_technical_attributes

ENDCLASS.                    "lcl_airplane IMPLEMENTATION

*---------------------------------------------------------------------*
*       CLASS lcl_cargo_plane DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_cargo_plane DEFINITION INHERITING FROM lcl_airplane.

  PUBLIC SECTION.

    METHODS: constructor IMPORTING im_name TYPE string
                                   im_planetype TYPE saplane-planetype
                                   im_cargo TYPE scplane-cargomax.

    METHODS: display_attributes REDEFINITION.

    METHODS: get_cargo RETURNING value(re_cargo) TYPE scplane-cargomax.

  PRIVATE SECTION.
    DATA: max_cargo TYPE scplane-cargomax.

ENDCLASS.                    "lcl_cargo_plane DEFINITION

*---------------------------------------------------------------------*
*       CLASS lcl_cargo_plane IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_cargo_plane IMPLEMENTATION.

  METHOD constructor.
    CALL METHOD super->constructor( im_name = im_name
      im_planetype = im_planetype ).
    max_cargo = im_cargo.
  ENDMETHOD.                    "constructor

  METHOD display_attributes.
    super->display_attributes( ).
    WRITE: / 'Max Cargo = ', max_cargo.
    ULINE.
  ENDMETHOD.                    "display_attributes

  METHOD get_cargo.
    re_cargo = max_cargo.
  ENDMETHOD.                    "get_cargo

ENDCLASS.                    "lcl_cargo_plane IMPLEMENTATION

*---------------------------------------------------------------------*
*       CLASS lcl_passenger_plane DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_passenger_plane DEFINITION INHERITING FROM lcl_airplane.

  PUBLIC SECTION.

    METHODS: constructor IMPORTING im_name      TYPE string
                                   im_planetype TYPE saplane-planetype
                                   im_seats     TYPE sflight-seatsmax.

    METHODS: display_attributes REDEFINITION.

  PRIVATE SECTION.
    DATA: max_seats TYPE sflight-seatsmax.



ENDCLASS.                    "lcl_passenger_plane DEFINITION

*---------------------------------------------------------------------*
*       CLASS lcl_passenger_plane IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_passenger_plane IMPLEMENTATION.
  METHOD constructor.
    CALL METHOD super->constructor( EXPORTING im_name = im_name
                                         im_planetype = im_planetype ).
    max_seats = im_seats.
  ENDMETHOD.                    "constructor

  METHOD display_attributes.
    super->display_attributes( ).
    WRITE: / 'Max Seats = ', max_seats.
    ULINE.
  ENDMETHOD.                    "display_attributes

ENDCLASS.                    "lcl_passenger_plane IMPLEMENTATION

Regards

Abhijeet

Read only

Former Member
0 Likes
861

Hi sameer,

Please go through this url.

http://www.abapprogramming.net/2007/10/oops-abap-1.html

Regards,

Muneesh Gitta.

Read only

Former Member
0 Likes
861

The following code creates ALV GRID with OOPS.

&----


*& Report ZALV_OOINTERACTIVE *

*& *

*& *

*&----


*

*& AS : Simple Interactive ALV report developed using OOPS *

*& *

&----


REPORT ZALV_OOINTERACTIVE.*Class definition for handling double click

CLASS event_class DEFINITION DEFERRED.*Internal table and work area declarations for dd02l and dd03l

DATA : it_dd02l TYPE TABLE OF dd02l,

wa_dd02l TYPE dd02l,

it_dd03l TYPE TABLE OF dd03l,

wa_dd03l TYPE dd03l.*data declarations for ALV Main list

DATA : ty_lay1 TYPE lvc_s_layo,

it_fieldcat TYPE lvc_t_fcat ,

ty_fieldcat TYPE lvc_s_fcat ,

c_alv1 TYPE REF TO cl_gui_alv_grid,

c_cont1 TYPE REF TO cl_gui_custom_container,

event_receiver TYPE REF TO event_class.*data declarations for ALV Interactive listDATA : ty_lay2 TYPE lvc_s_layo,

it_fcat TYPE lvc_t_fcat ,

ty_fcat TYPE lvc_s_fcat ,

c_alv2 TYPE REF TO cl_gui_alv_grid,

c_cont2 TYPE REF TO cl_gui_custom_container.

**Select options for multiple values and NOT ranges

SELECT-OPTIONS : s_table FOR wa_dd02l-tabname NO INTERVALS.

  • Initialization event

INITIALIZATION.*Start of selection event

START-OF-SELECTION.*fetch data into table and field characteristics

PERFORM fetch_data.*ALV display for output

PERFORM alv_output.&----


*& Form FETCH_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fetch_data .*Select the table details

SELECT * FROM dd02l INTO CORRESPONDING FIELDS OF TABLE it_dd02l

WHERE tabname IN s_table

AND tabclass = 'TRANSP'.

ENDFORM. " FETCH_DATA----


* CLASS lcl_event_receiver DEFINITION----
CLASS event_class DEFINITION.*Handling double click

PUBLIC SECTION. METHODS:

handle_double_click

FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row .ENDCLASS. "lcl_event_receiver DEFINITION

----


* CLASS lcl_event_receiver IMPLEMENTATION

----


CLASS event_class IMPLEMENTATION. METHOD handle_double_click. DATA : ls_dd02l LIKE LINE OF it_dd02l.*Reading the selected data into a variable

READ TABLE it_dd02l INDEX e_row-index INTO ls_dd02l.* *Select the field details of the selected table

SELECT * FROM dd03l INTO CORRESPONDING FIELDS OF TABLE it_dd03l

WHERE tabname EQ ls_dd02l-tabname.

*calling the ALV containing the field values

CALL SCREEN 101. ENDMETHOD. "handle_double_clickENDCLASS. "lcl_event_receiver IMPLEMENTATION&----


& Module pbo_100 OUTPUT&----


*MODULE pbo_100 OUTPUT.

*set pf-status 'XXX'.

*set titlebar 'XXX'.

ENDMODULE. " PBO_100 OUTPUT

&----


*& Module alv_100 OUTPUT

&----


MODULE alv_100 OUTPUT.*Check if there is no custom container in screen 100

IF c_cont1 IS INITIAL.*Creating object of container

CREATE OBJECT c_cont1

EXPORTING

container_name = 'CCONT'.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.*Creating object of alv

CREATE OBJECT c_alv1

EXPORTING

i_parent = c_cont1.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.*alv layout

PERFORM alv_100_layout.*alv field catalogue

PERFORM alv_100_fieldcat.*Displaying the ALV grid

CALL METHOD c_alv1->set_table_for_first_display

EXPORTING

is_layout = ty_lay1

CHANGING

it_outtab = it_dd02l[]

it_fieldcatalog = it_fieldcat. IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.*Create object of the event class and setting handler for double click

CREATE OBJECT event_receiver.

SET HANDLER event_receiver->handle_double_click FOR c_alv1. ENDIF.ENDMODULE. " ALV_100 OUTPUT&----


& Module pai_100 INPUT&----


*MODULE pai_100 INPUT.

ENDMODULE. " pai_100 INPUT----


* MODULE PBO_101 OUTPUT----
MODULE pbo_101 OUTPUT.

  • SET PF-STATUS 'XXX'.

  • SET TITLEBAR 'XXX'.

ENDMODULE. " PBO_101 INPUT----


* MODULE ALV_101 OUTPUT----

MODULE alv_101 OUTPUT.

*Check if the Custom container exists.

IF c_cont2 IS INITIAL.*Creating container object

CREATE OBJECT c_cont2

EXPORTING

container_name = 'CDCONT'.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.*creating ALV grid for interactive list

CREATE OBJECT c_alv2

EXPORTING

i_parent = c_cont2.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.*ALV layout

PERFORM alv_101_layout.*ALV fieldcatalogue

PERFORM alv_101_fieldcat.*Sorting the output by field position

SORT it_dd03l BY position.*ALV for display field details

CALL METHOD c_alv2->set_table_for_first_display

EXPORTING

is_layout = ty_lay2

CHANGING

it_outtab = it_dd03l[]

it_fieldcatalog = it_fcat.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF. ENDIF.ENDMODULE. " ALV_101 OUTPUT

&----


& Module PAI_101 INPUT&----


*MODULE pai_101 INPUT.ENDMODULE. " PAI_101 INPUT

&----


*& Form ALV_OUTPUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_output .

CALL SCREEN 100.ENDFORM. " ALV_OUTPUT

&----


*& Form ALV_100_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_100_layout . ty_lay1-grid_title = 'TABLES'.

ty_lay1-zebra = 'X'.

ty_lay1-no_toolbar = 'X'.ENDFORM. " ALV_100_LAYOUT

&----


*& Form ALV_100_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_100_fieldcat .

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 1.

ty_fieldcat-fieldname = 'TABNAME'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'TableName'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 2.

ty_fieldcat-fieldname = 'TABCLASS'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'CATEGORY'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 3.

ty_fieldcat-fieldname = 'AS4USER'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'CREATED'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 4.

ty_fieldcat-fieldname = 'AS4DATE'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'DATE'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 5.

ty_fieldcat-fieldname = 'AS4TIME'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'TIME'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 6.

ty_fieldcat-fieldname = 'CONTFLAG'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'Delivery Class'.

ty_fieldcat-outputlen = 15.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.ENDFORM. " ALV_100_FIELDCAT

&----


*& Form ALV_101_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_101_layout . ty_lay2-grid_title = 'FIELDS'.

ty_lay2-zebra = 'X'.

ty_lay2-no_toolbar = 'X'.ENDFORM. " ALV_101_LAYOUT

&----


*& Form ALV_101_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_101_fieldcat . REFRESH it_fieldcat.

REFRESH it_fcat.

CLEAR ty_fcat. ty_fcat-row_pos = 1.

ty_fcat-col_pos = 1.

ty_fcat-fieldname = 'FIELDNAME'.

ty_fcat-tabname = 'GT_DD03L'.

ty_fcat-coltext = 'Fieldname'.

ty_fcat-outputlen = 10.

APPEND ty_fcat TO it_fcat.

ty_fcat-row_pos = 1.

ty_fcat-col_pos = 2.

ty_fcat-fieldname = 'CHECKTABLE'.

ty_fcat-tabname = 'GT_DD03L'.

ty_fcat-coltext = 'CHECKTABLE'.

ty_fcat-outputlen = 10.

APPEND ty_fcat TO it_fcat. ty_fcat-row_pos = 1.

ty_fcat-col_pos = 3.

ty_fcat-fieldname = 'KEYFLAG'.

ty_fcat-tabname = 'GT_DD03L'.

ty_fcat-coltext = 'Key Flag'.

ty_fcat-outputlen = 10.

APPEND ty_fcat TO it_fcat.ENDFORM. " ALV_101_FIELDCAT

The following code creates ALV without using oops.

This program displays the Purchase Order header details on the basic list and on double-clicking any of the record on the basic list, the item-level information is displayed on the secondary list.

REPORT ZPURCHASE_ORDER.

***********************************************************************

  • TYPE-POOLS DECLARATION

***********************************************************************

TYPE-POOLS:

SLIS.

***********************************************************************

  • DATA DECLARATIONS

***********************************************************************

DATA:

W_EBELN TYPE EKKO-EBELN,

W_PROG TYPE SY-REPID,

T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

FS_FIELDCAT LIKE LINE OF T_FIELDCAT,

T_EVENTCAT TYPE SLIS_T_EVENT,

W_EVENTCAT LIKE LINE OF T_EVENTCAT.

***********************************************************************

  • SELECT-OPTIONS DECLARATION

***********************************************************************

SELECT-OPTIONS:

S_EBELN FOR W_EBELN.

***********************************************************************

  • INTERNAL TABLE AND FIELD-STRING DECLARATIONS

***********************************************************************

DATA:

T_EKKO LIKE

STANDARD TABLE

OF EKKO,

FS_EKKO LIKE LINE OF T_EKKO.

DATA:

T_EKPO LIKE

STANDARD TABLE

OF EKPO,

FS_EKPO LIKE LINE OF T_EKPO.

***********************************************************************

  • START-OF-SELECTION

***********************************************************************

START-OF-SELECTION.

SELECT *

FROM EKKO

INTO TABLE T_EKKO

WHERE EBELN IN S_EBELN.

W_PROG = SY-REPID.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = W_PROG

I_CALLBACK_USER_COMMAND = 'PICK'

I_STRUCTURE_NAME = 'EKKO'

TABLES

T_OUTTAB = T_EKKO

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

&----


*& Form pick

&----


  • -->UCOMM text

  • -->SELFIELD text

----


FORM PICK USING COMMAND LIKE SY-UCOMM

SELFIELD TYPE SLIS_SELFIELD.

READ TABLE T_EKKO INTO FS_EKKO INDEX SELFIELD-TABINDEX.

CASE COMMAND.

WHEN '&IC1'.

SELECT *

FROM EKPO

INTO TABLE T_EKPO

WHERE EBELN EQ FS_EKKO-EBELN.

W_PROG = SY-REPID.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_STRUCTURE_NAME = 'EKPO'

CHANGING

CT_FIELDCAT = T_FIELDCAT

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

DELETE T_FIELDCAT WHERE FIELDNAME EQ 'EBELN'.

DELETE T_FIELDCAT WHERE FIELDNAME EQ 'BUKRS'.

DELETE T_FIELDCAT WHERE FIELDNAME EQ 'LGORT'.

DELETE T_FIELDCAT WHERE FIELDNAME EQ 'WERKS'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = W_PROG

IT_FIELDCAT = T_FIELDCAT

IT_EVENTS = T_EVENTCAT

TABLES

T_OUTTAB = T_EKPO

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDCASE. " CASE COMMAND

ENDFORM. " FORM PICK

FORM T_EVENTCAT.

W_EVENTCAT-NAME = 'TOP_OF_PAGE'.

W_EVENTCAT-FORM = 'TOP'.

APPEND W_EVENTCAT TO T_EVENTCAT.

ENDFORM.

FORM TOP.

READ TABLE T_EKPO INTO FS_EKPO INDEX 1.

WRITE:/ 'Purchase Document Number'(001),30 FS_EKPO-EBELN,

/ 'Company Code'(002), 30 FS_EKPO-BUKRS,

/ 'Plant'(003), 30 FS_EKPO-WERKS,

/ 'Storage Location'(004),30 FS_EKPO-LGORT.

ENDFORM.

Read only

Former Member
Read only

Former Member