Wednesday, 26 December 2012

Constructor in Classes

Usage of Constructors in Classes

There are 2 types of constructors in an ABAP CLASS.
  1.  CONSTRUCTOR: The constructor is a method which is used to initialize the class members or assign value to them. It is called once for each instance of an class or more precisely it is called for each object of a class.
  2. CLASS CONSTRUCTOR: The class constructor is called once for each class irrespective of the number of objects created or instantiated for that class.

Let us look into this concept with the help of an example:

EXAMPLE:

REPORT z_constructor.

*--Class Definition
CLASS l_test DEFINITION.
     PUBLIC SECTION.
         METHODS:  constructor.
         CLASS-METHODS: class_constructor.
ENDCLASS.

*--Class Implementation.
CLASS l_test IMPLEMENTATION.
     METHOD constructor.
        WRITE : / ' inside constructor '.
     ENDMETHOD.
     METHOD class_constructor.
        WRITE : / 'inside class constructor'.
     ENDMETHOD.
ENDCLASS.

*--Report.
*--Declare the reference variables.
DATA  : ob1 TYPE REF TO  l_test,
              ob2 TYPE REF TO  l_test.

START-OF-SELECTION.
CREATE OBJECT ob1.
CREATE OBJECT ob2.

------------------------------------------------------------------------------------------------------------
OUTPUT:

inside class constructor                          <-- from class constructor

inside constructor                                  <-- from constructor for object ob1

inside constructor                                  <-- from constructor for object ob2
------------------------------------------------------------------------------------------------------------

Thursday, 13 December 2012

Declaring Local Class in ABAP Report

In this tutorial we will learn about how to declare local class and use it in a report program.

KEY POINTS:
  • The first step is to give a class definition.
  • Next implement the class and its methods.
  • Declare a reference to the class.
  • Create an object of the class and use it to call the methods of the class.
EXAMPLE:
REPORT  zlocal_class.
*--Class Definition
CLASS l_test DEFINITION.
   PUBLIC SECTION.
*--data declaration
     DATA: info TYPE string.
*--methods
     METHODS:
     constructor     IMPORTING p_balance TYPE dmbtr,
     set_balance    IMPORTNG  p_set TYPE dmbtr,
                           EXPORTING p_amount TYPE dmbtr,
     display.
  PRIVATE SECTION.
    DATA : balance TYPE dmbtr.
ENDCLASS.      " end of class definition
*--Class Implementation
 CLASS l_test IMPLEMENTATION.
    METHOD constructor.
      WRITE: / 'inside constructor'.
       balance  = p_balance.
      WRITE: /  'value'  ,  balance.
    ENDMETHOD.
    METHOD set_balance.
       balance = p_set.
    ENDMETHOD.
   METHOD display.
      WRITE : / ' set the balance'.
      WRITE :  balance.
   ENDMETHOD.
ENDCLASS.

*--Report 
*-- Declare the reference.
 DATA:  test TYPE REF TO  l_test.

*declare a parameter on selection screen.
PARAMETERS: p_val TYPE dmbtr.

START-OF-SELECTION.
*--create object
CREATE OBJECT test 
    EXPORTING 
     p_balance =  40.                          <-- This will be passed to the constructor.

*-- call method set_balance.
CALL METHOD test->set_balance  <-- call the method to set balance.
    EXPORTING
      p_set = p_val.
*-- call method display.
CALL METHOD test->display.        <-- call method display.

  ----------------------------------------------------------------------------------------------------------

INPUT :
 P_VAL  = 500.

OUTPUT:
inside constructor
value 40

set the balance 500
-----------------------------------------------------------------------------------------------------------
Notes :  
  • The method constructor is called when the object is created using CREATE OBJECT statement.
  • The method set_balance s used to set the value or assign the value of parameter to the class attribute balance.
  • The attribute 'balance' is private and hence can only be accessed through class methods.
  • The method display will print the value of balance attribute.

Table Maintenance Generation Events

INTRODUCTION

Table maintenance generation events can help us to perform validations while creating new entries in a table or hiding the fields or assigning default values to table fields.
There are large number of events present which can be used for such purposes.Some of them are :


01  Before saving the data in the database
02  After saving the data in the database
03  Before deleting the data displayed
04  After deleting the data displayed
05  Creating a new entry


15  Before retrieving deleted entries
16  After retrieving deleted entries

21  Fill hidden fields 

In total there are 39 events provided by SAP.

HOW TO USE THESE EVENTS?

Now we will learn how to use these events in some simple steps:

1. Create a table in SE11.
2. Go to Utilities ->Table Maintenance Generator -> Fill Required data of this Screen -> Environment -> Modification -> Events.
3. Select the event.
4. Give the form name and click on the editor icon.
5. Select the include to place your form definition.
6. Within the form write your code . Save and Activate.
7. Now just go to SM35 to maintain your table to witness the events trigger.

EXAMPLE 

Table : Let us take a simple table having fields as employee id  ,  employee name and date on which  entry created.

Requirement : The employee name and date should get automatically populated while creating a new entry.

Table Name : ZTEST_EVENTS

Fields :                           Type 
ZEMPID                        NUMC
ZNAME                        CHAR
ZDATE                          DATS

Now create the Table Maintenance Generator.

Select Event :  05  Creating a new entry.

Give the form name as : CREATE_ENTRY and write the following code.

FORM create_entry.
ztest_events-zname = sy-uname.
ztest-events-zdate   = sy-datum.
ENDFORM.

Save and Activate.

Now if we go to maintain the table and leave name and date as blank , we will see that they are automatically created.

Hence , In this way events can be used.