Hallo @ll,
könnte mir vielleicht jemand einen Tipp geben zum folgendem Problem:
Es existiert eine Tabelle, die eine maximale Reservierung von z.b. "1" Mitarbeiter darf sich reservieren hat.
Rufen nun zwei Mitarbeiter die dynpro/url auf ist die Reservierung noch auf 0 gesetzt. Reserviert sich nun Mitarbeiter A wird die Reservierung gesetzt und auch die Anzeige auf 1 gesetzt. Mitarbeiter B hat noch die "alte dynpro/url" auf und bekommt noch die 0 gezeigt. Reserviert er sich nun auch sind 2 Reservierungen enthalten obwohl nur eine festgelegt wurde.
Mögliche Lösungsansätze gibt es da verschiedene. Du kannst z.B. beim "Reservieren" nachlesen ob zwischenzeitlich sich was geändert hat und entsprechende Fehlermeldungen erzeugen.
Je nachdem könnte eine "schönere" Lösung aber das Arbeiten mit einer Sperre sein, so dass du gleichzeitig immer nur einen User die Transaktion im "ändern" Modus für ein Event aufrufen lässt (siehe: https://help.sap.com/saphelp_nwmobile71 ... ameset.htm).
Wenn du mit Fioris arbeitest könntest du dir den Datenpunkt wohl auch zyklisch asynchron aktualisieren (müsste in der Theorie gehen, Erfahrung habe ich da keine).
"Du kannst z.B. beim "Reservieren" nachlesen ob zwischenzeitlich sich was geändert hat und entsprechende Fehlermeldungen erzeugen."
Das habe ich auch vor, aber mir fehlt da irgendwie der Ansatz, komme da nicht weiter?!
Habe es mitm Timer "geschafft", der refreshed die Seite alle 10 Sekunden z.B. aber da treten leider Probleme auf und auf eine Sekunde setzen geht gar nicht, da bekomme ich Fehler wenn man nicht schnell genug in die Tabelle klickt.
2. Daten lesen und zwischenspeichern in DATEN_SAVE, Daten aendern, Daten blockieren und pruefen ob Daten auf der Datenbank immer noch gleich der zwischengespeichert Daten in DATEN_SAVE sind.
Falls ja, Daten updaten und Daten entblockieren.
Falls nein, Meldung: Daten wurden zwischenzeitlich geaendert, bitte neu ......
Kommt auch sehr auf die Art der Daten an. Daten die selten geaendert werden, kann man "grosszuegiger" Blockieren, evtl. sogar ganze Tabelle.
Sensitive Daten/oft genutzte Daten sollte man nur speichern soweit und solange noetig.
Also das ist der klassische Fall, wo man eine Sperre braucht. Es darf immer nur ein Benutzer diese Reservierung im Änderungsmodus offen haben (deshalb gibt es in allen Ecken des SAP-Systems die Unterscheidung zwischen Anzeige- und Änderungsmodus). Einen passenden Link hat Somani Dir ja schon gegeben. Dein Problem ist ein Klassiker, deshalb hat die SAP sich ja die Mühe gemacht, solch ein Sperrkonzept zu implementieren. Leider sind diese SAP-Dokus meist sehr theoretisch, aber in der Praxis legst Du rasch solch ein Sperrobjekt an, und dann werden automatisch Funktionsbausteine erzeugt, mit Denen Du Dein Reservierungsobjekt sperren und wieder freigeben kannst. Versuch Dir am besten ein Beispiel zur Nutzung von Sperrobjekten in ABAP zu ergooglen.
Wenn Du das nicht so machst, dann würde das bedeuten, dass Du zu faul bist und den Aufwand scheust. In dem Fall kannst Du natürlich versuchen, irgend einen Pfuschel-Workaround zu implementieren, aber wie man das macht, solltest Du dann nicht hier fragen.