Datenbankabfrage vor einer Reservierung

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

Datenbankabfrage vor einer Reservierung

Beitrag von SYsa (ForumUser / 2 / 0 / 0 ) »
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.

Danke.


Re: Datenbankabfrage vor einer Reservierung

Beitrag von Somani (ForumUser / 81 / 12 / 20 ) »
Hallo

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).

Grüsse

Re: Datenbankabfrage vor einer Reservierung

Beitrag von SYsa (ForumUser / 2 / 0 / 0 ) »
"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.

Re: Datenbankabfrage vor einer Reservierung

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Es gibt verschiedene Moeglichkeiten wie man an die Sachen gehen kann.
Hier mal zwei Moeglichkeiten, die mir auf anhieb einfallen.

1. Daten blockieren, Daten lesen, Daten aendern, Daten updaten, Daten entblocken.

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.

Ganz eindeutig Sperre

Beitrag von DeathAndPain (Top Expert / 1546 / 181 / 341 ) »
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.

Seite 1 von 1

Über diesen Beitrag


ABAP & SAP eBook Flatrate von Espresso Tutorials Sponsorlink
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Vergleichbare Themen

Datenbankabfrage
von SLUK » 19.02.2018 18:48
Datenbankabfrage mit inner join
von egge » 05.02.2008 12:12
Problem bei der Datenbankabfrage
von vman » 16.05.2007 10:00
Datenbankabfrage einschränken erzet = 8 bis 18 Uhr
von thomasxy » 04.01.2008 10:36
Reservierung/Sekundärbedarf
von muggel » 11.06.2008 13:42