ich erzeuge mittels OLE2 eine Excel-Datei. Der Dateipfad / -Name wird im Selektionsbild übergeben.
Wenn es bereits eine Datei mit diesem Namen gibt und diese gerade geöffnet ist, scheitert das erneute sichern .
Kann ich im Vorfeld prüfen, ob eine Datei mit diesem Pfad/Namen gerade in Verwendung ist?
OLE2 (SAPgui) und Applikationsserver? Wie soll dass denn funktionieren? Über eine Netzwerkfreigabe auf die schreibender Zugriff erlaubt ist? Meines Erachtens wäre das eine ziemliche Sicherheitslücke.
Zum Problem:
Soweit ich weiß, legt Excel (bzw. MS-Office allgemein) zu jeder geöffneten Datei auch eine Sperrdatei (mit ~ im Namen oder so ähnlich) an. Du könntest daher mit CL_GUI_FRONTEND_SERVICES=>FILE_EXIST prüfen ob die Sperrdatei existiert.
lg ADT
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.
Ich gehe bei der Frage davon aus, du meinst, dass die Datei bereits in Excel geöffnet ist und auf dem Dateisystem (NTFS) somit ein Schreibsperre besteht.
Wird die Datei im Frontend downgeloadet mit der Klasse cl_gui_frontend_services und auf einem NTFS-Dateisystem gespeichert, wird die Ausnahme access_diened ausgelöst.
Im Backend ist nach der Anweisung OPEN DATASET ... FOR OUTPUT sy-subrc=8.
Die Ausnahme cx_sy_file_open_mode wird von der Anweisung OPEN DATASET im Backend nicht ausgelöst, wenn ein anderes Programm (hier Excel) eine Schreibsperre auf die Datei hält.
Kurze Zusammenfassung:
Erst durch Prüfung des Rückgabewertes sy-subrc kann festgestellt werden, ob die Datei bereits geöffnet ist und eine Schreibsperre auf dem Dateisystem vorhanden ist.