MANTIKSAL İFADELER
İçerikleri (değer, nesne, …) bir koşula göre kontrol eden ifadelerdir. İfadenin sonucu doğru veya yanlış olabilir. Koşul sonucu direkt olarak bir veri nesnesine atanamaz. Kullanılan ifadeler aşağıdadır.Karşılaştırma Operatörleri
Değerler arasında karşılaştırma yapmak için kullanılan mantıksal ifadelerdir. Kullanım şekli aşağıdaki gibidir.icerik1 karsilastirma_operatoru icerik2
Bütün veri tipleri için karşılaştırma operatörleri aşağıdaki tabloda verilmiştir.
Operatör | Kontrol | Tanım |
=, EQ | Equal Eşit | Karşılaştırılan iki değerin eşitliğini kontrol eder. |
<>, NE | Not Equal Eşit değil | Karşılaştırılan iki değerin eşit olmadığını kontrol eder. |
<, LT | Less Than Küçük | Birinci değerin, ikinci değerden küçük olup olmadığını kontrol eder. |
>, GT | Greater Than Büyük | Birinci değerin, ikinci değerden büyük olup olmadığını kontrol eder. |
<=, LE | Less Equal Küçük Eşit | Birinci değerin, ikinci değerden küçük veya eşit olup olmadığını kontrol eder. |
>=, GE | Greater Equal Büyük Eşit | Birinci değerin, ikinci değerden büyük veya eşit olup olmadığını kontrol eder. |
Karakter-benzeri veri nesneleri için karşılaştırma operatörleri aşağıdaki tabloda verilmiştir.
Operatör | Kontrol | Tanım |
CO | Contains Only İçeriyorsa | İlk veri nesnesindeki tüm karakterler, ikinci veri nesnesi içerisinde bulunuyor ise doğru olur. Küçük, büyük harf duyarlıdır. |
CN | Contains Not Only İçermiyorsa | İlk veri nesnesindeki tüm karakterler, ikinci veri nesnesi içerisinde bulunmuyor ise doğru olur. Küçük, büyük harf duyarlıdır. |
CA | Contains Any Karakter içeriyor ise | İkinci veri nesnesi karakterlerinden herhangi birisi, birinci veri nesnesi içerisinde bulunuyor ise doğru olur. Küçük, büyük harf duyarlıdır. |
NA | Contains Not Any Karakter içermiyor ise | İkinci veri nesnesi karakterlerinden herhangi birisi, birinci veri nesnesi içerisinde bulunmuyor ise doğru olur. Küçük, büyük harf duyarlıdır. |
CS | Contains String Dizi içeriyor ise | İlk veri nesnesi içerisinde, ikinci veri nesnesi bulunuyor ise doğru olur. Küçük, büyük harf duyarlı değildir. |
NS | Contains No String Dizi içeriyormiyor ise | İlk veri nesnesi içerisinde, ikinci veri nesnesi bulunmuyor ise doğru olur. Küçük, büyük harf duyarlı değildir. |
CP | Covers Pattern Şablon içeriyor mu | İlk veri nesnesi içerisinde, ikinci veri nesnesinde belirtilen joker karakterlere sahip kalıp bulunuyor ise doğru olur. Küçük, büyük harf duyarlı değildir. |
NP | No Pattern Şablon içermiyor mu | İlk veri nesnesi içerisinde, ikinci veri nesnesinde belirtilen joker karakterlere sahip kalıp bulunmuyor ise doğru olur. Küçük, büyük harf duyarlı değildir. |
Bayt benzeri nesneleri karşılaştırma için aşağıdaki operatörler kullanılır.
· BYTE-CO
· BYTE-CN
· BYTE-CA
· BYTE-NA
· BYTE-CS
· BYTE-NS
Bit deseni için karşılaştırma operatörleri
· O
· Z
· M
BETWEEN
Veri nesnesi değerinin belirtilen aralıkta olup olmadığı kontrolünü yapar.icerik [NOT] BETWEEN icerik1 AND icerik2
IS ASSIGNED
Alan sembolünün bir nesneye atanıp, atanmadığını kontrol eder.<fieldsymbols> IS [NOT] ASSIGNED
IS BOUND
Referansın değişkenin geçerli bir referans içerip içermediğini kontrol eder.referans IS [NOT] BOUND
IS INITIAL
Bir veri nesnesinin değerinin tanımlı olduğu tipteki başlangıç değerine sahip olup olmadığını kontrol eder. Bu değer DATA ifadesinde VALUE kelimesi kullanarak tanımlanan değer değildir.icerik IS [NOT] INITIAL
IS SUPPLIED
Bir prosedüre aktarılan parametrenin doluluğunu veya gerekliliğini kontrol eder.para IS [NOT] SUPPLIED
IN
Veri nesnesinin değeri seçim tablosundaki değerler veya aralıklarda mı kontrolunu yapar.icerik [NOT] IN seçim_tablosu
MANTIKSAL İFADE ÖRNEKLERİ
1. İki sayısal değişkenin değerlerini karşılaştıran örnek.DATA: gv_degisken1 TYPE i VALUE 1,
gv_degisken2 TYPE i VALUE 2.
IF gv_degisken1 <> gv_degisken2.
WRITE ‘Birinci değişken ikinci değişkene eşit değil!’.
ENDIF.
gv_degisken1 = 2.
IF gv_degisken1 = gv_degisken2.
WRITE / ‘Birinci değişken ikinci değişkene eşit.’.
ENDIF.
gv_degisken1 = 3.
IF gv_degisken1 GT gv_degisken2.
WRITE / ‘Birinci değişken ikinci değişkenden büyük.’.
ENDIF.
2. İki d (tarih) tipine sahip değişkenin değerlerini karşılaştıran örnek.
DATA: gv_degisken1 TYPE d,
gv_degisken2 TYPE d.
gv_degisken1 = sy-datum.
gv_degisken2 = gv_degisken1 – 1.
IF gv_degisken1 <> gv_degisken2.
WRITE ‘Birinci değişken ikinci değişkene eşit değil!’.
ENDIF.
gv_degisken2 = sy-datum.
IF gv_degisken1 = gv_degisken2.
WRITE / ‘Birinci değişken ikinci değişkene eşit.’.
ENDIF.
gv_degisken1 = gv_degisken1 + 1.
IF gv_degisken1 GT gv_degisken2.
WRITE / ‘Birinci değişken ikinci değişkenden büyük.’.
ENDIF.
3. Karakter-benzeri veri tipleri için karşılaştırma operatörü kullanımını gösteren örnek.
DATA: gv_degisken1 TYPE c LENGTH 50,
gv_degisken2 TYPE c LENGTH 50.
gv_degisken1 = ‘bmik’.
gv_degisken2 = ‘Değerler bu metin içerisinde kontrol edilecek.’.
IF gv_degisken1 CO gv_degisken2.
WRITE: ‘CO: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: ‘CO: Koşul yanlış.’, 30 sy-fdpos.
ENDIF.
IF gv_degisken1 CN gv_degisken2.
WRITE: / ‘CN: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: / ‘CN: Koşul yanlış.’, 30 sy-fdpos.
ENDIF.
SKIP.
gv_degisken1 = ‘Değerler bu metin içerisinde kontrol edilecek.’.
gv_degisken2 = ‘bmik’.
IF gv_degisken1 CA gv_degisken2.
WRITE: / ‘CA: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: / ‘CA: Koşul yanlış.’, 30 sy-fdpos.
ENDIF.
IF gv_degisken1 NA gv_degisken2.
WRITE: / ‘NA: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: / ‘NA: Koşul yanlış.’, 30 sy-fdpos.
ENDIF.
SKIP.
gv_degisken1 = ‘Değerler bu metin içerisinde kontrol edilecek.’.
gv_degisken2 = ‘tONT’.
IF gv_degisken1 CS gv_degisken2.
WRITE: / ‘CS: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: / ‘CS: Koşul yanlış.’, 30 sy-fdpos.
ENDIF.
IF gv_degisken1 NS gv_degisken2.
WRITE: / ‘NS: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: / ‘NS: Koşul yanlış.’, 30 sy-fdpos.
ENDIF.
gv_degisken1 = ‘Değerler bu metin içerisinde kontrol edilecek.’.
gv_degisken2 = ‘ONTR’.
IF gv_degisken1 CS gv_degisken2.
WRITE: / ‘CS: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: / ‘CS: Koşul yanlış.’, 30 sy-fdpos..
ENDIF.
IF gv_degisken1 NS gv_degisken2.
WRITE: / ‘NS: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: / ‘NS: Koşul yanlış.’, 30 sy-fdpos.
ENDIF.
SKIP.
gv_degisken2 = ‘*EK.’.
IF gv_degisken1 CP gv_degisken2.
WRITE: / ‘CP: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: / ‘CP: Koşul yanlış.’, 30 sy-fdpos.
ENDIF.
IF gv_degisken1 NP gv_degisken2.
WRITE: / ‘NP: Koşul doğru.’, ‘Pozisyon’, 30 sy-fdpos.
ELSE.
WRITE: / ‘NP: Koşul yanlış.’, 30 sy-fdpos.
ENDIF.
4. BETWEEN mantıksal ifadesi ile sayısal değişkenin belirtilen aralıkta olup olmadığını kontrol eden örnek.
DATA: gv_degisken1 TYPE i VALUE 250,
gv_degisken2 TYPE i VALUE 100,
gv_degisken3 TYPE i VALUE 999.
IF gv_degisken1 BETWEEN gv_degisken2 AND gv_degisken3.
WRITE ‘Değişken aralık içerisinde.’.
ENDIF.
gv_degisken1 = 5000.
IF gv_degisken1 BETWEEN gv_degisken2 AND gv_degisken3.
WRITE / ‘Değişken aralık içerisinde.’.
ELSE.
WRITE / ‘Değişken aralık içerisinde değil!’.
ENDIF.
5. Alan sembolüne değer atanıp atanmadığını IS ASSIGNED mantıksal ifadesi ile kontrol eden örnek.
DATA gv_degisken1 TYPE c LENGTH 40.
FIELD-SYMBOLS <fs1> TYPE c.
gv_degisken1 = ‘Alan sembolüne atanan metin.’.
IF <fs1> IS NOT ASSIGNED.
WRITE ‘<fs1> alan sembolüne değer ataması yapılıyor.’.
ASSIGN gv_degisken1 TO <fs1>.
WRITE / <fs1>.
ENDIF.
6. Referans değişkenin geçerli bir referans içerip içermediğini IS BOUND mantıksal ifadesi ile kontrol eden örnek.
DATA: gs_dref TYPE REF TO data,
gt_spfli TYPE TABLE OF spfli.
IF gs_dref IS NOT BOUND.
WRITE ‘Referans geçerli bir değişene sahip değil!’.
ENDIF.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
READ TABLE gt_spfli REFERENCE INTO gs_dref INDEX 1.
IF gs_dref IS BOUND.
WRITE / ‘Referans geçerli bir değişene sahip.’.
ENDIF.
7. Farklı veri tiplerine sahip değişkenlerin başlangıç değerine sahip olup olmadığını INITIAL mantıksal ifadesi ile kontrol eden örnek.
DATA: gv_tamsayi TYPE i,
gv_metin TYPE c LENGTH 20,
gv_tarih TYPE d,
gv_saat TYPE t.
IF gv_tamsayi IS INITIAL.
WRITE ‘gv_tamsayı veri tipi başlangıç değerine sahip’.
ENDIF.
IF gv_metin IS INITIAL.
WRITE / ‘gv_metin veri tipi başlangıç değerine sahip’.
ENDIF.
IF gv_tarih IS INITIAL.
WRITE / ‘gv_tarih veri tipi başlangıç değerine sahip’.
ENDIF.
IF gv_saat IS INITIAL.
WRITE / ‘gv_saat veri tipi başlangıç değerine sahip’.
ENDIF.
SKIP.
gv_tamsayi = 1000.
gv_metin = ‘Örnek metin’.
gv_tarih = sy-datum.
gv_saat = sy-uzeit.
IF gv_tamsayi IS NOT INITIAL.
WRITE: / ‘gv_tamsayı değeri.’, gv_tamsayi.
ENDIF.
IF gv_metin IS NOT INITIAL.
WRITE: / ‘gv_metin değeri.’, gv_metin.
ENDIF.
IF gv_tarih IS NOT INITIAL.
WRITE: / ‘gv_tarih değeri.’, gv_tarih.
ENDIF.
IF gv_saat IS NOT INITIAL.
WRITE: / ‘gv_saat değeri.’, gv_saat.
ENDIF.
8. Sınıfa bağlı yöntemi önce parametre kullanmayarak, daha sonra parametre kullanarak çalıştıran ve parametre kontrolünü IS SUPPLIED mantıksal ifadesi ile kontrol eden örnek.
CLASS cls1 DEFINITION.
PUBLIC SECTION.
CLASS-METHODS veri_bul IMPORTING aranan_metin TYPE c OPTIONAL.
ENDCLASS.
DATA cls TYPE REF TO cls1.
CLASS cls1 IMPLEMENTATION.
METHOD veri_bul.
IF aranan_metin IS SUPPLIED.
WRITE / ‘Yöntem aranan metin değeri belirtilerek çağrıldı.’.
ELSE.
WRITE / ‘Yöntem aranan metin değeri belirtilmeden çağrıldı!’.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
CREATE OBJECT cls.
CALL METHOD cls->veri_bul.
CALL METHOD cls->veri_bul(
EXPORTING
aranan_metin = ‘metin’ ).
9. gv_carrid değişkenine atanan ‘AF’ isimli uçuşu tanımlayıcısının, seçim tablosuna girilen değer(ler)/aralık(lar) içerisinde kontrol örnek.
TABLES spfli.
DATA gv_carrid TYPE spfli-carrid value ‘AF’.
SELECT-OPTIONS: so_carri FOR spfli-carrid OBLIGATORY.
IF gv_carrid IN so_carri.
WRITE: / ‘Değişken değeri seçim tablosunda bulundu.’, gv_carrid.
ELSE.
WRITE: / ‘Değişken değeri seçim tablosunda bulunamadı!’, gv_carrid.
ENDIF.
***************************************************************
Serkan AKKAVAK
Bilgisayar Mühendisi
serkurumsal@yandex.com
SAP ve ABAP ile ilgili tüm sorun ve sorularınızı gönderebilirsiniz.
Social Plugin