Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

DBIF_RSQL_INVALID_CURSOR Error after calling FM ENQUEUE_READ

Former Member
0 Likes
596

Hi experts,

I am having some trouble with a DBIF_RSQL_INVALID_CURSOR Error after calling FM ENQUEUE_READ inside a select-endselec statement.

When I erase the ENQUEUE_READ FM call the error dissapears, but i cannot undertand this because the select-endelect in in cdpos table and the enqueue_read i about EBAN.

Is there any way to restart the cursor or something like that after calling the FM??

Someone has some clue about this?

Thanks,

Artur.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
552

Hi Artur,

I think the problem is that the enqueue function has to communicate with the enqueue service (potentially located on a different application server) and thus probably triggers an [implicit commit|http://help.sap.com/saphelp_nw04/helpdata/en/41/7af4bca79e11d1950f0000e82de14a/frameset.htm].

Instead of using SELECT-ENDSELECT you could first read all the data into an internal table and then process them (i.e. SELECT INTO TABLE and then LOOP AT). This might also be better from a performance perspective, because it reduces the overhead of communication with the database (though you will use up some more memory). Another alternative might be to try using the [OPEN CURSOR WITH HOLD|http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3b23358411d1829f0000e829fbfe/frameset.htm] statement instead of your SELECT-ENDSELECT.

Cheers, harald

Hi Artur,

I think the problem is that the enqueue function has to communicate with the enqueue service (potentially located on a different application server) and thus probably triggers an [implicit commit|http://help.sap.com/saphelp_nw04/helpdata/en/41/7af4bca79e11d1950f0000e82de14a/frameset.htm].

Instead of using SELECT-ENDSELECT you could first read all the data into an internal table and then process them (i.e. SELECT INTO TABLE and then LOOP AT). This might also be better from a performance perspective, because it reduces the overhead of communication with the database (though you will use up some more memory). Another alternative might be to try using the [OPEN CURSOR WITH HOLD|http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3b23358411d1829f0000e829fbfe/frameset.htm] statement instead of your SELECT-ENDSELECT.

Cheers, harald

2 REPLIES 2
Read only

Former Member
0 Likes
553

Hi Artur,

I think the problem is that the enqueue function has to communicate with the enqueue service (potentially located on a different application server) and thus probably triggers an [implicit commit|http://help.sap.com/saphelp_nw04/helpdata/en/41/7af4bca79e11d1950f0000e82de14a/frameset.htm].

Instead of using SELECT-ENDSELECT you could first read all the data into an internal table and then process them (i.e. SELECT INTO TABLE and then LOOP AT). This might also be better from a performance perspective, because it reduces the overhead of communication with the database (though you will use up some more memory). Another alternative might be to try using the [OPEN CURSOR WITH HOLD|http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3b23358411d1829f0000e829fbfe/frameset.htm] statement instead of your SELECT-ENDSELECT.

Cheers, harald

Read only

0 Likes
552

Ok thanks!

(I am trying to close the thread but i am recieving error messages by internet explorer, i''ll ltry later)

Edited by: Artur Rodriguez Coma on Mar 18, 2010 9:28 AM