{"id":2533,"date":"2020-02-25T02:54:27","date_gmt":"2020-02-25T02:54:27","guid":{"rendered":"https:\/\/www.se80.co.uk\/training-education\/?p=2533"},"modified":"2020-02-25T02:54:27","modified_gmt":"2020-02-25T02:54:27","slug":"sap-select-cursor-fetch","status":"publish","type":"post","link":"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/","title":{"rendered":"SAP Commit within ABAP Select Endselect using cursor fetch"},"content":{"rendered":"<p>Have you ever wanted to perform an ABAP Commit within ABAP Select Endselect statement. iF so you will have found that within a SELECT ENDSELECT you can not trigger an explicit commit otherwise you will get the DBIF_RSQL_INVALID_CURSOR error. <\/p>\n<p>The problem is if you do want to perform a commit every x number of records you need to exit the select..endselect do the commit and then somehow return to the record you left off at. The following example ABAP code allows you to do this using a cursor and a fetch statement.<\/p>\n<h2> ABAP cursor fetch code to commit within select end select<\/h2>\n<p>*&#038;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br \/>\n*&#038; Report  ZSELECT_CURSOR<br \/>\n*&#038;<br \/>\n*&#038;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br \/>\n*&#038;<br \/>\n*&#038;<br \/>\n*&#038;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*<br \/>\nREPORT  zselect_cursor.<\/p>\n<p>DATA: it_table TYPE STANDARD TABLE OF but000,<br \/>\n      wa_table LIKE LINE OF it_table.<\/p>\n<p>DATA: ld_cursor TYPE cursor.<\/p>\n<p>PARAMETER: test AS CHECKBOX.<\/p>\n<p>SELECT *<br \/>\n  FROM but000<br \/>\n  INTO wa_table.<\/p>\n<p>  &#8221; You can&#8217;t commit here within a select &#8230;endselect<\/p>\n<p>ENDSELECT.<\/p>\n<p>* Use OPEN cursor and fetch to be able to select records row by row<br \/>\n* or multiple rows at a time and perform a commit per fetch<br \/>\nOPEN CURSOR WITH HOLD ld_cursor FOR<\/p>\n<p>SELECT * FROM but000.<br \/>\nDO.<br \/>\n  FETCH NEXT CURSOR ld_cursor<br \/>\n  INTO TABLE it_table PACKAGE SIZE 1000.<br \/>\n  IF sy-subrc <> 0.<br \/>\n    EXIT.<br \/>\n  ENDIF.<\/p>\n<p>* Do any updated here<br \/>\n  &#8221;  LOOP AT it_table into wa_table.<br \/>\n  &#8221;  modify&#8230;<br \/>\n  &#8221;  ENDLOOP.<br \/>\n  &#8220;CALL FUNCTION &#8216;DB_COMMIT&#8217;.<br \/>\n  &#8220;COMMIT WORK.<\/p>\n<p>ENDDO.<\/p>\n<p>CLOSE CURSOR ld_cursor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Have you ever wanted to perform an ABAP Commit within ABAP Select Endselect statement. iF so you will have found that within a SELECT ENDSELECT you can not trigger an explicit commit otherwise you will get the DBIF_RSQL_INVALID_CURSOR error. The problem is if you do want to perform a commit every x number of records [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2536,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SAP Commit within ABAP Selection using cursor fetch<\/title>\n<meta name=\"description\" content=\"The SAP cursor fetch functionality within a select allows you to get a specific number of records at a time and commit after each fetch\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SAP Commit within ABAP Selection using cursor fetch\" \/>\n<meta property=\"og:description\" content=\"The SAP cursor fetch functionality within a select allows you to get a specific number of records at a time and commit after each fetch\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/\" \/>\n<meta property=\"og:site_name\" content=\"SAP Help, Training and Education\" \/>\n<meta property=\"article:published_time\" content=\"2020-02-25T02:54:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.se80.co.uk\/training-education\/wp-content\/uploads\/2020\/02\/commit-select.png\" \/>\n\t<meta property=\"og:image:width\" content=\"763\" \/>\n\t<meta property=\"og:image:height\" content=\"361\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"se80\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"se80\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/\",\"url\":\"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/\",\"name\":\"SAP Commit within ABAP Selection using cursor fetch\",\"isPartOf\":{\"@id\":\"https:\/\/www.se80.co.uk\/training-education\/#website\"},\"datePublished\":\"2020-02-25T02:54:27+00:00\",\"dateModified\":\"2020-02-25T02:54:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.se80.co.uk\/training-education\/#\/schema\/person\/ddc6a049c1b0790f62d70278be75e511\"},\"description\":\"The SAP cursor fetch functionality within a select allows you to get a specific number of records at a time and commit after each fetch\",\"breadcrumb\":{\"@id\":\"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.se80.co.uk\/training-education\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SAP Commit within ABAP Select Endselect using cursor fetch\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.se80.co.uk\/training-education\/#website\",\"url\":\"https:\/\/www.se80.co.uk\/training-education\/\",\"name\":\"SAP Help, Training and Education\",\"description\":\"Learn SAP\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.se80.co.uk\/training-education\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.se80.co.uk\/training-education\/#\/schema\/person\/ddc6a049c1b0790f62d70278be75e511\",\"name\":\"se80\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.se80.co.uk\/training-education\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3fd4e388f05bf3c763e46cd1f77afeb2?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3fd4e388f05bf3c763e46cd1f77afeb2?s=96&d=retro&r=g\",\"caption\":\"se80\"},\"url\":\"https:\/\/www.se80.co.uk\/training-education\/author\/se80\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SAP Commit within ABAP Selection using cursor fetch","description":"The SAP cursor fetch functionality within a select allows you to get a specific number of records at a time and commit after each fetch","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/","og_locale":"en_US","og_type":"article","og_title":"SAP Commit within ABAP Selection using cursor fetch","og_description":"The SAP cursor fetch functionality within a select allows you to get a specific number of records at a time and commit after each fetch","og_url":"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/","og_site_name":"SAP Help, Training and Education","article_published_time":"2020-02-25T02:54:27+00:00","og_image":[{"width":763,"height":361,"url":"https:\/\/www.se80.co.uk\/training-education\/wp-content\/uploads\/2020\/02\/commit-select.png","type":"image\/png"}],"author":"se80","twitter_card":"summary_large_image","twitter_misc":{"Written by":"se80","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/","url":"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/","name":"SAP Commit within ABAP Selection using cursor fetch","isPartOf":{"@id":"https:\/\/www.se80.co.uk\/training-education\/#website"},"datePublished":"2020-02-25T02:54:27+00:00","dateModified":"2020-02-25T02:54:27+00:00","author":{"@id":"https:\/\/www.se80.co.uk\/training-education\/#\/schema\/person\/ddc6a049c1b0790f62d70278be75e511"},"description":"The SAP cursor fetch functionality within a select allows you to get a specific number of records at a time and commit after each fetch","breadcrumb":{"@id":"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.se80.co.uk\/training-education\/sap-select-cursor-fetch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.se80.co.uk\/training-education\/"},{"@type":"ListItem","position":2,"name":"SAP Commit within ABAP Select Endselect using cursor fetch"}]},{"@type":"WebSite","@id":"https:\/\/www.se80.co.uk\/training-education\/#website","url":"https:\/\/www.se80.co.uk\/training-education\/","name":"SAP Help, Training and Education","description":"Learn SAP","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.se80.co.uk\/training-education\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.se80.co.uk\/training-education\/#\/schema\/person\/ddc6a049c1b0790f62d70278be75e511","name":"se80","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.se80.co.uk\/training-education\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3fd4e388f05bf3c763e46cd1f77afeb2?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3fd4e388f05bf3c763e46cd1f77afeb2?s=96&d=retro&r=g","caption":"se80"},"url":"https:\/\/www.se80.co.uk\/training-education\/author\/se80\/"}]}},"jetpack_featured_media_url":"https:\/\/www.se80.co.uk\/training-education\/wp-content\/uploads\/2020\/02\/commit-select.png","_links":{"self":[{"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/posts\/2533"}],"collection":[{"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/comments?post=2533"}],"version-history":[{"count":5,"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/posts\/2533\/revisions"}],"predecessor-version":[{"id":2539,"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/posts\/2533\/revisions\/2539"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/media\/2536"}],"wp:attachment":[{"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/media?parent=2533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/categories?post=2533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.se80.co.uk\/training-education\/wp-json\/wp\/v2\/tags?post=2533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}