Because I run into this problem as well.
SAP suggests to use the OPEN CURSOR x WITH HOLD and then use the function module DB_COMMIT to just do a commit on database level.
https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapopen_cursor.htm#!ABAP_ONE_ADD@1@
I'm not sure if the statement
INSERT x FROM ( SELECT * FROM y ).
should be used because of rollback area problems.