Problem des konkurrierenden Zugriffs auf dms-files

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

Problem des konkurrierenden Zugriffs auf dms-files

Beitrag von Elghali (ForumUser / 9 / 5 / 0 ) »
Liebe SAP- und DMS-Experte,

ich möchte mich gerne erkundigen, wie man die Größe einer Datei, die auf dem App Server -AL11- abgelegt wird, zur Laufzeit prüfen kann? (d.h. während des Ablegens)

Hintergrund dieser Frage ist folg.:
Die (dms-)Datei wird mittels des FuBas HTTP_GET_FILE vom Tresor in dem App Server (AL11) abgelegt. (Codeausschnitt steht im Anhang)
Problem ist dabei, dass manchmal ein Hintergrund-Job diese Datei während des Ablegens ließt und an einer Email anhängt.
Folglich wird die Datei leider unvollständig von dem Hintergrund-Job gelesen und in der Email angehängt. (da die Datei während des Ablegens gelesen wurde)

Ich habe mir bis jetzt folg. überlegt:
Beim Lesen der Datei wird die Größe der "originalen" Datei mit der hochgeladenen Datei verglichen. Sollte beide Größen ungleich sein, dann 1 Sekunde warten und wiederholen zu vergleichen bis beide Größen gleich sind. Aber dies ist unmöglich da ich die Dateigröße während des Hochladens nicht messen konnte.

Falls die Ermittlung der Dateigröße zur Laufzeit nicht möglich ist oder diese Lösungsansatz nicht effizient ist, gibt’s vielleicht anderen Ideen um dieses Problem zu vermeiden?

Ich hoffe, dass ich eine klare Vorstellung von dem Problem geben konnte.
Ich wäre für jede Hilfe, Idee und weiterführende Information dankbar!

Khaled Elghali

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


Re: Problem des konkurrierenden Zugriffs auf dms-files

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Moin Khaled,

ich glaube du denkst da zu kompliziert. Da du von einem Hintergrundjob sprichst gehe ich erst mal davon aus, dass dieser auch im SAP-System läuft. Und für konkurrierende Zugriffe hat sich SAP doch das Sperrprinzip ausgedacht.
Bau dir ein Sperrobjekt und während des Schreibens sperrst du den Namen der Datei und wenn sie fertig geschrieben ist löst du die Sperre wieder. Und das Emailprogramm soll dann halt vorab prüfen, ob die zu lesende Datei ungesperrt ist.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Elghali

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Problem des konkurrierenden Zugriffs auf dms-files

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Alternativ kann man das auch mit einer Sperrdatei lösen:
Wenn die Datei von HTTP übertragen wird, wird auch eine zweite Datei mit demselben Namen und z.B. der Erweiterung ".lock" erstelt.
Solange diese Datei vorhanden ist, darf der Hintergrundjob die andere Datei nicht auslesen.
Nachdem die Übertragung vom HTTP abgeschlossen wurde, wird die Lock-Datei gelöscht und der Hintergrundjob darf nun die Datei verarbeiten.

Nachteil der ganzen Sache ist, dass im Falle eines Fehlers die Sperrdatei eventuell nicht gelöscht wird, was bei balck_adept's Ansatz durch die Sperrobjekte eben nicht der Fall ist. Wenn ein Programm abbricht werden Sperren normalerweise automatisch abgebaut. Andererseits sieht man so nicht ob die Datei fehlerfrei übertragen wurde und der Hintergrundjob verarbeitet die unvollständige Datei. Wenn also im Austauschverzeichnis viele Sperrdateien herumliegen sieht man so ob es Probleme bei der Übertragung gibt.

Alles hat sein Für und Wider.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Elghali

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.18
Basis: 7.50

Re: Problem des konkurrierenden Zugriffs auf dms-files

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Eine weitere Möglichkeit wäre, die Daten nicht am Dateisystem, sondern als XSTRING in der Datenbank abzulegen.
Damit hängt die Ablage am Transaktionsmanagement der Datenbank und somit kann es zu keinen Überschneidungen kommen. Sprich ohne COMMIT WORK sehen andere Prozesse die Daten nicht.
Das ist aber nur bei relativ kleinen Daten sinnvoll, weil die Datenbank sonst zum Flaschenhals wird.
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.18
Basis: 7.50

Re: Problem des konkurrierenden Zugriffs auf dms-files

