Buka SQL & SQL asli di SAP ABAP

Daftar Isi:

Anonim
Tujuan dari tutorial ini bukan untuk mengajari Anda SQL atau konsep database, tetapi untuk memperkenalkan Anda pada keragaman SQL di ABAP

Dalam bahasa pemrograman ABAP / 4, ada dua jenis SQL yang digunakan.

  1. SQL ASLI
  2. BUKA SQL.
Open SQL memungkinkan Anda mengakses tabel database yang dideklarasikan dalam kamus ABAP terlepas dari platform database yang digunakan sistem R / 3.

SQL Native memungkinkan Anda menggunakan pernyataan SQL khusus database dalam program ABAP / 4. Ini berarti Anda dapat menggunakan tabel database yang tidak diatur oleh kamus ABAP, dan oleh karena itu mengintegrasikan data yang bukan merupakan bagian dari sistem R / 3.

Open SQL terdiri dari sekumpulan pernyataan ABAP yang melakukan operasi pada database pusat di sistem R / 3. Hasil operasi dan pesan kesalahan tidak bergantung pada sistem database yang digunakan. Open SQL dengan demikian menyediakan sintaks dan semantik yang seragam untuk semua sistem database yang didukung oleh SAP. Program ABAP yang hanya menggunakan pernyataan Open SQL akan bekerja di sistem R / 3 apa pun, terlepas dari sistem database yang digunakan. Pernyataan SQL terbuka hanya dapat berfungsi dengan tabel database yang telah dibuat di kamus ABAP.

Perintah SQL Terbuka Dasar

  • PILIH
  • MEMASUKKAN
  • MEMPERBARUI
  • MEMODIFIKASI
  • MENGHAPUS
  • OPEN CURSOR,? FETCH,? TUTUP CURSOR
Contoh
TABLES SBOOK.KURSOR TIPE DATA C,WA SEPERTI SBOOK.BUKA KURSOR C UNTUK PILIH * DARI SBOOK DI MANA CARRID = 'LH'DAN PERTIMBANGKAN = '0400'DAN FLDATE = '19950228'ORDER OLEH KUNCI UTAMA.MELAKUKAN.FETCH CURSOR C BERIKUTNYA KE WA.JIKA SY-SUBRC <> 0.TUTUP KURSOR C.KELUAR.BERAKHIR JIKA.TULIS: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-INVOICE.ENDDO.

Keluarkan daftar penumpang untuk penerbangan Lufthansa 0400 pada 28-02.1995:

Buka Kode Pengembalian SQL

Semua pernyataan Open SQL mengisi dua bidang sistem berikut dengan kode pengembalian.

SY-SUBRC

Setelah setiap pernyataan Open SQL, bidang sistem SY-SUBRC berisi nilai 0 jika operasi berhasil, nilai selain 0 jika tidak.

SY-DBCNT

Setelah pernyataan Open SQL, bidang sistem SY-DBCNT berisi jumlah baris database yang diproses.

SQL asli

Seperti yang telah disebutkan, Native SQL memungkinkan Anda menggunakan pernyataan SQL khusus database dalam program ABAP.

Untuk menggunakan pernyataan Native SQL, Anda harus mengawalinya dengan pernyataan EXEC SQL, dan mengikutinya dengan pernyataan ENDEXEC.

Sintaksis

JALANKAN SQL [PERFORMING 
].ENDEXEC.
Tidak ada titik setelah pernyataan SQL Asli. Selain itu, menggunakan koma terbalik (") atau tanda bintang (*) di awal baris dalam pernyataan SQL asli tidak memperkenalkan komentar seperti pada sintaks ABAP normal. Anda perlu mengetahui apakah nama tabel dan kolom adalah case- sensitif dalam database yang Anda pilih.

Dalam pernyataan SQL Native, data diangkut antara tabel database dan program ABAP menggunakan variabel host. Ini dideklarasikan dalam program ABAP, dan diawali dengan pernyataan SQL Native dengan titik dua (:). Anda dapat menggunakan struktur dasar sebagai variabel host. Secara khusus, struktur dalam klausa INTO diperlakukan seolah-olah semua bidangnya terdaftar secara individual.

Seperti di Open SQL, setelah pernyataan ENDEXEC, SY-DBCNT berisi jumlah baris yang diproses. Dalam hampir semua kasus, SY-SUBRC berisi nilai 0 setelah pernyataan ENDEXEC.

Buka SQL - Aturan Kinerja

Untuk meningkatkan kinerja SQL dan program ABAP, seseorang harus memperhatikan aturan berikut-

Pertahankan Set Hasil Kecil

  • Menggunakan klausa where
  • Jika hanya satu catatan yang diperlukan dari database, gunakan PILIH TUNGGAL bila memungkinkan.
Minimalkan Jumlah Data yang Ditransfer
  • Batasi jumlah baris
  • Jika hanya bidang tertentu yang diperlukan dari tabel, gunakan pernyataan SELECT INTO…
  • Batasi tidak ada kolom
  • Gunakan fungsi agregat
Minimalkan Jumlah Transfer Data
  • Hindari loop pilihan bersarang
  • Pilihan alternatif adalah dengan menggunakan pernyataan SELECT… FOR ALL ENTRIES. Pernyataan ini seringkali jauh lebih efisien daripada melakukan sejumlah besar pernyataan SELECT atau SELECT SINGLE selama LOOP tabel internal.
  • Gunakan tampilan kamus
  • Gunakan Gabungan di klausa FROM
  • Gunakan subkueri di klausa where
Minimalkan Search Overhead
  • Gunakan bidang indeks di klausa where
  • Saat mengakses database, selalu pastikan bahwa indeks yang digunakan benar.
Kurangi Beban Database
  • Buffering
  • Database logis
  • Hindari akses database berulang
Menggunakan Tabel Internal untuk Menyangga Catatan
  • Untuk menghindari mengeksekusi SELECT yang sama beberapa kali (dan karena itu memiliki pilihan duplikat), tabel internal tipe HASHED dapat digunakan untuk meningkatkan kinerja.