<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Open Cursor in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/open-cursor/m-p/3109062#M738162</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;see this example program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF count_line, &lt;/P&gt;&lt;P&gt;        carrid TYPE spfli-carrid, &lt;/P&gt;&lt;P&gt;        count  TYPE i, &lt;/P&gt;&lt;P&gt;      END OF count_line, &lt;/P&gt;&lt;P&gt;      spfli_tab TYPE TABLE OF spfli. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: dbcur1 TYPE cursor, &lt;/P&gt;&lt;P&gt;      dbcur2 TYPE cursor. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OPEN CURSOR dbcur1 FOR &lt;/P&gt;&lt;P&gt;  SELECT carrid count(*) AS count &lt;/P&gt;&lt;P&gt;         FROM spfli &lt;/P&gt;&lt;P&gt;         GROUP BY carrid &lt;/P&gt;&lt;P&gt;         ORDER BY carrid. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OPEN CURSOR dbcur2 FOR &lt;/P&gt;&lt;P&gt;  SELECT * &lt;/P&gt;&lt;P&gt;         FROM spfli &lt;/P&gt;&lt;P&gt;         ORDER BY carrid. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DO. &lt;/P&gt;&lt;P&gt;  FETCH NEXT CURSOR dbcur1 INTO count_line. &lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0. &lt;/P&gt;&lt;P&gt;    EXIT. &lt;/P&gt;&lt;P&gt;  ENDIF. &lt;/P&gt;&lt;P&gt;  FETCH NEXT CURSOR dbcur2 &lt;/P&gt;&lt;P&gt;    INTO TABLE spfli_tab PACKAGE SIZE count_line-count. &lt;/P&gt;&lt;P&gt;ENDDO. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLOSE CURSOR: dbcur1, &lt;/P&gt;&lt;P&gt;              dbcur2.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 23 Nov 2007 09:40:54 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-11-23T09:40:54Z</dc:date>
    <item>
      <title>Open Cursor</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/open-cursor/m-p/3109061#M738161</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Guys ,&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt;      Iam trying to open two cursors at a time , and below i have attached the code the way iam trying to open the cursor and fetch the records from the cursor .&lt;/P&gt;&lt;P&gt;but iam getting a dump like &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please advice me what is the actual problem .&lt;/P&gt;&lt;P&gt;An exception occurred that is explained in detail below.&lt;/P&gt;&lt;P&gt;The exception, which is assigned to class 'CX_SY_OPEN_SQL_DB', was not caught&lt;/P&gt;&lt;P&gt; in&lt;/P&gt;&lt;P&gt;procedure "Z01_FBIWI_AR_EXTRACTOR" "(FUNCTION)", nor was it propagated by a&lt;/P&gt;&lt;P&gt; RAISING clause.&lt;/P&gt;&lt;P&gt;Since the caller of the procedure could not have anticipated that the&lt;/P&gt;&lt;P&gt;exception would occur, the current program is terminated.&lt;/P&gt;&lt;P&gt;The reason for the exception is:&lt;/P&gt;&lt;P&gt;The cursor used in a FETCH or CLOSE CURSOR command is&lt;/P&gt;&lt;P&gt;not open. It was either not yet open or has already&lt;/P&gt;&lt;P&gt;been closed. You can close the cursor explicitly with&lt;/P&gt;&lt;P&gt;the CLOSE CURSOR command, implicitly with the COMMIT WORK command,&lt;/P&gt;&lt;P&gt;or with a screen change.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And below i have attached the code .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**DATA DECLERATION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Maximum number of lines for DB table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;counter&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           S_COUNTER_DATAPAKID LIKE SY-TABIX,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Cursor&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           S_CURSOR TYPE CURSOR,&lt;/P&gt;&lt;P&gt;           S_CURSOR1 TYPE CURSOR.&lt;/P&gt;&lt;P&gt;  DATA : FLAG_BSID TYPE BOOLEAN VALUE ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Initialization mode (first call by SAPI) or data transfer mode&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(following calls) ?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF I_INITFLAG = SBIWA_C_FLAG_ON.&lt;/P&gt;&lt;P&gt;    APPEND LINES OF I_T_SELECT TO S_S_IF-T_SELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fill parameter buffer for data extraction calls&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    S_S_IF-REQUNR    = I_REQUNR.&lt;/P&gt;&lt;P&gt;    S_S_IF-DSOURCE = I_DSOURCE.&lt;/P&gt;&lt;P&gt;    S_S_IF-MAXSIZE   = I_MAXSIZE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fill field list table for an optimized select statement&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(in case that there is no 1:1 relation between InfoSource fields&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;and database table fields this may be far from beeing trivial)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.           "Initialization mode or data extraction ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data transfer: First Call      OPEN CURSOR + FETCH&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               Following Calls FETCH only&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;First data package -&amp;gt; OPEN CURSOR&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF S_COUNTER_DATAPAKID = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fill range tables BW will only pass down simple selection criteria&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'BUKRS'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO R_BUKRS.&lt;/P&gt;&lt;P&gt;        APPEND R_BUKRS.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'KUNNR'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO R_KUNNR.&lt;/P&gt;&lt;P&gt;        APPEND R_KUNNR.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'GJAHR'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO R_GJAHR.&lt;/P&gt;&lt;P&gt;        APPEND R_GJAHR.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CPUDT'.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING L_S_SELECT TO R_CPUDT.&lt;/P&gt;&lt;P&gt;        APPEND R_CPUDT.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Determine number of database records to be read per FETCH statement&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;from input parameter I_MAXSIZE. If there is a one to one relation&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;between DataSource table lines and database entries, this is trivial.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;In other cases, it may be impossible and some estimated value has to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;be determined.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      OPEN CURSOR WITH HOLD S_CURSOR FOR&lt;/P&gt;&lt;P&gt;            SELECT MANDT KUNNR WRBTR XREF3 BUKRS BELNR GJAHR BUZEI WAERS BLDAT&lt;/P&gt;&lt;P&gt;                   BUDAT BLART XBLNR SHKZG DMBTR GSBER ZFBDT ZLSCH ZUONR ZTERM&lt;/P&gt;&lt;P&gt;                   KIDNO XREF1 XREF2 SGTXT MABER HKONT PRCTR KOSTL AUFNR PROJK&lt;/P&gt;&lt;P&gt;                   VBUND&lt;/P&gt;&lt;P&gt;                    FROM BSID WHERE  BUKRS IN R_BUKRS AND KUNNR IN R_KUNNR AND&lt;/P&gt;&lt;P&gt;                                                      GJAHR IN R_GJAHR AND&lt;/P&gt;&lt;P&gt;                                                      CPUDT IN R_CPUDT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      OPEN CURSOR WITH HOLD S_CURSOR1 FOR&lt;/P&gt;&lt;P&gt;          SELECT MANDT KUNNR WRBTR XREF3 BUKRS BELNR GJAHR BUZEI WAERS BLDAT&lt;/P&gt;&lt;P&gt;                 BUDAT BLART XBLNR SHKZG DMBTR GSBER ZFBDT ZLSCH ZUONR ZTERM&lt;/P&gt;&lt;P&gt;                 KIDNO XREF1 XREF2 SGTXT MABER HKONT PRCTR KOSTL AUFNR PROJK&lt;/P&gt;&lt;P&gt;                 VBUND&lt;/P&gt;&lt;P&gt;                  FROM BSAD WHERE  BUKRS IN R_BUKRS AND KUNNR IN R_KUNNR AND&lt;/P&gt;&lt;P&gt;                                                    GJAHR IN R_GJAHR AND&lt;/P&gt;&lt;P&gt;                                                    CPUDT IN R_CPUDT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.               "First data package ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fetch records into interface table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    FETCH NEXT CURSOR S_CURSOR&lt;/P&gt;&lt;P&gt;               APPENDING CORRESPONDING FIELDS&lt;/P&gt;&lt;P&gt;               OF TABLE IT_BSID&lt;/P&gt;&lt;P&gt;               PACKAGE SIZE S_S_IF-MAXSIZE.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC EQ 0 .&lt;/P&gt;&lt;P&gt;      PERFORM FETCH_BSId12 TABLES E_T_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSE .&lt;/P&gt;&lt;P&gt;      CLOSE CURSOR S_CURSOR.&lt;/P&gt;&lt;P&gt;      FLAG_BSID = 'X'.&lt;/P&gt;&lt;P&gt;    ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    FETCH NEXT CURSOR S_CURSOR1&lt;/P&gt;&lt;P&gt;               APPENDING CORRESPONDING FIELDS&lt;/P&gt;&lt;P&gt;               OF TABLE IT_BSAD&lt;/P&gt;&lt;P&gt;               PACKAGE SIZE S_S_IF-MAXSIZE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC EQ 0 .&lt;/P&gt;&lt;P&gt;      PERFORM FETCH_BSAD12 TABLES E_T_DATA.&lt;/P&gt;&lt;P&gt;    ELSEIF FLAG_BSID EQ 'X'.&lt;/P&gt;&lt;P&gt;      CLOSE CURSOR S_CURSOR1.&lt;/P&gt;&lt;P&gt;      RAISE NO_MORE_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.                  "Initialization mode or data extraction ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFUNCTION.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Nov 2007 09:20:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/open-cursor/m-p/3109061#M738161</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-23T09:20:21Z</dc:date>
    </item>
    <item>
      <title>Re: Open Cursor</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/open-cursor/m-p/3109062#M738162</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;see this example program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF count_line, &lt;/P&gt;&lt;P&gt;        carrid TYPE spfli-carrid, &lt;/P&gt;&lt;P&gt;        count  TYPE i, &lt;/P&gt;&lt;P&gt;      END OF count_line, &lt;/P&gt;&lt;P&gt;      spfli_tab TYPE TABLE OF spfli. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: dbcur1 TYPE cursor, &lt;/P&gt;&lt;P&gt;      dbcur2 TYPE cursor. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OPEN CURSOR dbcur1 FOR &lt;/P&gt;&lt;P&gt;  SELECT carrid count(*) AS count &lt;/P&gt;&lt;P&gt;         FROM spfli &lt;/P&gt;&lt;P&gt;         GROUP BY carrid &lt;/P&gt;&lt;P&gt;         ORDER BY carrid. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OPEN CURSOR dbcur2 FOR &lt;/P&gt;&lt;P&gt;  SELECT * &lt;/P&gt;&lt;P&gt;         FROM spfli &lt;/P&gt;&lt;P&gt;         ORDER BY carrid. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DO. &lt;/P&gt;&lt;P&gt;  FETCH NEXT CURSOR dbcur1 INTO count_line. &lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0. &lt;/P&gt;&lt;P&gt;    EXIT. &lt;/P&gt;&lt;P&gt;  ENDIF. &lt;/P&gt;&lt;P&gt;  FETCH NEXT CURSOR dbcur2 &lt;/P&gt;&lt;P&gt;    INTO TABLE spfli_tab PACKAGE SIZE count_line-count. &lt;/P&gt;&lt;P&gt;ENDDO. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLOSE CURSOR: dbcur1, &lt;/P&gt;&lt;P&gt;              dbcur2.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Nov 2007 09:40:54 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/open-cursor/m-p/3109062#M738162</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-23T09:40:54Z</dc:date>
    </item>
  </channel>
</rss>