Beitrag von Elghali (ForumUser / 9 / 5 / 0 ) »
Hallo zusammen,

zunächst einmal vielen Dank für Ihre Rückmeldungen!

Also hier ist eine kürze Überblick über die Programme/Reports:
Es geht um zwei Reports: ein Druckprogramm und ein Hintergrund-Job
- Ablegen der Datei (CAD Material-Zeichnung) wird nach der Aufrufen von einem Druckreport
- Hintergrund-Job läuft jede x-Minuten in SAP, wobei es die Dateien ließt und an einer Email anhängt.

An dem Sperrprinzip habe ich mir auch überlegt aber ich glaube, dass die Sperrung erfolgt nur, wenn beide Programme von dem selben Benutzer ausgeführt werden. (was in diesem Fall nicht erfüllt, da die Hint.-Job nicht von mir ausgeführt)
PS: Da ich relativ neu im Bereich der SAP-Entwicklung bin und es verschiedene Sperrkonzepte gibt, könnte es sein, dass ich die falsche Dokumentation gelesen habe :(

Könnten Sie bitte einen Codeausschnitt zu dem Sperren schreiben? Dafür habe ich Ihnen den Codeausschnitt des Lesenverfahrens der Datei (OPEN DATASET, READ, CLOSE DATASET) angehängt. :)
... und während des Schreibens sperrst du den Namen der Datei und wenn sie fertig geschrieben ist löst du die Sperre wieder. Und das Emailprogramm soll dann halt vorab prüfen, ob die zu lesende Datei ungesperrt ist
(auch ein Link zu einem Beispiel oder Dokumentation wäre hilfreich)

Vielen Dank im Voraus!
Khaled Elghali
Zuletzt geändert von Elghali am 13.01.2019 23:51, insgesamt 2-mal geändert.

Re: Problem des konkurrierenden Zugriffs auf dms-files

Beitrag von deejey (Specialist / 418 / 128 / 45 ) »
btw ... sy-subrc muss nach dem read erfolgen und nicht nach append. Wundert mich dass das überhaupt je funktioniert hat.

Re: Problem des konkurrierenden Zugriffs auf dms-files

Beitrag von Elghali (ForumUser / 9 / 5 / 0 ) »
black_adept hat geschrieben:und wenn sie fertig geschrieben
a-dead-trousers hat geschrieben:Nachdem die Übertragung vom HTTP abgeschlossen wurde
Wie kann ich herausfinden, dass die Datei "vor dem Entsperren" fertig abgelegt bzw. geschrieben ist und dass das Ablegen im Hintergrund nicht weiter läuft (parallel) ?

Re: Problem des konkurrierenden Zugriffs auf dms-files

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
An dem Sperrprinzip habe ich mir auch überlegt aber ich glaube, dass die Sperrung erfolgt nur, wenn beide Programme von dem selben Benutzer ausgeführt werden.
Solch ein Sperrkonzept wäre ja komplett sinnlos! Wenn jemand in einer Kundennummer, Materialnummer, Personalnummer im Änderungsmodus drinsteht, kann kein anderer zeitgleich dasselbe tun. Das ist das Sperrkonzept!

https://help.sap.com/saphelp_nw70ehp3/h ... cache=true

Leider steht auf der o.g. Seite wie immer bei SAP-Originaldokumentationen nur Blabla und nicht die Funktionsbausteine, mit denen man das nutzt, und ich bin gerade zu faul, das zu recherchieren. Aber das kannst Du ja selber machen; das findet man.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Elghali


Seite 1 von 1

Vergleichbare Themen

3
Antw.
21889
Views
SAP Dokumentation als PDF-Files
von trymaxx » 26.11.2004 16:57 • Verfasst in Tutorials & Cookbooks
2
Antw.
3981
Views
Benötige diese *.jar Files
von Unicast » 13.09.2008 11:28 • Verfasst in Java & SAP®
2
Antw.
1408
Views
Liste der Files im Verzeichnis
von Deniz » 10.08.2010 09:17 • Verfasst in ABAP® Core
0
Antw.
1488
Views
ZIP-Files aus SAP heraus erstellen
von legi » 21.06.2006 15:28 • Verfasst in ABAP® für Anfänger
3
Antw.
3151
Views
Öffnen von PDF-Files auf Applikationsserver
von schuessler » 19.11.2007 20:19 • Verfasst in ABAP® Core

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 72
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141