Bu içerikte, ABAP’ta günlük geliştirme yaparken en sık ihtiyaç duyulan tüm IF operatörlerini bir araya getirdim. IF yapısı, veri kontrolü ve iş mantığını oluşturmanın temel taşlarından biridir ve doğru kullanımı kodun hem okunabilirliğini hem de kalitesini doğrudan etkiler. Bu yazıda operatörleri kategorilere ayırarak, sade örnekler ve gerçek kullanım senaryolarıyla birlikte tek bir yerde topladım.
1) Karşılaştırma Operatörleri
En temel kullanım:
IF a = b. " eşit
IF a <> b. " eşit değil
IF a > b.
IF a < b.
IF a >= b.
IF a <= b.
Eski stil (hala çalışır ama yeni syntax tercih edilir):
IF a EQ b.
IF a NE b.
IF a GT b.
IF a LT b.
IF a GE b.
IF a LE b.
Not: Yeni ABAP’ta
=kullanımı daha okunabilir olduğu için tercih edilir.
2) Mantıksal Operatörler
IF a = 1 AND b = 2.
IF a = 1 OR b = 2.
IF NOT a = 1.
Parantez kullanımı (çok önemli):
IF ( a = 1 OR a = 2 ) AND b = 3.
Parantez kullanmazsan beklenmeyen sonuçlar çıkabilir. Özellikle AND / OR birlikte kullanılıyorsa dikkat.
3) Boş (Initial) Kontrolü
IF lv_var IS INITIAL.
IF lv_var IS NOT INITIAL.
ABAP’ta
INITIAL, veri tipine göre farklı anlamlara gelir:
- String → boş
- Number → 0
- Date → 00000000
4) String / Pattern Operatörleri
IF lv_text CP 'A*'. " pattern (wildcard)
IF lv_text NP 'A*'. " not pattern
IF lv_text CS 'ABC'. " contains string
IF lv_text NS 'ABC'. " not contains
IF lv_text CO 'ABC'. " sadece bu karakterlerden oluşur
IF lv_text CN 'ABC'.
IF lv_text CA 'ABC'. " herhangi biri varsa
IF lv_text NA 'ABC'.
Kısa açıklama:
CP→ pattern (wildcard, * kullanılır)CS→ içinde geçiyor muCO→ sadece belirtilen karakterlerden mi oluşuyorCA→ en az bir karakter var mı
En çok kullanılanlar: CP ve CS
5) Aralık (Range) Kontrolü
IF lv_num BETWEEN 1 AND 10.
Özellikle tarih ve sayı kontrollerinde çok kullanılır.
6) Internal Table Kontrolü
Klasik yöntem:
READ TABLE lt_tab WITH KEY field = 'X'.
IF sy-subrc = 0.
Modern yöntem (önerilen):
IF line_exists( lt_tab[ field = 'X' ] ).
Modern kullanım daha kısa ve daha okunabilir.
7) Referans Kontrolü
IF lo_obj IS BOUND.
IF lo_obj IS NOT BOUND.
Object referansları için null kontrolü gibi düşünebilirsin.
8) Nesne Türü Kontrolü
IF lo_obj IS INSTANCE OF cl_gui_textedit.
OOP ABAP kullanıyorsan oldukça işine yarar.
9) Satır Sayısı ile Koşul
Gerçek hayatta çok kullanılır:
IF lines( lt_items ) = 0.
veya:
IF lines( lt_items ) > 10.
Alternatif olarak
IS INITIALda kullanılabilir amalines()daha net okunur.
10) Birleşik (Gerçek Hayat) Örnek
IF lv_supplier IS NOT INITIAL
AND lv_waers = 'EUR'
AND lines( lt_items ) < 5.
" işlem
ENDIF.
Bu tarz çoklu kontrol blokları ABAP’ta en sık kullanılan yapı.
11) Modern ABAP Kullanımı
IF line_exists( lt_po_group[
supplier = lv_supplier
waers = lv_waers ] ).
Hem kısa hem performanslı bir kullanım.
12) Küçük Ama Önemli Notlar
- IF içinde mümkün olduğunca basit koşullar yaz
- Çok karmaşık IF bloklarını parçalamak daha okunabilir olur
CHECKveCONTINUEbazı durumlarda IF yerine daha temiz çözüm sağlar
Özet
- Karşılaştırma:
= <> > < - Mantık:
AND OR NOT - Boş kontrol:
IS INITIAL - String kontrol:
CP, CS, CA - Tablo kontrol:
line_exists - Nesne kontrol:
IS BOUND
ABAP’ta IF yapısı basit görünür, ama doğru kullanıldığında kodun okunabilirliğini ve kalitesini ciddi şekilde artırır.
Abap’ta değişken isimlendirmeleri için aşağıdaki yazıya göz atabilirsiniz.
![]()