Buka SQL & SQL Asli di SAP ABAP

⚡ Ringkasan Cerdas

Open SQL dan Native SQL di SAP ABAP menjelaskan dua cara program ABAP mengakses basis data. Open SQL bekerja pada tabel kamus secara independen dari basis data, sedangkan Native SQL meneruskan pernyataan khusus basis data langsung ke platform.

  • 🧭 Perbedaan Inti: Open SQL menangani tabel yang dideklarasikan dalam Kamus ABAP, dan Native SQL menangani tabel yang tidak dikelola oleh kamus tersebut.
  • 🧱 Prinsip Portabilitas: Open SQL menyediakan sintaks, semantik, dan pesan kesalahan yang seragam, sehingga program dapat berjalan tanpa perubahan pada setiap basis data yang didukungnya. SAP.
  • ️ Kumpulan Perintah: Pernyataan SELECT, INSERT, UPDATE, MODIFY, DELETE, dan kursor mencakup setiap operasi Open SQL pada basis data utama.
  • 🔢 Pengembalian Codes: SY-SUBRC melaporkan keberhasilan dengan nilai 0, dan SY-DBCNT melaporkan jumlah baris basis data yang diproses.
  • 🔌 Antarmuka SQL Asli: Pernyataan diapit di antara EXEC SQL dan ENDEXEC, tidak memiliki titik penutup, dan bertukar data melalui variabel host yang diawali dengan titik dua.
  • 🚀 Disiplin Pertunjukan: Pertahankan ukuran set hasil yang kecil, batasi kolom, hindari perulangan SELECT bersarang, gunakan kolom indeks, dan simpan data dalam tabel internal yang di-HASH.

Open SQL dan Native SQL di SAP ABAP

Apa itu Open SQL dan Native SQL?

Tujuan dari tutorial ini bukan untuk mengajari Anda SQL atau konsep basis data, 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 Asli memungkinkan Anda menggunakan pernyataan SQL khusus database dalam program ABAP/4. Ini berarti Anda dapat menggunakan tabel database yang tidak dikelola 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 basis data pusat dalam sistem R/3. Hasil operasi dan pesan kesalahan apa pun bersifat independen dari sistem basis data yang digunakan. Dengan demikian, Open SQL menyediakan sintaksis dan semantik yang seragam untuk semua sistem basis data yang didukung oleh SAPProgram ABAP yang hanya menggunakan pernyataan Open SQL akan berfungsi di sistem R/3 mana pun, apa pun sistem basis data yang digunakan. Pernyataan Open SQL hanya dapat berfungsi dengan tabel basis data yang telah dibuat dalam kamus ABAP.

Open SQL adalah pilihan default di hampir setiap program, jadi kumpulan perintahnya dibahas terlebih dahulu.

Perintah Dasar SQL Terbuka

  • MEMILIH
  • MEMASUKKAN
  • UPDATE
  • MEMODIFIKASI
  • DELETE
  • BUKA KURSOR, FETCH, TUTUP KURSOR

Example

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.

Keluaran daftar penumpang Lufthansa penerbangan 0400 pada 28-02.1995:

Setiap pernyataan ini melaporkan hasilnya melalui dua bidang sistem, yang akan dijelaskan selanjutnya.

Buka SQL Kembali Codes

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

Bidang sistem Arti
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.

💡 Kiat: Selalu periksa SY-SUBRC segera setelah pernyataan tersebut. Perintah ABAP berikutnya akan menimpa field tersebut, dan hasil aslinya akan hilang.

Ketika sebuah tabel berada di luar Kamus ABAP, Open SQL tidak dapat mengaksesnya, dan Native SQL akan mengambil alih.

SQL asli

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

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

Sintaksis

EXEC SQL [PERFORMING <form>].

  <Native SQL statement>

ENDEXEC.

Tidak ada titik setelah pernyataan Native SQL. Selain itu, penggunaan koma terbalik (“) atau tanda bintang (*) di awal baris dalam pernyataan SQL asli tidak menimbulkan komentar seperti pada sintaks ABAP normal. Anda perlu mengetahui apakah nama tabel dan bidang peka huruf besar-kecil dalam pilihan Anda Database.

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

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

⚠️ Peringatan: SQL asli melewati SAP buffer tabel dan penanganan klien otomatis dari Open SQL. Bidang klien harus disediakan oleh program, dan pernyataan hanya berjalan pada platform basis data tempat pernyataan tersebut ditulis.

