Otvori SQL i izvorni SQL u SAP ABAP

⚡ Pametni sažetak

Otvoreni SQL i izvorni SQL u SAP ABAP opisuje dva načina na koja ABAP program dolazi do baze podataka. Otvoreni SQL radi s tablicama rječnika na način neovisan o bazi podataka, dok Native SQL prosljeđuje naredbe specifične za bazu podataka izravno platformi.

  • 🧭 Osnovna razlika: Otvoreni SQL adresira tablice deklarirane u ABAP rječniku i izvorni SQL adresira tablice koje rječnik ne administrira.
  • 🧱 Načelo prenosivosti: Otvoreni SQL nudi jedinstvenu sintaksu, semantiku i poruke o pogreškama, tako da se program izvršava nepromijenjen na svakoj bazi podataka koju podržava SAP.
  • ⌨️ Skup naredbi: Naredbe SELECT, INSERT, UPDATE, MODIFY, DELETE i kursor pokrivaju svaku Open SQL operaciju na centralnoj bazi podataka.
  • 🔢 Povratak Codes: SY-SUBRC izvještava o uspjehu s vrijednošću 0, a SY-DBCNT izvještava o broju obrađenih redaka baze podataka.
  • 🔌 Izvorno SQL sučelje: Naredbe su zatvorene između EXEC SQL i ENDEXEC, nemaju završnu točku i razmjenjuju podatke putem varijabli hosta kojima prethodi dvotočka.
  • 🚀 Disciplina izvedbe: Skup rezultata neka bude mali, polja ograničite, izbjegavajte ugniježđene SELECT petlje, koristite indeksna polja i zapise pohranjujte u međuspremnik u HASHED internoj tablici.

Otvoreni SQL i izvorni SQL u SAP ABAP

Što su otvoreni SQL i izvorni SQL?

Cilj ovog vodiča nije da vas podučava SQL ili koncepte baza podataka, već da vas upoznamo s SQL raznolikošću u ABAP-u

U programskom jeziku ABAP/4 koriste se dvije vrste SQL-a.

  1. NATIVNI SQL
  2. OTVORI SQL.

Open SQL vam omogućuje pristup tablicama baze podataka deklariranim u ABAP rječniku bez obzira na platformu baze podataka koju sustav R/3 koristi.

Izvorni SQL vam omogućuje korištenje SQL naredbi specifičnih za bazu podataka u programu ABAP/4. To znači da možete koristiti tablice baze podataka koje ne administrira ABAP rječnik i stoga integrirati podatke koji nisu dio R/3 sustava.

Open SQL se sastoji od skupa ABAP naredbi koje izvode operacije na središnjoj bazi podataka u R/3 sustavu. Rezultati operacija i sve poruke o pogreškama neovisne su o sustavu baze podataka koji se koristi. Open SQL stoga pruža jedinstvenu sintaksu i semantiku za sve sustave baza podataka koje podržava SAP. ABAP programi koji koriste samo Open SQL naredbe radit će u bilo kojem R/3 sustavu, bez obzira na sustav baze podataka koji se koristi. Open SQL izjave mogu raditi samo s tablicama baze podataka koje su stvorene u ABAP rječniku.

Otvoreni SQL je zadani izbor u gotovo svakom programu, pa se njegov skup naredbi prvo obrađuje.

Osnovne Open SQL naredbe

  • SELECT
  • INSERT
  • UPDATE
  • IZMJENITI
  • DELETE
  • OTVORI POKAZIVAČ, DOHVATI, ZATVORI POKAZIVAČ

Primjer

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.

Ispis popisa putnika za let Lufthanse 0400 28-02.1995:

Svaka od ovih naredbi izvještava o svom rezultatu putem dva sistemska polja, opisana u nastavku.

Otvori SQL povrat Codes

Sve Open SQL izjave ispunjavaju sljedeća dva sistemska polja povratnim kodovima.

Sistemsko polje Značenje
SY-SUBRC Nakon svake Open SQL izjave, sistemsko polje SY-SUBRC sadrži vrijednost 0 ako je operacija bila uspješna, vrijednost koja nije 0 ako nije.
SY-DBCNT Nakon Open SQL naredbe, sistemsko polje SY-DBCNT sadrži broj obrađenih linija baze podataka.

💡 Savjet: Uvijek odmah nakon naredbe provjerite SY-SUBRC. Kasnija ABAP naredba prepisuje polje i izvorni rezultat se gubi.

Kada se tablica nalazi izvan ABAP rječnika, Open SQL ne može do nje doći, a Native SQL preuzima kontrolu.

Izvorni SQL

Kao što je već spomenuto, izvorni SQL vam omogućuje korištenje SQL naredbi specifičnih za bazu podataka u ABAP program.

Da biste koristili naredbu Native SQL, morate joj prethoditi naredbu EXEC SQL, a slijediti je naredbu ENDEXEC.

Sintaksa

EXEC SQL [PERFORMING <form>].

  <Native SQL statement>

ENDEXEC.

Nema točke nakon Native SQL naredbi. Nadalje, korištenje navodnih zareza (“) ili zvjezdice (*) na početku retka u nativnoj SQL izjavi ne uvodi komentar kao što bi to bilo u normalnoj ABAP sintaksi. Morate znati jesu li nazivi tablica i polja osjetljivi na velika i mala slova u vašem izboru baza podataka.

