close cursor bringt Fehler

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
3 Beiträge Seite 1 von 1
3 Beiträge Seite 1 von 1

close cursor bringt Fehler

Beitrag von Wess (ForumUser / 16 / 1 / 0 ) » 11. Jan 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 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.


Re: close cursor bringt Fehler

Beitrag von a-dead-trousers (Top Expert / 3212 / 81 / 798 ) » 11. Jan 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

Re: close cursor bringt Fehler

Beitrag von Wess (ForumUser / 16 / 1 / 0 ) » 11. Jan 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

Seite 1 von 1

Aktuelle Forenbeiträge

Quellcodeänderung mehrerer Programme
vor 13 Minuten von Tron 11 / 307
BAPI_PO_CREATE1 und Einkaufsinfosatz
Gestern von SweetRuedi 1 / 55
Format xx oder xx-xx oder xx-xx-xx
vor 2 Tagen von black_adept 5 / 195
Salv Table - Layouts speichern
vor 2 Tagen von ewx 2 / 81
WCOCO: Gruppe für Betragsfelder 0S01
vor 3 Tagen von SAP_ENTWICKLER 1 / 41

Unbeantwortete Forenbeiträge

BAPI_PO_CREATE1 und Einkaufsinfosatz
Gestern von SweetRuedi 1 / 55
WCOCO: Gruppe für Betragsfelder 0S01
vor 3 Tagen von SAP_ENTWICKLER 1 / 41
CAS-Nr.: Chemical Abstracs Service
vor 5 Tagen von SAP_ENTWICKLER 1 / 76
Interaktives Skript, Rolle IC-Manager
vor einer Woche von erubadhron86 1 / 118
Wie findet man das Rahmenprogramm eines Infosets?
vor einer Woche von DeathAndPain 1 / 142