SQL ve Native SQL'i şurada açın: SAP ABAP
⚡ Akıllı Özet
Open SQL ve Native SQL'de SAP ABAP, bir ABAP programının veritabanına ulaşmasının iki yolunu açıklar. Open SQL, veritabanından bağımsız bir şekilde sözlük tabloları üzerinde çalışırken, Native SQL veritabanına özgü ifadeleri doğrudan platforma iletir.

Open SQL ve Native SQL nedir?
Bu eğitimin amacı size öğretmek değil SQL veya veritabanı kavramları değil, sizi ABAP'taki SQL çeşitliliğiyle tanıştırmak için.
ABAP/4 programlama dilinde iki tip SQL kullanılmaktadır.
- DOĞAL SQL
- SQL'i açın.
Açık SQL, R/3 sisteminin kullandığı veritabanı platformundan bağımsız olarak ABAP sözlüğünde belirtilen veritabanı tablolarına erişmenizi sağlar.
Yerel SQL, bir ABAP/4 programında veritabanına özgü SQL ifadelerini kullanmanıza olanak tanır. Bu, ABAP sözlüğü tarafından yönetilmeyen veritabanı tablolarını kullanabileceğiniz ve dolayısıyla R/3 sisteminin parçası olmayan verileri entegre edebileceğiniz anlamına gelir.
Open SQL, R/3 sistemindeki merkezi veritabanında işlemler gerçekleştiren bir dizi ABAP ifadesinden oluşur. İşlemlerin sonuçları ve herhangi bir hata mesajı, kullanılan veritabanı sisteminden bağımsızdır. Open SQL, bu nedenle R/XNUMX tarafından desteklenen tüm veritabanı sistemleri için tekdüze bir söz dizimi ve semantik sağlar. SAP. Sadece Open SQL ifadelerini kullanan ABAP programları, kullanılan veritabanı sisteminden bağımsız olarak herhangi bir R/3 sisteminde çalışacaktır. Open SQL ifadeleri yalnızca ABAP sözlüğünde oluşturulmuş veritabanı tablolarıyla çalışabilir.
OpenSQL neredeyse her programda varsayılan tercih olduğundan, komut seti öncelikle ele alınmıştır.
Temel Açık SQL Komutları
- SEÇİN
- INSERT
- GÜNCELLEME
- DEĞİŞTİRİN
- SİL
- İMLECİ AÇ, İMLECİ GETİR, İMLECİ KAPAT
Örnek E-posta
TABLES SBOOK. DATA C TYPE CURSOR, WA LIKE SBOOK. OPEN CURSOR C FOR SELECT * FROM SBOOK WHERE CARRID = 'LH ' AND CONNID = '0400' AND FLDATE = '19950228' ORDER BY PRIMARY KEY. DO. FETCH NEXT CURSOR C INTO WA. IF SY-SUBRC <> 0. CLOSE CURSOR C. EXIT. ENDIF. WRITE: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE, WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT, WA-INVOICE. ENDDO.
Lufthansa'nın 0400 sefer sayılı uçuşunun 28-02.1995 tarihli yolcu listesinin çıktısı:
Bu ifadelerin her biri, aşağıda açıklanan iki sistem alanı aracılığıyla sonucunu bildirir.
SQL'i Aç Geri Döndür Codes
Tüm Open SQL ifadeleri aşağıdaki iki sistem alanını dönüş kodlarıyla doldurur.
| Sistem alanı | anlam |
|---|---|
| SY-SUBRC | Her Open SQL deyiminden sonra, SY-SUBRC sistem alanı, işlem başarılıysa 0 değerini, başarısızsa 0 dışında bir değeri içerir. |
| SY-DBCNT | Bir Open SQL deyiminden sonra, SY-DBCNT sistem alanı işlenen veritabanı satırlarının sayısını içerir. |
💡 İpucu: İfadeyi çalıştırdıktan hemen sonra SY-SUBRC alanını mutlaka kontrol edin. Daha sonraki bir ABAP komutu bu alanı geçersiz kılar ve orijinal sonuç kaybolur.
Bir tablo ABAP Sözlüğü'nün dışında yer aldığında, Open SQL ona erişemez ve Native SQL devreye girer.
Yerel SQL
Daha önce de belirtildiği gibi, Yerel SQL, veritabanına özgü SQL ifadelerini bir ABAP programı.
Native SQL deyimini kullanmak için, bunun önüne EXEC SQL deyimi gelmeli ve onu ENDEXEC deyimi takip etmelidir.
Sözdizimi
EXEC SQL [PERFORMING <form>]. <Native SQL statement> ENDEXEC.
Yerel SQL ifadelerinden sonra nokta yoktur. Ayrıca, yerel bir SQL ifadesinde satırın başında ters virgül (") veya yıldız işareti (*) kullanmak, normal ABAP sözdiziminde olduğu gibi bir yorum sunmaz. Seçtiğiniz dilde tablo ve alan adlarının büyük/küçük harfe duyarlı olup olmadığını bilmeniz gerekir. veritabanı.
Yerel SQL ifadelerinde veriler, ana bilgisayar değişkenleri kullanılarak veritabanı tablosu ile ABAP programı arasında aktarılır. Bunlar ABAP programında bildirilir ve Native SQL deyiminde önüne iki nokta üst üste (:) gelir. Temel yapıları ana bilgisayar değişkenleri olarak kullanabilirsiniz. İstisnai durumlarda, INTO yan tümcesindeki yapılara sanki tüm alanları tek tek listelenmiş gibi davranılır.
Open SQL'de olduğu gibi, ENDEXEC deyiminden sonra SY-DBCNT işlenen satır sayısını içerir. Neredeyse tüm durumlarda SY-SUBRC, ENDEXEC deyiminden sonra 0 değerini içerir.
⚠️Uyarı: Yerel SQL, aşağıdaki işlemleri atlar. SAP Open SQL'in tablo arabelleği ve otomatik istemci işleme özelliği. İstemci alanı program tarafından sağlanmalıdır ve ifade yalnızca yazıldığı veritabanı platformunda çalışır.
OpenSQL ve Native SQL: Temel Farklar
Her iki arayüz de aynı veritabanına erişir, ancak taşınabilirlik, tamponlama ve erişebildikleri nesneler açısından farklılık gösterirler. Aşağıdaki tablo pratik farklılıkları özetlemektedir.
| Kriterler | SQL'i aç | Yerel SQL |
|---|---|---|
| Ele alınan tablolar | Yalnızca ABAP Sözlüğünde tanımlanan tablolar | Veritabanındaki herhangi bir tablo, sözlük dışındaki tablolar da dahil. |
| Taşınabilirlik | Desteklenen her veritabanında çalışır. SAP | Bir veritabanı platformunun sözdizimine bağlı |
| Sözdizimi | Kapanış noktası olan ABAP ifadeleri | EXEC SQL … ENDEXEC bloğu içine alınmış, kapanış noktası olmayan yerel ifadeler. |
| veri aktarımı | INTO aracılığıyla çalışma alanları ve dahili tablolar | İki nokta üst üste ile başlayan ana değişken |
| İstemci işleme ve tamponlama | Otomatik istemci yönetimi ve tablo tamponlama | Otomatik müşteri yönetimi yok ve SAP tampon atlanıyor |
| Tipik kullanım | R/3 uygulama verilerine günlük erişim | R/3 sisteminin parçası olmayan verilerin entegrasyonu |
Bu nedenle Open SQL varsayılan olarak kullanılır ve aşağıdaki kurallar hızını korur.
Açık SQL – Performans Kuralları
SQL ve dolayısıyla ABAP programının performansını iyileştirmek için aşağıdaki kurallara dikkat edilmelidir:
Sonuç Kümesini Küçük Tutun
- Where cümlesini kullanma
- Veritabanından yalnızca bir kayıt gerekiyorsa, mümkün olduğunda SELECT SINGLE'ı kullanın.
Aktarılan Veri Miktarını En Aza İndirin
- Satır sayısını kısıtla
- Bir tablodan yalnızca belirli alanların gerekli olması durumunda SEÇİM tuşunu kullanın. İÇİNE … bildirimi
- Sütun sayısını sınırla
- Toplama işlevlerini kullanma
Veri Aktarımı Sayısını En Aza İndirin
- İç içe seçme döngülerinden kaçının
- Alternatif bir seçenek de SELECT .. FOR ALL ENTRIES ifadesini kullanmaktır. Bu ifade genellikle dahili bir tablonun LOOP'u sırasında çok sayıda SELECT veya SELECT SINGLE ifadesini gerçekleştirmekten çok daha etkili olabilir.
- Sözlük görünümlerini kullanma
- FROM yan tümcesinde Birleştirmeleri kullanın
- Where cümlesinde alt sorguları kullanma
Arama Giderini En Aza İndirin
- Where yan tümcesinde dizin alanlarını kullanma
- Veritabanlarına erişirken her zaman doğru endeksin kullanıldığından emin olun.
Veritabanı Yükünü Azaltın
- Buffering
- Mantıksal veritabanları
- Tekrarlanan veritabanı erişiminden kaçının
Dahili Tabloları Kullanmak Buffer Kayıtlar
- Aynı SELECT sorgusunun birden fazla kez çalıştırılmasını (ve dolayısıyla yinelenen SELECT sorgularının oluşmasını) önlemek için, iç masa HASHED türündeki veriler performansı artırmak için kullanılabilir.
