Close Dataset erst nach Programmende?

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Close Dataset erst nach Programmende?

Beitrag von LazyJones (ForumUser / 3 / 0 / 0 ) »
Hallo zusammen,

ich habe da ein merkwürdiges Problem und weiß leider nicht mehr weiter. Hintergrund: wir steigen von AIX/Oracle auf Windows/MSSQL um. Jetzt testen wir gerade alle Programme und mir ist da was aufgefallen.
Das Programm arbeitet 1-N Files in einem Ordner (Applikationsserver) ab und erstellt daraus BTC Mappen. Nach dem Einlesen einer Datei wird diese dann wieder mit Close Dataset geschlossen.
Nach dem Schließen wird ein Betriebssystemkommando "MOVE" abgesetzt, welches die Datei dann in einen Ordner mit den verarbeiteten Dateien verschiebt. Das OS Kommando wird über den FUBA: 'SXPG_CALL_SYSTEM' aufgerufen. Das klappt unter AIX auch alles einwandfrei.

Jetzt habe ich das MOVE Kommando umgesetzt über CMD /C MOVE... Klappt auch, wenn man das in der SM49 testet einwandfrei. Aber wenn das im Programm gemacht wird, kann man beim debuggen feststellen das der FUBA mit einem Error endet (Angeblich wird auf die Datei noch zugegriffen). Es scheint sich da auch nicht um eine Zeitliche Verzögerung zu handeln - sonst wäre ja im Debug genug zeit für das OS die Verbindung zum Programm (Close Dataset) zu trennen und dann würde es laufen. Aber die Verbindung bleibt wohl bestehen bis das ABAP Programm beendet ist.

Hat einer von euch schon mal so einen Fall gehabt? Wie ist das dann gelösst worden?

Für mich gibt es jetzt zwei Ideen mit der Sache um zu gehen:

1. Ich schreibe ein Programm welches aus einer Tabelle die zu verschiebenden Files liest und alle vierteltsunde guckt ob es was in der Tabelle gibt und dann die Dateien verschiebt...
2. Ich versuche nach dem Close Dataset die Verbindung durch ein Betriebsystemkommando zu trennen, damit dann das Verschieben nicht auf einen fehler läuft (CMD /OPENFILES) währe hier mein Ansatz.

Würde mich über eure Ideen / Lösungsansätze freuen!

Gruß aus dem sonnigen Köln
Lazy

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Close Dataset erst nach Programmende?

Beitrag von Precog (ForumUser / 38 / 0 / 0 ) »
Hallo Lazy,

hatte schon ähnliche Fälle, wo die Sperren seitens des Betriebssystems zu lange auf Dateien hingen.

Ein einfacher Versuch wäre, eine künstliche Wartezeit einzubauen (vielleicht reichen schon 10 Sekunden):

WAIT UP TO i SECONDS am Ende Deines eigenen Programms.

Oder Programm RSWAITSEC mit i Sekunden.

Dann den MOVE-Befehl.

Viele Grüße

Precog

Re: Close Dataset erst nach Programmende?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
LazyJones hat geschrieben: 1. Ich schreibe ein Programm welches aus einer Tabelle die zu verschiebenden Files liest und alle vierteltsunde guckt ob es was in der Tabelle gibt und dann die Dateien verschiebt...
Das Coding des "neuen" Programmes koenntest Du auch einfach an den Anfang des alten Programmes setzen.

D.h. Du verschiebst/loescht die alten Dateien vom vorherigen Programmlauf immer beim naechsten/erneuten Aufruf des Programmes.
Damit brauchst Du keine zwei Programme handeln/pflegen.

Re: Close Dataset erst nach Programmende?

Beitrag von LazyJones (ForumUser / 3 / 0 / 0 ) »
Precog hat geschrieben:Hallo Lazy,

hatte schon ähnliche Fälle, wo die Sperren seitens des Betriebssystems zu lange auf Dateien hingen.

Ein einfacher Versuch wäre, eine künstliche Wartezeit einzubauen (vielleicht reichen schon 10 Sekunden):

WAIT UP TO i SECONDS am Ende Deines eigenen Programms.

Oder Programm RSWAITSEC mit i Sekunden.

Dann den MOVE-Befehl.

Viele Grüße

Precog
Wenn ich einen Break Pont direkt nach dem Close Dataset setzte, dann sollte (wenn ich ein par Sekunden warte) ja das Problem mit der Sperre verschwunden sein. Leider wird wohl die Verbindung erst gekappt, wenn das Programm abgearbeitet worden und beendet ist.

Habe jetzt eine Tabelle / Fuba, der die Dateien dann kontinuierlich verschiebt, aber den Aufruf am Anfang des jeweiligen Programms zu machen ist eine sehr gute Idee, da sonst Dateien doppelt eingelesen werden könnten, falls das Verschieben vor der Ablage der nächsten Datei noch nicht gelaufen ist. Vielen Dank hierfür.

Gruß aus Kölle
Lazy

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2432
Views
Open Dataset, Transfer, Close Dataset.Transfer unvollständig
von mari » 25.09.2007 09:28 • Verfasst in ABAP® Core
1
Antw.
1478
Views
Close dataset macht nicht seinen Job
von cut1 » 09.08.2006 16:57 • Verfasst in ABAP® für Anfänger
7
Antw.
2247
Views
Event bei Programmende
von Wayne » 10.06.2005 11:52 • Verfasst in ABAP® für Anfänger
2
Antw.
2891
Views
close cursor bringt Fehler
von Wess » 11.01.2019 10:39 • Verfasst in ABAP Objects®
1
Antw.
452
Views
statt Button F8 Button Close setzen
von HH_ABAP » 18.05.2023 21:16 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1746
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2296

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1746
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2296

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 298
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 890
MS-Word als Editor
letzen Monat von tekko 1 / 4398