Open SQL vs Native SQL: Perbedaan Utama

Kedua antarmuka tersebut mengakses basis data yang sama, namun berbeda dalam hal portabilitas, buffering, dan objek yang dapat diakses. Tabel di bawah ini merangkum perbedaan praktisnya.

Kriteria Buka SQL SQL asli
Tabel yang dibahas Hanya tabel yang dideklarasikan dalam Kamus ABAP Semua tabel dalam basis data, termasuk tabel di luar kamus.
Portabilitas Berjalan di setiap basis data yang didukung oleh SAP Terikat pada sintaks satu platform basis data.
Sintaksis Pernyataan ABAP dengan periode penutup Pernyataan asli yang diapit dalam EXEC SQL … ENDEXEC, tanpa titik penutup.
transfer data Area kerja dan tabel internal melalui INTO Variabel host yang diawali dengan titik dua
Penanganan dan penyangga klien Penanganan klien otomatis dan buffering tabel Tidak ada penanganan klien otomatis, dan SAP buffer dilewati
Penggunaan khas Akses harian ke data aplikasi R/3 Integrasi data yang bukan bagian dari sistem R/3

Oleh karena itu, Open SQL menjadi pilihan default, dan aturan di bawah ini menjaga agar tetap cepat.

Buka SQL – Aturan Kinerja

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

Jaga agar Hasil Tetap Kecil

  • Menggunakan klausa Where
  • Jika hanya satu record yang diperlukan dari database, gunakan SELECT SINGLE bila memungkinkan.

Minimalkan Jumlah Data yang Ditransfer

  • Batasi jumlah baris
  • Jika hanya bidang tertentu yang diperlukan dari tabel, gunakan SELECT KE… pernyataan
  • Batasi jumlah kolom
  • Gunakan fungsi agregat

Minimalkan Jumlah Transfer Data

  • Hindari loop pemilihan yang bersarang
  • Pilihan alternatifnya adalah dengan menggunakan pernyataan SELECT .. FOR ALL ENTRIES. Pernyataan ini seringkali jauh lebih efisien daripada melakukan pernyataan SELECT atau SELECT SINGLE dalam jumlah besar selama LOOP tabel internal.
  • Gunakan tampilan kamus
  • Gunakan Gabung dalam klausa FROM
  • Gunakan subkueri di klausa Where

Minimalkan Overhead Pencarian

  • Gunakan bidang indeks di klausa Where
  • Saat mengakses database, selalu pastikan bahwa indeks yang digunakan benar.

Kurangi Beban Basis Data

  • Buffering
  • Basis data logis
  • Hindari akses database berulang-ulang

Menggunakan Tabel Internal untuk Buffer Arsip

  • Untuk menghindari eksekusi SELECT yang sama beberapa kali (dan karenanya memiliki SELECT duplikat), sebuah meja internal dengan tipe HASHED dapat digunakan untuk meningkatkan kinerja.

Pertanyaan Umum Demo Slot

Biasanya tidak. SQL bawaan melewatinya. SAP Buffer tabel, sehingga pembacaan Open SQL yang di-buffer seringkali lebih cepat. SQL asli hanya unggul ketika fitur khusus platform dibutuhkan yang tidak ditawarkan oleh Open SQL.

Ya. Open SQL secara otomatis menambahkan klien saat ini ke klausa WHERE pada tabel yang bergantung pada klien. SQL bawaan tidak melakukan hal itu, sehingga program harus menyediakan MANDT sendiri untuk menghindari pembacaan data klien asing.

Perulangan bersarang mengirimkan satu panggilan basis data per catatan tabel luar, yang melipatgandakan perjalanan bolak-balik jaringan. Sebuah join, tampilan kamus, atau SELECT … FOR ALL ENTRIES mengambil data yang sama dalam satu panggilan.

Ya. Asisten AI dalam alat pengembangan ABAP mendeteksi perulangan SELECT bersarang, kondisi WHERE yang hilang, dan kolom yang tidak digunakan, kemudian menyarankan pernyataan yang ditulis ulang. Saran tersebut masih memerlukan pemeriksaan saat runtime di transaksi ST05 atau SAT.

Pemindai AI menandai setiap blok EXEC SQL, menjelaskan sintaks khusus platform di dalamnya, dan menyusun pernyataan Open SQL yang setara. Seorang pengembang mengkonfirmasi keberadaan tabel kamus dan menguji hasilnya sebelum pengiriman.

Ringkaslah postingan ini dengan: