Open SQL in Real Interfaces, Reports and OData Services
Learn how Open SQL design changes depending on whether you build a report, interface or OData service.
Explanation
Open SQL usage changes depending on the object type. A report may fetch large data and display ALV output. An interface may process packages, validate records and call BAPIs. An OData service must usually support filters, paging and fast response time. The same SELECT pattern cannot be used everywhere. For OData, avoid returning huge datasets and respect filters, top/skip and key access. For background interfaces, use package processing and robust error handling. For reports, give selection-screen filters and avoid reading unnecessary details. A mature ABAP developer designs Open SQL around the consumer and runtime context.
Code example
SELECT vbeln, fkdat, kunag, netwr FROM vbrk WHERE kunag = @lv_customer AND fkdat BETWEEN @lv_from AND @lv_to ORDER BY fkdat DESCENDING INTO TABLE @DATA(lt_invoice) UP TO @lv_top ROWS.Real project scenario
An OData service initially returns all invoices and lets the frontend filter them. This causes slow response and timeout. The fix is to map frontend filters to Open SQL WHERE conditions and implement paging.
Common mistakes
- Using report-style SELECT in OData service. - Ignoring paging in APIs. - Returning huge datasets to frontend. - Not mapping filters to WHERE conditions.
Best practices
- Design SQL based on consumer type. - Use paging for OData/API scenarios. - Use package processing for background jobs. - Avoid huge response payloads.
Interview angle
This is a strong senior-level topic because it connects Open SQL with real design decisions in reports, interfaces and APIs.