SAP ABAP Inner Join KullanımıOkuma süresi 2 dakika

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.

Bu Yazıyı Beğendiniz mi?
I agree to have my personal information transfered to MailChimp ( more information )
Sizde 3.000 kişinin üzerinde bulunan abonelerimiz arasına katılın. Abone olarak yeni eklenen içeriklerimizden anında haberdar olursunuz
E-Mail adresiniz sapuzman.com dışında 3 tekil veya tüzel kişilikler ile paylaşılmayacaktır
Umut Demirci hakkında 172 makale
1986 yılında Kocaeli'nin Darıca ilçesinde dünyaya geldim. Bahçeşehir Üniversitesi, Matematik ve Bilgisayar Bilimleri bölümünü başarılı bir şekilde tamamladım. Üniversite yıllarında çeşitli sosyal sorumluluk projeleri ve bilişim projeleri içerisinde görev aldım. Üniversiteyi tamamladıktan hemen sonra 2010 yılında başladığım ERP sektöründe, SAP PMO (Proje Yönetim Ofisi) Takım Lideri olarak çalışmaya devam etmekteyim. Daha detaylı bilgi için Hakkımda menüsünü kullanabilirsiniz.

Kimler Neler Demiş?

avatar
  Subscribe  
Bildir