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.

  • 🧭 Temel Ayrım: Open SQL, ABAP Sözlüğünde tanımlanan tablolara erişirken, Native SQL ise sözlüğün yönetmediği tablolara erişir.
  • 🧱 Taşınabilirlik Prensibi: OpenSQL, tek tip sözdizimi, anlambilim ve hata mesajları sağlar; bu nedenle bir program, OpenSQL tarafından desteklenen her veritabanında değişmeden çalışır. SAP.
  • ⌨️ Komut Seti: SELECT, INSERT, UPDATE, MODIFY, DELETE ve imleç ifadeleri, merkezi veritabanındaki tüm Open SQL işlemlerini kapsar.
  • 🔢 Dönüş Codes: SY-SUBRC, başarıyı 0 değeriyle bildirirken, SY-DBCNT işlenen veritabanı satırlarının sayısını bildirir.
  • 🔌 Yerel SQL Arayüzü: İfadeler EXEC SQL ve ENDEXEC arasına alınır, kapanış noktası içermez ve iki nokta üst üste ile başlayan ana değişkenler aracılığıyla veri alışverişi yapar.
  • ???? Performans Disiplini: Sonuç kümesini küçük tutun, alanları kısıtlayın, iç içe SELECT döngülerinden kaçının, indeks alanlarını kullanın ve kayıtları HASHED dahili bir tabloda tamponlayın.

Open SQL ve Native SQL'de SAP ABAP

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.

  1. DOĞAL SQL
  2. 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.

SSS

Genellikle hayır. Yerel SQL bunu atlar. SAP Tablo tamponu sayesinde, tamponlanmış bir Open SQL okuma işlemi genellikle daha hızlıdır. Yerel SQL, yalnızca Open SQL'in sunmadığı platforma özgü bir özelliğe ihtiyaç duyulduğunda avantaj sağlar.

Evet. Open SQL, istemciye bağımlı bir tablonun WHERE yan tümcesine geçerli istemciyi otomatik olarak ekler. Yerel SQL bunu yapmaz, bu nedenle programın yabancı istemci verilerini okumaktan kaçınmak için MANDT'yi kendisi sağlaması gerekir.

İç içe döngüler, dış tablodaki her kayıt için bir veritabanı çağrısı gönderir ve bu da ağ gidiş gelişlerini artırır. Birleştirme (JOIN), sözlük görünümü (dictionary view) veya SELECT … FOR ALL ENTRIES sorgusu aynı verileri tek bir çağrıda alır.

Evet. ABAP geliştirme araçlarındaki yapay zeka asistanları, iç içe SELECT döngülerini, eksik WHERE koşullarını ve kullanılmayan sütunları tespit eder ve ardından yeniden yazılmış bir ifade önerir. Önerinin yine de ST05 veya SAT işleminde çalışma zamanı kontrolünden geçmesi gerekir.

Yapay zeka tarayıcıları her EXEC SQL bloğunu işaretler, içindeki platforma özgü sözdizimini açıklar ve eşdeğer bir Open SQL ifadesi taslağı oluşturur. Geliştirici, sözlük tablolarının varlığını doğrular ve aktarımdan önce sonucu test eder.

Bu yazıyı şu şekilde özetleyin: