Merhabalar,
Bu yazımızda ABAP yazılım dilinde sıkça kullanılan Join işlemlerinden olan Inner Join işlemine değineceğiz.
Öncelikle Inner Join’in ne işe yaradığını ve nasıl kullanabileceğimizi anlatmak istiyorum.
Inner Join yapmak için join yapılan tablolarında tamamında join şartını sağlayan verilen bulunmalıdır. Herhangi bir join şartı sağlanmaz ise join bozulur ve işlem hata alarak sizlere bir sonuç döndürmez. Bu ne demek, halkalardan biri koptuğunda yani eşleştirilen değerler bir biri ile uyuşmadığı zaman sql cümlesi sizlere bir sonuç dönüşü yapamaz. Birden fazla tablonun inner join ile birbirine bağlandığını düşünür isek, bağlantının yani eşitliğin bozulduğu bir yerde sistem geri kalan join işlemlerini gerçekleştirmez ve sizlere hata döner.
Şimdi isterseniz sizlere inner join kullanımını gösterelim.
Yapacağımız inner join örneğinde iki ayrı tablo kullanacağız. Bunlar müşteri ve sipariş listesi tabloları olsun. Siparişi olan müşterileri kullanmak istiyor isek İnner Join kullanmamız gerekmektedir.
Çünkü her müşterinin sistemde bir siparişi olmayabilir ancak her siparişin mutlaka bir müşterisi vardır. Bundan dolayı sipariş ve müşteri tablolarını inner join ile eşleştirmemiz gerekmektedir.
VBAK : SD(Sipariş) Belgesi Başlık Verileri tablosu
KNA1 : Müşteri Ana Verisi tablosu
Öncelikle Join olmadan hem müşteri hem de sipariş ana tablolarımızı Internal Table olarak kullanalım.
Tablomuzda Müşteri No, Müşteri Adı, Sipariş No, Sipariş Tarihi ve Sipariş Türünü raporlayacağız.
DATA : BEGIN OF GT_DATA OCCURS 0,
KUNNR LIKE VBAK-KUNNR,
NAME1 LIKE KNA1-NAME1,
VBELN LIKE VBAK-VBELN,
ERDAT LIKE VBAK-ERDAT,
AUART LIKE VBAK-AUART,
END OF GT_DATA.
** Seçim Ekranında S_KUNNR adında müşteri numarası aralığı girme alanı olsun
SELECT * FROM KNA1 WHERE KUNNR IN S_KUNNR.
SELECT * FROM VBAK WHERE KUNNR EQ KNA1-KUNNR.
CLEAR GT_DATA.
MOVE-CORRESPONDING KNA1 TO GT_DATA.
MOVE-CORRESPONDING VBAK TO GT_DATA.
APPEND GT_DATA.
ENDSELECT.
ENDSELECT.
** SADECE SİPARİŞİ OLAN MÜŞTERİLERİ LİSTELEYEN INNER JOIN yöntemi.
SELECT A-KUNNR
A-NAME1
B-VBELN
B-ERDAT
B-AUART
INTO TABLE GT_DATA
FROM KNA1 AS A
INNER JOIN VBAK AS B
ON A-KUNNR EQ B-KUNNR
WHERE A-KUNNR IN S_KUNNR.
Bu kod yardımı ile, kullanıcıdan aldığımız müşteri değeri veya aralığı(bu yüzden IN koşulunu ekledik) KNA1 tablosunda ki müşterilere eşitleyip NAME1 alanını elde edip, akabinde KUNNR alanı ile VBAK tablosunda ki KUNNR alanına inner join yaparak bu müşterilere ait siparişlerin bilgileri almış oluyoruz.
Bir sonraki yazımızda görüşmek dileği ile.
Sosyal Medya Hesaplarımız
Bir yanıt bırakın