Open Dataset, DATASET_NOT_OPEN, CX_SY_FILE_OPEN_MODE

Getting started ... Alles für einen gelungenen Start.
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Open Dataset, DATASET_NOT_OPEN, CX_SY_FILE_OPEN_MODE

Beitrag von nikibert (ForumUser / 78 / 4 / 0 ) »
Mahlzeit zusammen,

nan mal ein Fehler der nicht alle Tage auftritt...
Wir lassen per Job eine Datei erstellen die Stücklisteninformationen beinhaltet. Startet der Job um 00:05 Uhr läuft es wunderbar. Startet er aber um 00:30 Uhr bekomme ich folgende Fehlermeldung:

Laufzeitfehler DATASET_NOT_OPEN
Ausnahme CX_SY_FILE_OPEN_MODE

Es ist wirklich so! Das ist mittlerweile schon ein paar mal vorgekommen...

Wahrscheinlich ist bei unserer Programmierung ein Fehler drin den ich nicht mehr erkenne (Den Startzeitpunkt lasse ich nun mal aussen vor):

Code: Alles auswählen.

OPEN DATASET gv_pfad FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc <> 0.
  MESSAGE 'Datei kann nicht geöffnet werden.' TYPE 'I'.
ENDIF.

DATA: wa_ausgabe(200) TYPE c,
           lv_menge(13)  TYPE c.

LOOP AT itab_display INTO wa_display.
  lv_menge = wa_display-menge.
  CONDENSE lv_menge NO-GAPS.

  PERFORM shift USING wa_display-matnr.
  PERFORM shift USING wa_display-idnrk.

  CONCATENATE wa_display-matnr ';'
              wa_display-idnrk ';'
              lv_menge ';'
              wa_display-meins ';'
              wa_display-datuv ';'
              wa_display-vkorg ';'
              wa_display-vtweg
  INTO wa_ausgabe.

  TRANSFER wa_ausgabe TO gv_pfad.
  IF sy-subrc <> 0.
    MESSAGE 'Datei kann nicht geschrieben werden.' TYPE 'I'.
  ENDIF.

ENDLOOP.
CLOSE DATASET gv_pfad.
Ob das nun schön ausschaut oder man eleganter Programmieren kann lass ich mal ausser acht. Da steckt irgendwo ein Fehler drin... Laut Kurzdump bricht er bei der folgenden Stelle ab:

Code: Alles auswählen.

  TRANSFER wa_ausgabe TO gv_pfad.
Kann mir da jemand einen Tipp geben?

Danke & Gruß
nikibert

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


Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
So auf die schnelle mal folgende Vermutung:

Auf euren System laufen Prozesse, die Mountpoints mal kurzzeitig aussetzen um arbeiten am System zu machen (z.B. Sicherungen) oder die einfach in einem bestimmten Zeitraum diese Mountpunkte neu setzen um fehler zu verhindern.

Ich würde an deiner Stelle mal mit der Basis bzw. mit dem Systemern reden, was Nachts um diese Zeit passiert und somit ggf Einfluss auf dein Programm hat.

MfG

Thomas

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

:wink:
die Fehlerbehandlung ist ja genial.

Wir zeigen den Fehler an, daß das Öffnen in die "Hose gegangen ist" und machen munter weiter.

Klar, daß nach dem Fehlerhaften Öffnen auch der Transfer abschmiert.
:wink:

Aber warum der Open nicht geht, müsstest Du mal Debuggen.
Einmal um 0:05 und einmal um 0:30.

Schonmal daran gedacht, daß irgend ein Mapping nachts neu gemacht wird.
Fährt ein Server runter oder wieder rauf?
Werden Daten gesichert?
Werden Devices neu gemountet?
Ändert sich die IP-Adresse von irgendeinem Router?
Fährt ein Router runter und wieder rauf?
Wirft ein Router um 0:29 vielleicht ab ...

Wart mal bis 3:00 Uhr.

Also es geht schon beim Open schief, nicht erst beim Transfer.

Gruß
babap

Beitrag von nikibert (ForumUser / 78 / 4 / 0 ) »
Hui,
das ging schnell. Danke!
Fehlermeldung ;-) Da geh ich nun mal nicht weiter drauf ein... :D

In dem Job in dem dieses Programm enthalten ist, laufen noch 6 weitere Programme und die laufen immer ohne Probleme durch...
Das kann ja auch nicht sein das genau um 0:30 Uhr was blockiert was das Programm behindert. Es entstehen ja auch Abweichungen beim Start durch die vorherigen Programme die Ausgeführt werden.

gruß nikibert

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Kann es viielleicht auch einfach nur sein, das ein 2tes Programm die Datei schon im Zugriff hat?

Beitrag von nikibert (ForumUser / 78 / 4 / 0 ) »
Nein, jedes Programm schreibt eine andere Datei. Die Programme werden auch nacheinander abgearbeitet.

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,
nikibert hat geschrieben:Hui,
...
Fehlermeldung ;-) Da geh ich nun mal nicht weiter drauf ein... :D
...
In Deinem Coding steht

Code: Alles auswählen.

OPEN DATASET gv_pfad FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. 
IF sy-subrc <> 0. 
  MESSAGE 'Datei kann nicht geöffnet werden.' TYPE 'I'. 
ENDIF. 

DATA: wa_ausgabe(200) TYPE c, 
           lv_menge(13)  TYPE c.