U izvornim SQL izjavama, podaci se prenose između tablice baze podataka i ABAP programa pomoću varijabli glavnog računala. Oni su deklarirani u ABAP programu, a ispred Native SQL izjave stoji dvotočka (:). Možete koristiti elementarne strukture kao varijable hosta. Iznimno, strukture u klauzuli INTO tretiraju se kao da su sva njihova polja pojedinačno navedena.

Kao u Open SQL-u, nakon naredbe ENDEXEC, SY-DBCNT sadrži broj obrađenih redaka. U gotovo svim slučajevima, SY-SUBRC sadrži vrijednost 0 nakon naredbe ENDEXEC.

⚠️ Upozorenje: Izvorni SQL zaobilazi SAP međuspremnik tablice i automatska obrada Open SQL-a od strane klijenta. Polje klijent mora navesti program, a naredba se izvršava samo na platformi baze podataka za koju je napisana.

Otvoreni SQL u odnosu na izvorni SQL: Ključne razlike

Oba sučelja dosežu istu bazu podataka, ali se razlikuju u prenosivosti, međuspremništvu i objektima koje mogu adresirati. Tablica u nastavku sažima praktične razlike.

Kriteriji Otvori SQL Izvorni SQL
Adresirane tablice Samo tablice deklarirane u ABAP rječniku Bilo koja tablica baze podataka, uključujući tablice izvan rječnika
Pokretnost Radi na svakoj bazi podataka koju podržava SAP Vezano za sintaksu jedne platforme baze podataka
Sintaksa ABAP izjave s razdobljem zatvaranja Izvorne naredbe zatvorene u EXEC SQL … ENDEXEC, bez završne točke
Prijenos podataka Radna područja i interne tablice putem INTO-a Varijable hosta kojima prethodi dvotočka
Obrada i međuspremništvo klijenata Automatsko rukovanje klijentima i međuspremnik tablice Nema automatske obrade klijenata i SAP međuspremnik je zaobiđen
Tipična upotreba Svakodnevni pristup podacima R/3 aplikacije Integracija podataka koji nisu dio R/3 sustava

Otvoreni SQL je stoga zadani, a pravila u nastavku održavaju brzinu.

Open SQL – Pravila izvedbe

Kako bi se poboljšala izvedba SQL-a, a time i ABAP programa, treba voditi računa o sljedećim pravilima-

Neka skup rezultata bude mali

  • Korištenje odredbe where
  • Ako je samo jedan zapis potreban iz baze podataka, koristite SELECT SINGLE kad god je to moguće.

Smanjite količinu prenesenih podataka

  • Ograničite broj redaka
  • Ako su iz tablice potrebna samo određena polja, upotrijebite SELECT INTO … izjava
  • Ograniči broj stupaca
  • Koristite agregatne funkcije

Smanjite broj prijenosa podataka

  • Izbjegavajte ugniježđene petlje odabira
  • Alternativna opcija je korištenje naredbe SELECT .. FOR ALL ENTRIES. Ova izjava često može biti puno učinkovitija od izvođenja velikog broja SELECT ili SELECT SINGLE izjava tijekom PETLJE interne tablice.
  • Koristite prikaze rječnika
  • Koristite spojeve u klauzuli FROM
  • Koristite podupit u klauzuli where

Smanjite troškove pretraživanja

  • Koristite polja indeksa u klauzuli where
  • Kada pristupate bazama podataka, uvijek provjerite koristi li se točan indeks.

Smanjite opterećenje baze podataka

  • Buffering.
  • Logičke baze podataka
  • Izbjegavajte ponavljani pristup bazi podataka

Korištenje internih tablica za Buffer Ploče

  • Kako bi se izbjeglo višestruko izvršavanje istog SELECT-a (i time dupliciranje odabira), interni stol tipa HASHED može se koristiti za poboljšanje performansi.

Pitanja i odgovori

Obično ne. Izvorni SQL preskače SAP međuspremnik tablice, pa je čitanje Open SQL-a iz međuspremnika često brže. Izvorni SQL je uspješniji samo kada je potrebna značajka specifična za platformu koju Open SQL ne nudi.

Da. Otvoreni SQL automatski dodaje trenutnog klijenta u klauzulu WHERE tablice ovisne o klijentu. Izvorni SQL to ne čini, pa program mora sam navesti MANDT kako bi izbjegao čitanje podataka stranih klijenata.

Ugniježđena petlja šalje jedan poziv bazi podataka po zapisu vanjske tablice, što množi kružna putovanja mreže. Spoj, prikaz rječnika ili SELECT ... ZA SVE UNOSE dohvaća iste podatke u jednom pozivu.

Da. AI asistenti u ABAP razvojnim alatima otkrivaju ugniježđene SELECT petlje, nedostajuće WHERE uvjete i nekorištene stupce, a zatim predlažu prepisanu naredbu. Prijedlog i dalje treba provjeru vremena izvođenja u transakciji ST05 ili SAT.

AI skeneri označavaju svaki EXEC SQL blok, objašnjavaju sintaksu specifičnu za platformu unutar njega i izrađuju ekvivalentnu Open SQL naredbu. Programer potvrđuje postojanje tablica rječnika i testira rezultat prije prijenosa.

Sažmite ovu objavu uz: