Open SQL & Native SQL in SAP ABAP

The goal of this tutorial is not to teach you SQL or database concepts but to  introduce you to the SQL diversity in ABAP

In ABAP/4 programming language, there are two types of SQL being used.

  1. NATIVE SQL
  2. OPEN SQL.
Open SQL allows you to access the database tables declared in the ABAP dictionary regardless of the database platform that the R/3 system is using.

Native SQL allows you to use database-specific SQL statements in an ABAP/4 program. This means that you can use database tables that are not administered by ABAP dictionary, and therefore integrate data that is not part of the R/3 system.

Open SQL consists of a set of ABAP statements that perform operations on the central database in the R/3 system. The results of the operations and any error messages are independent of the database system in use. Open SQL thus provides a uniform syntax and semantics for all of the database systems supported by SAP. ABAP programs that only use Open SQL statements will work in any R/3 system, regardless of the database system in use. Open SQL statements can only work with database tables that have been been created in the ABAP dictionary.

Basic Open SQL Commands

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.
 

Output the passenger list for the Lufthansa flight 0400 on 28-02.1995:

Open SQL Return Codes

All Open SQL statements fill the following two system fields with return codes.

SY-SUBRC

After every Open SQL statement, the system field SY-SUBRC contains the value 0 if the operation was successful, a value other than 0 if not.

SY-DBCNT

After an Open SQL statement, the system field SY-DBCNT contains the number of database lines processed.

Native SQL

As already mentioned, Native SQL allows you to use database-specific SQL statements in an ABAP program.

To use Native SQL statement, you must precede it with the EXEC SQL statement, and follow it with the ENDEXEC statement.

Syntax

EXEC SQL [PERFORMING <form>].

  <Native SQL statement>

ENDEXEC.
There is no period after Native SQL statements. Furthermore, using inverted commas (") or an asterisk (*) at the beginning of a line in a native SQL statement does not introduce a comment as it would in normal ABAP syntax. You need to know whether table and field names are case-sensitive in your chosen database.

In Native SQL statements, the data is transported between the database table and the ABAP program using host variables. These are declared in the ABAP program, and preceded in the Native SQL statement by a colon (:). You can use elementary structures as host variables. Exceptionally, structures in an INTO clause are treated as though all of their fields were listed individually.

As in Open SQL, after the ENDEXEC statement, SY-DBCNT contains the number of lines processed. In nearly all cases, SY-SUBRC contains the value 0 after the ENDEXEC statement.

Open SQL - Performance Rules

To improve the performance of the SQL and in turn of the ABAP program, one should take care of the following rules-

Keep the Result Set Small

Minimize the Amount of Data Transferred Minimize the Number of Data Transfers

Minimize the Search Overhead Reduce the Database Load Using Internal Tables to Buffer Records

 

YOU MIGHT LIKE: