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.
- NATÍV SQL
- 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.