SAP ABAP OOP / Constructure

Programlar içerisinde kullanmanız gereken belirli standart işlemler olabilir. Örneğin kullanıcıdan alacağınız bir değeri kodlama içerisinde belirli bir formül içerisinde çeşitli işlemlerden geçirerek kullanıcıya bir değer döndürmeniz gerekebilir.

Bu gibi senaryolar için kullanılabilecek en iyi yapı Constructure olacaktır. Örnek bir senaryo olarak, kullanıcıdan alacağımız bir rakamı class içerisinde construcure belirleyerek gelen değeri 5 ile çarpıp sonucun ucuz yada pahalı diye geri döndürülmesini sağlıyor olacağız.

Bir önceki yazıda belirttiğim gibi class yapısını oluşturmak için Definition ve implementation katmanlarını oluşturarak ve kullanıcıdan alacağımız değeri tanımlayarak başlıyoruz.

Definition içerisinde iki tane metodumuz mevcut, constructure metodu kendisine vereceğimiz sabitin parametresini alacak. kosul metodunda ise kullanıcıdan alacağımız input parametresi ve constructure sonrasında dönen değeri vereceğimiz output parametresinden oluşmaktadır.

PARAMETERS : p_dbmtr TYPE bseg-dmbtr.

CLASS lcl_class DEFINITION.
  PUBLIC SECTION.
    METHODS constructor IMPORTING value(const) TYPE bseg-dmbtr.
    METHODS  kosul IMPORTING value(input) TYPE bseg-dmbtr
                   EXPORTING value(output) TYPE string.
  PRIVATE SECTION.
    DATA : tutar TYPE bseg-dmbtr.
ENDCLASS.

 

Implementation içerisinde ise metodlarımızı belirleyerek yapılacak işlemleri oluşturuyoruz. Bunun için koşul metodunda input değerimizi, constructure içerisindeki parametre olan const’u eşitlediğimiz tutar değişkeni ile çarpıyoruz. Yani,

kullanıcıdan gelen değer = kullanıcıdan gelen değer x (const=tutar)

Bu işlem sonrasında çıkan sonuc 3000’den küçükse ucuz büyükse pahalı diye bir uyarı vereceğiz.

Ancak kullanıcıdan gelen değerin const ile çarpılmış halinide göstermek için bir concatenate operasyonu gerçekleştiriyoruz.

CLASS lcl_class IMPLEMENTATION.
  METHOD kosul.
    DATA : lv_ucuz TYPE string Value 'UCUZ',
           lv_pahali TYPE string VALUE 'PAHALI',
           lv_input TYPE string.
    input  = input  * tutar.
    lv_input = input.

    if input GT 0 and input LT 3000.
      CONCATENATE lv_input lv_ucuz INTO OUTPUT.
    ELSEIF input GT 3000.
      CONCATENATE lv_input LV_PAHALI INTO OUTPUT.
    ENDIF.
  ENDMETHOD.

  METHOD CONSTRUCTOR.
    tutar = const.
  ENDMETHOD.
ENDCLASS.

 

Bu aşamadan sonra inheritance ile oluşturduğumuz class’ın bir instance’ını alarak içerdeki metodlara vereceğimiz parametreleri belirliyoruz.

TYPE REF TO keyword’ü ile lcl_class’ımızdan bir instance alarak class_a nesnesine atayabiliriz.

Start-Of-Selection esnasında constructure içerisinde alacağı sabit parametrei 5 olarak belirliyoruz. class_a koşul parametresine göndereceği input değeri ise kullanıcıdan alacağı değer olacak ve constructure işelemi sonrasında uğrayacağı işlemden çıkan sonucuda output olarak lv_kosul olarak bir değişkene atayarak bu değişkeni ekrana bastıracağız.

DATA : class_a TYPE REF TO lcl_class.

START-OF-SELECTION.
  DATA : lv_kosul TYPE string.

  CREATE OBJECT class_a
  EXPORTING  CONST = 5.

  class_a->kosul(
  EXPORTING INPUT = p_dbmtr
  IMPORTING OUTPUT = lv_kosul ).

  WRITE : / lv_kosul.

 

1.PNG

2


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s