SAP OPEN CURSOR
Get Example source ABAP code based on a different SAP table
Standard SAP Help for OPEN_CURSOR OPEN CURSOR Short Reference >
• OPEN CURSOR ABAP Statement
• FOR SELECT OPEN CURSOR ABAP_BASIC_FORM_2
OPEN CURSOR [WITH HOLD] dbcur FOR > SELECT result>> FROM source>> [[FOR ALL ENTRIES IN itab] WHERE sql_cond>]> [GROUP BY group>] [HAVING group_cond>]> [ORDER BY sort_key>].>
... WITH HOLD>
What does it do? This statement opens a database cursor> for the selection defined after
FOR>, and associates a cursor variable dbcur> with this database cursor. The result set of the selection can be read with the statement FETCH>>. dbcur> expects a declared variable with the specific predefined data type cursor>>. A database cursor dbcur> that has already been opened cannot be opened again. A line of the result set is always assigned to an opened database cursor as a cursor position. After the OPEN CURSOR> statement, the database cursor is positioned in front of the first line of the result set.
FOR>, the syntax of a statement can be entered which contains all the additions of the normal SELECT>> SELECT> statement, except for INTO> and APPENDING>. In the addition result>>, the addition SINGLE>> also cannot be used after SELECT>.
Only a limited number of database cursors can be open at the same time. An open database cursor can be closed using the statement
CLOSE CURSOR>>. In addition, an open database cursor is closed for a database commit> or a database rollback>.
If a cursor variable
dbcur> of an open database cursor is assigned to another cursor variable or passed as a parameter, the latter is associated with the same database cursor at the same position. A cursor variable of an open database cursor can also be passed to procedures> that have been called externally, to enable the database cursor to be accessed from there.
Latest notes:We do not recommend that you assign cursor variables to each other, but rather set them exclusively using the statements
OPEN CURSOR> and CLOSE CURSOR>. If write accesses> are made on a database table for which a database cursor is open, the results set is database-specific and undefined. Avoid this kind of parallel access if possible.
• WITH HOLD OPEN CURSOR
What does it do? If the addition
WITH HOLD> is specified, the database cursor is not closed by a database commit executed using Native SQL>>.
Latest notes:The addition
WITH HOLD> is ignored by implicit database commits>, by commits produced by the statement COMMIT WORK>>, or by any rollbacks that always close the database cursor. A Native SQL> database commit can be performed using the DB_COMMIT>> function module, for example.
Wenn der Zusatz
WITH HOLD> angegeben ist, dürfen in der INTO
>-Klausel der Anweisung
LOB-Handle>s> erzeugt werden.
INTHINT Restriction for LOB Handles not yet relevant.
Return to menu