close cursor bringt Fehler


Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Moderatoren: Jan, Steff

close cursor bringt Fehler

Beitragvon Wess » 11.01.2019, 10:39

Hallo zusammen,

ich bekomme Fehler beim close cursor obwohl es richtig geschrieben ist. kann mir jemand helfen.

Code: Alles auswählen
OPEN CURSOR WITH HOLD l_cursor ="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">FOR
     SELECT  * FROM (l_toaco-connection)
              CLIENT SPECIFIED
              WHERE mandt     IN so_mandt
                AND sap_object IN so_sapob
                AND object_id  IN so_ob_id
                AND archiv_id  IN so_ablag
                AND arc_doc_id IN so_docid
                AND ar_object  IN so_docar
                AND ar_date    IN so_ablgd
                AND del_date   IN so_deldt
                AND reserve    IN so_doctp.
...........
..........
..........
do.
FETCH NEXT CURSOR l_cursor
      APPENDING TABLE connections PACKAGE SIZE l_package_size.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
 LOOP AT connections ASSIGNING FIELD-SYMBOL(<lfs_records>).
      CALL FUNCTION 'ARCHIVOBJECT_STATUS'
        EXPORTING
          archiv_doc_id            = <lfs_records>-arc_doc_id
          archiv_id                = <lfs_records>-archiv_id
*         SIGN                     = ' '
*         DOC_TYPE                 = ' '
*         SIGNATURE                = 'X'
        IMPORTING
          archiv_object_status     = lc_rfcstatus
*         AR_DATE                  =
*         AR_TIME                  =
          document_type            = lc_docclass
        TABLES
          al_components            = it_components
        EXCEPTIONS
          error_archiv             = 1
          error_communicationtable = 2
          error_kernel             = 3
          OTHERS                   = 4.
endloop.
enddo.
 IF NOT l_toaco IS INITIAL.
    CLOSE CURSOR l_cursor.
  ENDIF.
 


genau beim close cursor bekomme ich das Fehler (Cursor bereits geschlossenen oder noch nicht geöffnet.)
IF NOT l_toaco IS INITIAL.
CLOSE CURSOR l_cursor.
ENDIF.

Danke im Voraus.
Wess
ForumUser
 
Beiträge: 11
Registriert: 05.11.2018, 10:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: close cursor bringt Fehler

Beitragvon a-dead-trousers » 11.01.2019, 11:49

Sorry, aber die ARCHIVOBJECT-Funktionsbausteine verursachen einen sog. impliziten Datenbank-Commit weil sie ja per HTTP-Request auf Daten vom Archivsystem "warten" müssen und das zerstört leider den Cursor.
Diese impliziten Datenbank-Commits werden immer dann ausgelöst wenn ein laufendes Programm auf Daten oder Usereingaben warten muss. Damit die Ressourcen des Applikationsservers in dieser Zeit nicht unnötig belegt werden, wird die Session daher "abgebaut" und in eine Art Standby versetzt. Dadurch wird der zuvor belegte Prozess für andere Benutzer zur Verwendung freigegeben. Damit bei diesem Schritt keine Daten verloren gehen, werden auch alle belegten DB-Ressourcen (z.B. direkte INSERT, UPDATE und DELETE ohne Beteiligung eines Verbuchungsbausteines) auf die Datenbank commited. Dieser Schritt zerstört auch einen DB Cursor.
Da SELECT ... PACKAGE SIZE intern auch mit einem Cursor arbeitet, wird das leider auch keine Lösung für dich sein.
Du wirst also in den sauren Apfel beißen müssen und alle Daten erst in den Speicher laden und dann einzeln gegen das Archiv prüfen müssen. Hohe Speicherbelastung inklusive, die du ja mit dem Cursor offensichtlich umgehen wolltest.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 3107
Registriert: 07.02.2011, 13:40
Dank erhalten: 767 mal
Ich bin: Entwickler/in

Re: close cursor bringt Fehler

Beitragvon Wess » 11.01.2019, 14:35

Vielen lieben Dank a-dead-trousers. Der Antwort hört sich sehr Profi an :D
Ja des wegen wollte ich hier fragen bevor ich in den sauren Apfel beiße. was ich machen möchte, ist alle Einträge von die 4 Connection Tabellen(TOA01, TOA02, TOA03, TOAHR ) lesen und überprüfen ob der Eintrag mehr als 1 Komponent hat, d.h ob der Eintrag verschiedene Reserve(PDF, TIFF, JPG....) hat. Falls ja möchte ich die Eintrag in andere Tabelle speichern. Die Funktion 'ARCHIVOBJECT_STATUS' hilft dafür, das Problem ist mit open und close Cursor....

Danke dir
Wess
ForumUser
 
Beiträge: 11
Registriert: 05.11.2018, 10:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in


Zurück zu ABAP Objects®

  Aktuelle Beiträge   
Umrechnung Stück in KG
jetzt von JHM 1 Antw.
gelöst Sel.Screen in Subscreen - VA06
vor 16 Stunden von bapimueller 2 Antw.
gelöst Prüfen Konfiguration Kundenauftrag gene Type
vor 22 Stunden von mfromg 0 Antw.
Auswertung Orders erhalt per Mail oder FAX oder beides
vor 16 Stunden von ewx 2 Antw.
SAP und Gamification
Gestern von ewx 1 Antw.

  Ähnliche Beiträge beta
Set Cursor
16.02.2012, 08:11 von a-dead-trousers 4 Antw.
CL_GUI_ALV_GRID -Cursor
10.04.2006, 07:34 von Kaiwalker 2 Antw.
ALV-Grid Cursor neu positionieren
20.09.2005, 19:19 von babap 5 Antw.
Cursor im ALV-Grid setzen
21.12.2005, 12:56 von Gast 4 Antw.
CL_GUI_HTML_VIEWER - Cursor setzen
24.02.2016, 07:45 von a-dead-trousers 3 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder