Wednesday, June 25, 2014

sm37 and sm50

SM37 is "Job Overview" It allows one to see what jobs are running based on certain selection criteria. While SM50 is "Process Overview", a job in SM37 may have spawned several processes simultaneously while it is running. The number of processes would be logged in SM50. They are based on the defined type such as dialog, batch, update, background, etc.. For instance as a user logs on they logon as a dialog user and are granted higher priority than a background user as far as a processor and memory times and sizes are concerned. Therefore there is less wait time for a dialog user.

Sunday, April 20, 2014

ABAP - Constructor

Constructors are special methods that cannot be called using CALL METHOD.

Instead, they are called automatically by the system to set the starting state of a new object or class.

There are two types of constructors - instance constructors and static constructors. 

To use them, you must declare them explicitly in the class.


ABAP - Inheritance


  REPORT  ZMYSAPLIBRARY.

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


* Super class LCL_CompanyEmployees


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


CLASS lcl_company_employees DEFINITION.
  PUBLIC SECTION.
    TYPES:
      BEGIN OF t_employee,
        no  TYPE i,
        name TYPE string,
        wage TYPE i,
     END OF t_employee.
    METHODS:
      constructor,
      add_employee
        IMPORTING im_no   TYPE i
                  im_name TYPE string
                  im_wage TYPE i,
      display_employee_list,
      display_no_of_employees.



  PRIVATE SECTION.
    CLASS-DATAi_employee_list TYPE TABLE OF t_employee,
                no_of_employees TYPE i.
ENDCLASS.
*-- CLASS LCL_CompanyEmployees IMPLEMENTATION
CLASS lcl_company_employees IMPLEMENTATION.
  METHOD constructor.
    no_of_employees no_of_employees + 1.
  ENDMETHOD.
  METHOD add_employee.
*   Adds a new employee to the list of employees
    DATAl_employee TYPE t_employee.
    l_employee-no im_no.
    l_employee-name im_name.
    l_employee-wage im_wage.
    APPEND l_employee TO i_employee_list.
  ENDMETHOD.
  METHOD display_employee_list.
*   Displays all employees and there wage
    DATAl_employee TYPE t_employee.
    WRITE'List of Employees'.
    LOOP AT i_employee_list INTO l_employee.
      WRITE/ l_employee-nol_employee-namel_employee-wage.
    ENDLOOP.
  ENDMETHOD.
  METHOD display_no_of_employees.
*   Displays total number of employees
    SKIP 3.
    WRITE'Total number of employees:'no_of_employees.
  ENDMETHOD.
ENDCLASS.



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


* Sub class LCL_BlueCollar_Employee


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


CLASS lcl_bluecollar_employee DEFINITION


          INHERITING FROM lcl_company_employees.
  PUBLIC SECTION.
    METHODS:
        constructor
          IMPORTING im_no             TYPE i
                    im_name           TYPE string
                    im_hours          TYPE i
                    im_hourly_payment TYPE i,
         add_employee REDEFINITION.
  PRIVATE SECTION.
    DATA:no             TYPE i,
         name           TYPE string,
         hours          TYPE i,
         hourly_payment TYPE i.



ENDCLASS.
*---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION
CLASS lcl_bluecollar_employee IMPLEMENTATION.
  METHOD constructor.
*   The superclass constructor method must be called from the subclass


*   constructor method
    CALL METHOD super->constructor.
    no im_no.
    name im_name.
    hours im_hours.
    hourly_payment im_hourly_payment.
  ENDMETHOD.
  METHOD add_employee.
*   Calculate wage an call the superclass method add_employee to add


*   the employee to the employee list
    DATAl_wage TYPE i.
    l_wage hours * hourly_payment.
    CALL METHOD super->add_employee
      EXPORTING im_no no
                im_name name
                im_wage l_wage.
  ENDMETHOD.
ENDCLASS.
*******************************************************


* Sub class LCL_WhiteCollar_Employee


*******************************************************
CLASS lcl_whitecollar_employee DEFINITION


    INHERITING FROM lcl_company_employees.
  PUBLIC SECTION.
    METHODS:
        constructor
          IMPORTING im_no                 TYPE i
                    im_name               TYPE string
                    im_monthly_salary     TYPE i
                    im_monthly_deducations TYPE i,
         add_employee REDEFINITION.
  PRIVATE SECTION.
    DATA:
      no                    TYPE i,
      name                  TYPE string,
      monthly_salary        TYPE i,
      monthly_deducations    TYPE i.
ENDCLASS.
*---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION
CLASS lcl_whitecollar_employee IMPLEMENTATION.
  METHOD constructor.
*   The superclass constructor method must be called from the subclass


*   constructor method


    CALL METHOD super->constructor.
    no im_no.
    name im_name.
    monthly_salary im_monthly_salary.
    monthly_deducations im_monthly_deducations.
  ENDMETHOD.
  METHOD add_employee.
*   Calculate wage an call the superclass method add_employee to add


*   the employee to the employee list
    DATAl_wage TYPE i.
    l_wage monthly_salary monthly_deducations.
    CALL METHOD super->add_employee
      EXPORTING im_no no
                im_name name
                im_wage l_wage.
  ENDMETHOD.
ENDCLASS.
*******************************************************


* R E P O R T


*******************************************************
DATA:
* Object references
  o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,
  o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.
START-OF-SELECTION.
* Create bluecollar employee obeject
  CREATE OBJECT o_bluecollar_employee1
      EXPORTING im_no  1
                im_name  'Gylle Karen'
                im_hours 38
                im_hourly_payment 75.
* Add bluecollar employee to employee list
  CALL METHOD o_bluecollar_employee1->add_employee
      EXPORTING im_no  1
                im_name  'Gylle Karen'
                im_wage 0.
* Create whitecollar employee obeject
  CREATE OBJECT o_whitecollar_employee1
      EXPORTING im_no  2
                im_name  'John Dickens'
                im_monthly_salary 10000
                im_monthly_deducations 2500.
* Add bluecollar employee to employee list
  CALL METHOD o_whitecollar_employee1->add_employee
      EXPORTING im_no  1
                im_name  'Karen Johnson'
                im_wage 0.
* Display employee list and number of employees. Note that the result


* will be the same when called from o_whitecollar_employee1 or


* o_bluecolarcollar_employee1, because the methods are defined


* as static (CLASS-METHODS)
  CALL METHOD o_whitecollar_employee1->display_employee_list.
  CALL METHOD o_whitecollar_employee1->display_no_of_employees.

Saturday, April 19, 2014