Nyissa meg az SQL-t és a natív SQL-t SAP ABAP

Ennek az oktatóanyagnak nem az a célja, hogy megtanítson SQL vagy adatbázis-koncepciók, hanem azért, hogy bemutassuk az ABAP SQL sokféleségét

Az ABAP/4 programozási nyelvben kétféle SQL használatos.

  1. NATÍV SQL
  2. NYITÁS SQL.

Az Open SQL lehetővé teszi az ABAP szótárban deklarált adatbázistáblák elérését az R/3 rendszer által használt adatbázis-platformtól függetlenül.

A natív SQL lehetővé teszi adatbázis-specifikus SQL utasítások használatát egy ABAP/4 programban. Ez azt jelenti, hogy használhat olyan adatbázistáblákat, amelyeket nem az ABAP szótár adminisztrál, és ezért olyan adatokat is integrálhat, amelyek nem részei az R/3 rendszernek.

Az Open SQL ABAP utasítások halmazából áll, amelyek az R/3 rendszer központi adatbázisán hajtanak végre műveleteket. A műveletek eredménye és az esetleges hibaüzenetek függetlenek a használt adatbázisrendszertől. Az Open SQL így egységes szintaxist és szemantikát biztosít az általa támogatott összes adatbázisrendszer számára SAP. A csak Open SQL utasításokat használó ABAP programok bármely R/3 rendszerben működni fognak, függetlenül a használt adatbázisrendszertől. A nyílt SQL utasítások csak az ABAP szótárban létrehozott adatbázistáblákkal működhetnek.

Alapvető nyílt SQL-parancsok

  • SELECT
  • INSERT
  • UPDATE
  • MÓDOSÍT
  • DELETE
  • KURSZOR NYITÁSA, KERESÉS, KURSZOR ZÁRÁSA

Példa

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.

Nyissa ki a Lufthansa 0400-as járatának utaslistáját 28-án:

Nyissa meg az SQL visszatérési kódokat

Minden Open SQL utasítás visszatérési kódokkal tölti ki a következő két rendszermezőt.

SY-SUBRC

Minden Open SQL utasítás után a SY-SUBRC rendszermező 0 értéket tartalmaz, ha a művelet sikeres volt, és 0-tól eltérő értéket, ha nem.

SY-DBCNT

Egy Open SQL utasítás után az SY-DBCNT rendszermező tartalmazza a feldolgozott adatbázissorok számát.

Natív SQL

Mint már említettük, a natív SQL lehetővé teszi adatbázis-specifikus SQL utasítások használatát egy ABAP program.

A natív SQL utasítás használatához meg kell előznie az EXEC SQL utasítást, és követnie kell az ENDEXEC utasítást.

Szintaxis

EXEC SQL [PERFORMING <form>].

  <Native SQL statement>

ENDEXEC.

A natív SQL utasítások után nincs pont. Továbbá, ha fordított vesszőt (“) vagy csillagot (*) használ a sor elején egy natív SQL-utasításban, az nem vezet megjegyzést, mint a normál ABAP szintaxisban. Tudnia kell, hogy a tábla- és mezőnevek megkülönböztetik-e a kis- és nagybetűket a kiválasztott helyen adatbázis.

A natív SQL utasításokban az adatok az adatbázistábla és az ABAP program között gazdaváltozók segítségével kerülnek átvitelre. Ezeket az ABAP program deklarálja, a natív SQL utasításban pedig kettőspont (:) előzi meg őket. Az elemi struktúrákat gazdagépváltozóként használhatja. Kivételesen az INTO záradékban lévő struktúrákat úgy kezeljük, mintha minden mezőjük külön-külön szerepelne.

Az Open SQL-hez hasonlóan az ENDEXEC utasítás után a SY-DBCNT tartalmazza a feldolgozott sorok számát. Az SY-SUBRC szinte minden esetben a 0 értéket tartalmazza az ENDEXEC utasítás után.

Nyissa meg az SQL-t – Teljesítményszabályok

Az SQL és az ABAP program teljesítményének javítása érdekében ügyelni kell a következő szabályokra:

Az eredménykészlet legyen kicsi

  • A where záradék használata
  • Ha csak egy rekord szükséges az adatbázisból, használja a SELECT SINGLE lehetőséget, amikor csak lehetséges.

Minimalizálja az átvitt adatok mennyiségét

  • Korlátozza a sorok számát
  • Ha egy táblázatból csak bizonyos mezőket kell kitölteni, használja a KIVÁLASZTÁST INTO … nyilatkozat
  • Korlátozza az oszlopok számát
  • Használjon összesített függvényeket

Minimalizálja az adatátvitelek számát

  • Kerülje a beágyazott kiválasztási ciklusokat
  • Egy másik lehetőség a SELECT .. FOR ALL ENTRIES utasítás használata. Ez az utasítás gyakran sokkal hatékonyabb lehet, mint nagyszámú SELECT vagy SELECT SINGLE utasítás végrehajtása egy belső tábla LOOP-ja során.
  • Szótárnézetek használata
  • Használja a Joins-t a FROM záradékban
  • Használjon segédlekérdezéseket a where záradékban

Csökkentse minimálisra a keresési költségeket

  • Használjon indexmezőket a where záradékban
  • Adatbázisokhoz való hozzáféréskor mindig győződjön meg arról, hogy a megfelelő indexet használja.

Csökkentse az adatbázis terhelését

  • BufferING
  • Logikai adatbázisok
  • Kerülje az ismételt adatbázis-hozzáférést

Belső táblázatok használata a Buffer Records

  • Annak elkerülése érdekében, hogy ugyanazt a KIVÁLASZTÁST többször végre lehessen hajtani (és ezért duplikált legyen a kijelölés), egy HASHED típusú belső tábla használható a teljesítmény javítására.