Skip to main content

Module 17: Advanced Open SQL (HANA Optimized)

Advanced Open SQL enables powerful, expressive, and HANA-optimized database access directly from ABAP, while still maintaining database portability.

This module focuses on writing SQL that pushes work to the database, not the application server.


1. New Open SQL Syntax (7.4+)​

Modern Open SQL is expression-oriented, strict, and HANA-aware.

Key Improvements​

  • Mandatory host variables (@)
  • SQL expressions
  • Inline declarations
  • Subqueries
  • Case expressions
  • Strict syntax checks
Why New Open SQL Matters

It enables code pushdown while remaining DB-independent.


2. Host Variables (@)​

Host variables clearly separate ABAP variables from database fields.


Legacy (Implicit Host Variables)​

SELECT * FROM spfli
WHERE carrid = lv_carrid.

Modern (Explicit Host Variables)​

SELECT * FROM spfli
WHERE carrid = @lv_carrid
INTO TABLE @DATA(lt_spfli).
Clean ABAP Rule

Always use @ for host variables — it is mandatory in new syntax.

3. SQL Expressions​

SQL expressions allow calculations inside the SELECT statement.

Arithmetic Expression​

SELECT carrid,
price * seats AS revenue
FROM zflight
INTO TABLE @DATA(lt_result).

String Expression​

SELECT carrid,
CONCAT( carrid, connid ) AS flight_key
FROM spfli
INTO TABLE @DATA(lt_result).
Pushdown Principle

If the database can compute it, do not compute it in ABAP.

4. Subqueries​

Subqueries allow nested SELECTs inside SQL statements.

IN Subquery​

SELECT * FROM spfli
WHERE carrid IN (
SELECT carrid FROM scarr
WHERE currcode = 'EUR'
)
INTO TABLE @DATA(lt_spfli).

EXISTS Subquery​

SELECT * FROM scarr AS c
WHERE EXISTS (
SELECT * FROM spfli AS f
WHERE f~carrid = c~carrid
)
INTO TABLE @DATA(lt_scarr).
When to Use Subqueries
  • Complex filtering

  • Avoid multiple SELECTs

  • Improve readability

5. CASE Expressions​

CASE expressions allow conditional logic inside SQL.

Simple CASE​

SELECT carrid,
CASE currcode
WHEN 'EUR' THEN 'Europe'
WHEN 'USD' THEN 'USA'
ELSE 'Other'
END AS region
FROM scarr
INTO TABLE @DATA(lt_result).

Searched CASE​

SELECT carrid,
CASE
WHEN price > 1000 THEN 'High'
WHEN price BETWEEN 500 AND 1000 THEN 'Medium'
ELSE 'Low'
END AS price_category
FROM zflight
INTO TABLE @DATA(lt_result).
Advantage

CASE expressions reduce post-processing loops in ABAP.

6. Database Portability​

Open SQL ensures code runs on any SAP-supported database.

How Portability Is Preserved​

  • SAP abstracts database specifics

  • Unsupported SQL features are blocked

  • Same code runs on HANA and non-HANA DBs

Portability Trap

Using Native SQL breaks database portability.

Open SQL vs Native SQL​

AspectOpen SQLNative SQL
Portability✅❌
OptimizationSAP-managedDeveloper-managed
HANA Ready✅❌
UsageRecommendedRare cases only
Interview Rule

Always prefer Open SQL → CDS → AMDP in that order.

7. Performance Best Practices (HANA Optimized)​

Follow These Rules
  • Push calculations to DB

  • Use JOINs instead of nested SELECTs

  • Use CASE & SQL expressions

  • Reduce data transfer volume

  • Select only required fields

8. Common Mistakes​

Avoid These
  • Missing @ before host variables

  • Using SELECT * unnecessarily

  • Computing data in ABAP instead of SQL

  • Using Native SQL without justification

  • Writing HANA-specific SQL in Open SQL

9. Summary​

  • New Open SQL is explicit and strict

  • Host variables improve clarity

  • SQL expressions enable pushdown

  • Subqueries reduce multiple SELECTs

  • CASE expressions simplify logic

  • Open SQL preserves DB portability

10. Practice Exercises​

  • Rewrite a SELECT using host variables.

  • Move calculations from ABAP to SQL.

  • Use CASE expression to categorize data.

  • Replace nested SELECTs with subqueries.

  • Validate portability of your SQL.

11. What’s Next?​

➡️ Module 18: Code Pushdown Concept

Learning Tip

If you master Advanced Open SQL, CDS and AMDP will feel natural.