Skip to main content

Module 6: Open SQL Basics

Open SQL is SAP’s database-independent SQL interface used in ABAP programs to access database tables and views.
It ensures portability, security, and consistency across different database platforms.


1. What is Open SQL?​

Open SQL is a subset of SQL standardized by SAP.

Key Characteristics​

  • Database independent
  • Automatically optimized by SAP
  • Integrated with authorization checks
  • Works the same on all supported databases
Open SQL vs Native SQL

Open SQL should be used in 99% of cases.
Native SQL is database-specific and should be avoided unless absolutely necessary.


2. SELECT Statement – Basic Syntax​

Basic SELECT​

SELECT * FROM spfli
INTO TABLE @DATA(lt_spfli).

Selecting Specific Fields​

SELECT carrid, connid
FROM spfli
INTO TABLE @DATA(lt_flights).
Best Practice

Always select only the required fields, never use SELECT * in productive code.

3. WHERE Clause​

The WHERE clause filters records at the database level.

SELECT * FROM spfli
INTO TABLE @DATA(lt_spfli)
WHERE carrid = 'LH'.

Using Logical Operators:​

WHERE carrid = 'LH'
AND connid > '0400'.
Performance Rule

Filtering in ABAP after selecting data is inefficient. Always filter using WHERE in the SELECT.

4. ORDER BY Clause​

Sorts the result set at the database level.

SELECT * FROM spfli
INTO TABLE @DATA(lt_spfli)
ORDER BY carrid, connid.
ORDER BY vs SORT

ORDER BY → Database level

SORT → Application server level

5. GROUP BY Clause​

Used with aggregate functions.

Aggregate Functions​

COUNT( )

SUM( )

MIN( )

MAX( )

AVG( )

SELECT carrid, COUNT(*) AS flight_count
FROM spfli
INTO TABLE @DATA(lt_count)
GROUP BY carrid.
GROUP BY Rule

All non-aggregated fields in SELECT must appear in GROUP BY.

6. INTO TABLE vs INTO CORRESPONDING FIELDS​

INTO TABLE​

SELECT * FROM spfli
INTO TABLE @DATA(lt_spfli).

INTO CORRESPONDING FIELDS OF TABLE​

SELECT carrid, connid
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_flights).
When to Use CORRESPONDING

Use INTO CORRESPONDING when field names match but structures differ.

7. JOIN Basics​

7.1 INNER JOIN​

Returns records that exist in both tables.

SELECT a~carrid, a~connid, b~fldate
FROM spfli AS a
INNER JOIN sflight AS b
ON a~carrid = b~carrid
AND a~connid = b~connid
INTO TABLE @DATA(lt_result).

7.2 LEFT OUTER JOIN​

Returns all records from left table, even if no match exists in right table.

SELECT a~carrid, a~connid, b~fldate
FROM spfli AS a
LEFT JOIN sflight AS b
ON a~carrid = b~carrid
AND a~connid = b~connid
INTO TABLE @DATA(lt_result).
Join Best Practice

Prefer JOINs over nested SELECTs for better performance.

8. SELECT SINGLE vs SELECT UP TO 1 ROWS​

8.1 SELECT SINGLE​

  • Fetches one arbitrary matching record
  • Does not guarantee which record is returned unless full key is specified
SELECT SINGLE * FROM spfli
INTO @DATA(ls_spfli)
WHERE carrid = 'LH'.
Common Misunderstanding

SELECT SINGLE does not mean first record unless key is fully specified.

8.2 SELECT UP TO 1 ROWS​

  • Fetches one record
  • Can be combined with ORDER BY
SELECT * FROM spfli
INTO @DATA(ls_spfli)
WHERE carrid = 'LH'
ORDER BY connid
UP TO 1 ROWS.
ENDSELECT.
Correct Usage

Use UP TO 1 ROWS with ORDER BY when you need a specific record.

9. Performance Best Practices​

Follow These Rules
  • Avoid SELECT *

  • Use proper WHERE conditions

  • Prefer JOINs over nested SELECTs

  • Avoid SELECT inside loops

  • Use correct SELECT variant

10. Common Beginner Mistakes​

Avoid These
  • Using SELECT SINGLE without full key

  • Sorting large datasets in ABAP

  • Fetching unnecessary fields

  • Multiple SELECTs instead of JOIN

11. Summary​

  • Open SQL is database-independent

  • SELECT syntax is simple but powerful

  • WHERE, ORDER BY, GROUP BY optimize data retrieval

  • JOINs improve performance

  • SELECT variant choice is critical

12. Practice Exercises​

  • Select all flights for a specific airline.

  • Count flights per airline using GROUP BY.

  • Fetch latest flight using UP TO 1 ROWS.

  • Compare SELECT SINGLE vs UP TO 1 ROWS.

  • Replace nested SELECT with JOIN.

13. What’s Next?​

➡️ Module 7: Modularization Techniques

Learning Tip

Strong Open SQL knowledge is the foundation of HANA-optimized ABAP.