... 
Du machst Open Dataset, bekommst einen Sy-Subrc<>0.
Dann fragst Du diesen ab, Setzt eine Info-Meldung ab, daß die Datei nicht zu öffnen ist, das Programm läuft aber weiter und fällt dann beim Schreiben "auf die Nase".

Ich hätte "den ENDIF" ganz unten angesetzt und erst gar keinen Schreibversuch gestartet, denn Schreiben geht nicht ohne öffnen.

Ich weiß, daß damit das eigentliche Problem nicht gefunden ist, aber zumindest der Absturz wäre damit vermieden.

Gruß
babap

Re: Open Dataset, DATASET_NOT_OPEN, CX_SY_FILE_OPEN_MODE

Beitrag von JHM (Top Expert / 1223 / 2 / 204 ) »
nikibert hat geschrieben: Kann mir da jemand einen Tipp geben?
Versuch mal mit dem Zusatz MESSAGE msg beim OPEN DATASET die Fehlermeldung des OS mit zubekommen, dass bringt dich bei der Fehlersuche bestimmt weiter.

Code: Alles auswählen.

DATA: g_msg TYPE c lenght 255.
OPEN DATASET gv_pfad FOR OUTPUT IN TEXT MODE ENCODING DEFAULT MESSAGE g_msg .
IF sy-subrc <> 0.
  MESSAGE 'Datei kann nicht geöffnet werden.' TYPE 'I'.
  MESSAGE g_msg TYPE 'I'.
ENDIF.
Gruß Hendrik

Beitrag von nikibert (ForumUser / 78 / 4 / 0 ) »
Moin zusammen,

habe den Job heute Nacht wieder um 00:02 Uhr laufen lassen, ohne Probleme... Ich find es schon fast belustigend.

@babap: Hast Recht, ist natürlich Blödsinn die Verarbeitung trotz Fehler weiterlaufen zu lassen. Ich werde die Messageart demnächst mal auf 'E' ändern lassen.

@JHM: Ich werde in der nächsten Nacht mal deine Version ausprobieren. Vielleicht bekomme ich ja bessere Anhaltspunkte woran es liegen könnte. Kann ich mir die Message g_msg denn Morgen auch in der SM37 anzeigen lassen? Nicht das die Meldung irgendwo ins leere läuft...

Danke und Gruß
nikibert

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,
nikibert hat geschrieben:...
Ich werde die Messageart demnächst mal auf 'E' ändern lassen.
Achtung, Messageart "E" kann den ganzen Job oder die Jobkette zum Abbruh bringen. "W" meistens auch.
Von daher ist "I" oder "S" garnicht verkehrt.

Bloß die Verarbeitung sollte dann nicht mehr durchgeführt werden.

Ich lagere die dann immer in den ELSE-Zweig von der Sy-subrc-Abfrage aus.

Gruß
babap

Beitrag von nikibert (ForumUser / 78 / 4 / 0 ) »
Moin!

Das ist gut zu wissen, haben nun Messageart auf I gesetzt und die Verarbeitung in den ELSE-Zweig gesetzt. Hatte ich garnicht gewusst das dadurch der Job komplett abgebrochen werden kann...

Danke und Gruß
nikibert

Beitrag von nikibert (ForumUser / 78 / 4 / 0 ) »
Moin Moin,

nun läuft der Job...
habe eine Schleife eingebaut die nach 5 Sekunden einen neuen Versuch startet wenn das OpenDataset nicht funktioniert.

Wahrscheinlich kam das Programm vorher mit irgendwas in Konflikt was ich leider nicht herausfinden konnte :-(

Code: Alles auswählen.

  
OPEN DATASET gv_pfad FOR OUTPUT IN TEXT MODE ENCODING DEFAULT MESSAGE g_msg.
  IF sy-subrc <> 0.
    MESSAGE 'Datei kann nicht geöffnet werden.' TYPE 'I'.
    MESSAGE g_msg TYPE 'I'.
    IF gv_zaehler <= 5.
      WAIT UP TO 5 SECONDS.
      gv_zaehler = gv_zaehler + 1.
      PERFORM dataset.
    ELSE.
      MESSAGE 'Datei kann auch zum 5ten Mal nicht geöffnet werden.' TYPE 'I'.
      MESSAGE g_msg TYPE 'I'.
    ENDIF.

  ELSE.
      ... weitere Verarbeitung
  ENDIF.
Gruß nikibert

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,
pfiffig!! :)
Gruß
babap

Seite 1 von 1

Vergleichbare Themen

0
Antw.
2593
Views
open dataset
von joachim » 18.08.2008 11:05 • Verfasst in ABAP® Core
5
Antw.
5579
Views
Zeilenlänge bei OPEN DATASET
von RiffRaff » 15.05.2006 16:16 • Verfasst in ABAP® Core
10
Antw.
9386
Views
Open Dataset Fehler
von petre » 19.06.2008 14:25 • Verfasst in ABAP® Core
15
Antw.
8440
Views
CSV Datei mit open dataset
von lisa » 18.05.2021 10:19 • Verfasst in ABAP® für Anfänger
4
Antw.
16844
Views
OPEN DATASET ... TRANSFER
von gabrielgn » 15.01.2008 10:48 • Verfasst in ABAP Objects®

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Ermittlung der Arbeitstage (Mosid)
vor 2 Stunden von Radinator 11 / 45495
LSMW-Problem
vor einer Woche von DeathAndPain gelöst 6 / 3213
SFP (Adobe Forms) QR-Code wird nicht angezeigt
vor einer Woche von Sebastian82 gelöst 4 / 1840

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.