Öppna SQL & Native SQL i SAP ABAP

Innehållsförteckning:

Anonim
Målet med denna handledning är inte att lära dig SQL- eller databaskoncept utan att introducera dig till SQL-mångfalden i ABAP

I ABAP / 4 programmeringsspråk används två typer av SQL.

  1. NATIVE SQL
  2. ÖPPNA SQL.
Open SQL låter dig komma åt de databastabeller som deklarerats i ABAP-ordlistan oavsett databasplattform som R / 3-systemet använder.

Med Native SQL kan du använda databasspecifika SQL-satser i ett ABAP / 4-program. Det betyder att du kan använda databastabeller som inte administreras av ABAP-ordlistan och därför integrera data som inte ingår i R / 3-systemet.

Open SQL består av en uppsättning ABAP-satser som utför operationer på den centrala databasen i R / 3-systemet. Resultaten av operationerna och eventuella felmeddelanden är oberoende av det använda databassystemet. Open SQL ger alltså en enhetlig syntax och semantik för alla databassystem som stöds av SAP. ABAP-program som endast använder Open SQL-satser fungerar i alla R / 3-system, oavsett vilket databassystem som används. Öppna SQL-satser kan bara fungera med databastabeller som har skapats i ABAP-ordlistan.

Grundläggande öppna SQL-kommandon

  • VÄLJ
  • FÖRA IN
  • UPPDATERING
  • ÄNDRA
  • RADERA
  • ÖPPEN MARKNAD,? FETCH,? STÄNG Markör
Exempel
TABELLER SBOOK.DATA C TYPMARKER,WA LIKE SBOOK.ÖPPEN CURSOR C FÖR VÄLJ * FRÅN SBOOK VAR CARRID = 'LH'AND CONNID = '0400'OCH FLDATE = '19950228'BESTÄLLNING MED PRIMÄR NYCKEL.DO.HÄMTA NÄSTA PILARE C I WA.OM SY-SUBRC <> 0.STÄNG PÅGÅNG C.UTGÅNG.ENDIF.SKRIV: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-FAKTURA.AVSLUTA.

Ange passagerarlistan för Lufthansa-flyg 0400 den 28-02.1995:

Öppna SQL-returkoder

Alla öppna SQL-satser fyller följande två systemfält med returkoder.

SY-SUBRC

Efter varje Open SQL-sats innehåller systemfältet SY-SUBRC värdet 0 om operationen lyckades, ett annat värde än 0 om inte.

SY-DBCNT

Efter en Open SQL-sats innehåller systemfältet SY-DBCNT antalet databasrader som bearbetats.

Native SQL

Som redan nämnts låter Native SQL dig använda databasspecifika SQL-uttalanden i ett ABAP-program.

För att använda Native SQL-sats måste du gå före det med EXEC SQL-satsen och följa det med ENDEXEC-satsen.

Syntax

EXEC SQL [UTFÖRANDE 
].ENDEXEC.
Det finns ingen period efter Native SQL-uttalanden. Dessutom använder inte inverterade komma (") eller en asterisk (*) i början av en rad i en infödd SQL-sats inte en kommentar som i normal ABAP-syntax. Du måste veta om tabell- och fältnamn är fall- känslig i din valda databas.

I Native SQL-satser transporteras data mellan databastabellen och ABAP-programmet med värdvariabler. Dessa deklareras i ABAP-programmet och föregås i Native SQL-satsen av ett kolon (:). Du kan använda elementära strukturer som värdvariabler. Undantagsvis behandlas strukturer i en INTO-klausul som om alla deras fält var listade individuellt.

Som i Open SQL innehåller SY-DBCNT efter ENDEXEC-satsen antalet rader som behandlats. I nästan alla fall innehåller SY-SUBRC värdet 0 efter ENDEXEC-satsen.

Öppna SQL - Prestandaregler

För att förbättra prestandan för SQL och i sin tur ABAP-programmet bör man ta hand om följande regler-

Håll resultatuppsättningen liten

  • Använda var-klausulen
  • Om bara en post krävs från databasen, använd SELECT SINGLE när det är möjligt.
Minimera mängden överförd data
  • Begränsa antalet rader
  • Om bara vissa fält krävs från en tabell, använd SELECT INTO ... uttalandet
  • Begränsa antalet kolumner
  • Använd aggregerade funktioner
Minimera antalet dataöverföringar
  • Undvik kapslade utvalda slingor
  • Ett alternativ är att använda uttalandet SELECT… FOR ALL ENTRIES. Detta uttalande kan ofta vara mycket effektivare än att utföra ett stort antal SELECT- eller SELECT SINGLE-satser under en LOOP i en intern tabell.
  • Använd ordlistavyer
  • Använd Joins i FROM-klausulen
  • Använd underfrågor i var-klausulen
Minimera sökutgiften
  • Använd indexfält i var-satsen
  • När du öppnar databaser, se alltid till att rätt index används.
Minska databasbelastningen
  • Buffring
  • Logiska databaser
  • Undvik upprepad databasåtkomst
Använda interna tabeller för att buffra poster
  • För att undvika att köra samma SELECT flera gånger (och därför ha dubbla val) kan en intern tabell av typen HASHED användas för att förbättra prestandan.