Mustafa HAMIT

ABAP IF Kullanımı: Tüm Operatörler ve Koşullar (Örneklerle Rehber)

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 mu
  • CO → sadece belirtilen karakterlerden mi oluşuyor
  • CA → 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 INITIAL da kullanılabilir ama lines() 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
  • CHECK ve CONTINUE bazı 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.

Link : https://www.mustafahamit.com/abap-degisken-isimlendirme-nasil-yapilir-clean-ve-maintainable-kod-rehberi/

Loading

Bir yanıt yazın