Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Processing External Data →  ABAP - Database Accesses →  Open SQL →  Open SQL - Streaming and Locators 

Open SQL - Streaming

Open SQL supports streaming for LOBs in database tables.

Other versions: 7.31 | 7.40 | 7.54

System Classes and System Interfaces for Reader and Writer Streams

The system classes for the various types of data streams are:

  • CL_ABAP_DB_C_READER for character-like reader streams. The data source is a CLOB.
  • CL_ABAP_DB_X_READER for binary reader streams. The data source is a BLOB.
  • CL_ABAP_DB_C_WRITER for character-like writer streams. The data sink is a CLOB.
  • CL_ABAP_DB_X_WRITER for binary writer streams. The data sink is a BLOB.

The special interfaces

  • IF_ABAP_DB_READER
  • IF_ABAP_DB_WRITER

are used to access the reader and writer streams independently of the stream type. For further resource-independent classes and interfaces, as well as for the hierarchy of the object types, see the figure and explanation under Streaming.

Important Methods

The methods for streaming in Open SQL are the same as for general streaming.

Data Sources and Data Sinks

Any LOBs declared in database tables can be considered as data sources or data sinks. The instances of the classes above are data streams joined to LOBs. These are LOB handles and implement the corresponding interfaces. Usage in Open SQL involves reference variables which point to the relevant LOB handles.

Creating Data Streams for LOBs

Reader Streams

A reader stream that is bound to anLOB (that is, an instance of the class CL_ABAP_DB_C_READER or CL_ABAP_DB_X_READER) can only be created if, in the INTO clause of the statement SELECT, a LOB from the results set is assigned to a reference variable for a reader stream.

Refer to SELECT - LOB Handles.

Writer Streams

A writer stream that is bound to an LOB (that is, an instance of the class CL_ABAP_DB_C_WRITER or CL_ABAP_DB_X_WRITER) can only be created if a reference variabe for a reader stream is specified as a source in the statements INSERT, UPDATE, or MODIFY.

See INSERT, UPDATE, MODIFY dbtab - LOB Handles.

Closing Data Streams for LOBs

Since the number of data streams open at one time is limited to 16, they should be closed as soon as possible using the CLOSE method. Regardless of this, reader streams are closed implicitly at the end of a SELECT loop and at the end of a database LUW. An open writer stream can be closed implicitly only by using a database rollback. Database commits for open writer streams, on the other hand, produce the runtime error COMMIT_STREAM_ERROR.