SQL ve Native SQL'i şurada açın SAP ABAP

Bu eğitimin amacı size öğretmek değil SQL veya veritabanı kavramları ama 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.

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ı:

SQL Dönüş Kodlarını Aç

Tüm Open SQL ifadeleri aşağıdaki iki sistem alanını dönüş kodlarıyla doldurur.

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.

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.

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'in birden çok kez yürütülmesini önlemek (ve dolayısıyla yinelenen seçimlere sahip olmak) için, performansı artırmak üzere HASHED türünde bir dahili tablo kullanılabilir.