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 / 3220 / 81 / 800 ) » 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

Konstruktoren-Probleme.... gelöst
vor 22 Stunden von AdrianSchm 8 / 325
Workflow über Report starten
vor 22 Stunden von LostDarkness 2 / 73
Liste Angebote/ Aufträge nach ERNAM = sy-uname
Gestern von wreichelt 4 / 122
DOCVARIABLE in Worddokument setzen (OLE?)
Gestern von msfox 2 / 113
BAPI_PO_CREATE1 und Einkaufsinfosatz
Gestern von whaslbeck 2 / 155

Unbeantwortete Forenbeiträge

WCOCO: Gruppe für Betragsfelder 0S01
vor einer Woche von SAP_ENTWICKLER 1 / 95
CAS-Nr.: Chemical Abstracs Service
vor 3 Wochen von SAP_ENTWICKLER 1 / 124
Interaktives Skript, Rolle IC-Manager
vor 4 Wochen von erubadhron86 1 / 170
Wie findet man das Rahmenprogramm eines Infosets?
vor 4 Wochen von DeathAndPain 1 / 171