Tabellenzugriff zulassen bzw. nicht zulassen

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

Tabellenzugriff zulassen bzw. nicht zulassen

Beitrag von kbit100 (Specialist / 130 / 42 / 0 ) »
Hallo,

ich hoffe, ich kann mein Anliegen einigermaßen verständlich formulieren... Ich bitte um Nachsicht. ;-)

ich möchte gerne folgendes realisieren: Von Zeit zu Zeit werden kundeneigene Tabellen zuvor komplett gelöscht und dann mit aktuellen Daten gefüllt. Auf diese Tabellen greifen verschiedene Funktionsbausteine ständig im Tagesgeschäft zu. Laienhaft ausgedrückt: Diese Fubas sollten sozusagen eine "Warteschleife" einlegen, wenn die besagten Tabellen gerade befüllt werden, damit sie kein falsches bzw. unvollständiges Ergebnis zurückgeben. Erst wenn die besagten Tabellen vollständig befüllt worden sind, sollen die weiteren Zugriffe erfolgen. - Mal ganz abgesehen davon, ob dies bei großen Datenmengen sinnvoll ist....

Ich dachte an zwei Möglichkeiten: 1. eine Extra-Tabelle, in der ein Satz mit einem Flag steht. Das Flag wird vor der Tabellenbefüllung gesetzt und danach wieder gelöscht. In den Fubas müsste dann eine Schleife laufen, die dieses Flag ständig abfragt und erst wieder auf die Tabellen zugreift, wenn das Flag nicht mehr gesetzt ist.
Oder 2. mit einer Datensatzsperre auf einen Datensatz in dieser Extra-Tabelle. Diese Sperre wird vom Befüllungsreport vorher gesetzt, die Tabellen werden befüllt und danach wird die Sperre dieses Statussatzes wieder aufgehoben.

Habt ihr evtl. eine elegantere und einfachere Methode? Vielleicht sehe ich den Wald auch vor lauter Bäumen nicht.

Vielen Dank im Voraus für eure Hilfe!

Gruß

k

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


Re: Tabellenzugriff zulassen bzw. nicht zulassen

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
So etwas sollte die Datenbank eigentlich sicherstellen.
Vorrausgesetzt das "Ladeprogramm" macht nur ein COMMIT WORK ganz am Ende nach Löschen und Wiederbefüllen.

Re: Tabellenzugriff zulassen bzw. nicht zulassen

Beitrag von kbit100 (Specialist / 130 / 42 / 0 ) »
Dele hat geschrieben:So etwas sollte die Datenbank eigentlich sicherstellen.
Vorrausgesetzt das "Ladeprogramm" macht nur ein COMMIT WORK ganz am Ende nach Löschen und Wiederbefüllen.
Im Prinzip richtig. Aber dann sind die Tabellen leer und die Fubas kommen ohne Ergebnis zurück und das wäre ja falsch.
In jeden Fuba müsste eine Prüfung rein, ob überhaupt ein Datensatz in jeder einzelnen Tabelle steht.

Re: Tabellenzugriff zulassen bzw. nicht zulassen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Ich würde das über ein Sperrobjekt lösen:
http://help.sap.com/erp2005_ehp_04/help ... ontent.htm
bzw.
http://help.sap.com/erp2005_ehp_04/help ... ameset.htm

Vor allem da ja mehrere Tabelle betroffen sind, könnte es sonst zu inkonsistenten Zuständen kommen:
Der Befüllreport hat gerade die Daten ausgetauscht und ein anderes laufendes Programm produziert noch Einträge mit dem alten Datenbestand.

Ich würde z.B. vorschlagen zur Tabelle DD02L ein kundeneigenes Sperrobjekt anzulegen. Dann hätte man als Schlüssel gleich die Datenbanktabelle und braucht keine zusätzliche Tabelle im DDIC. Wenn ein Programm Daten aus der Tabelle benötigt muss es nur eine Lesesperre absetzen und solange Lesesperren exisitieren darf der Befüllungsreport nichts verändern. Im Gegenzug dürfen die anderen Programme keine Daten verarbeiten solange der Befüllreport eine Schreibsperre aufgebaut hat.

lg ADT

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

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: Tabellenzugriff zulassen bzw. nicht zulassen

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
Wenn das Befüllen der Tabelle(n) erhebliche Zeit kostet, kann man zu jeder Tabelle eine zweite Tabelle erstellen und diese füllen. Erst wenn diese Tabelle(n) dann vollständig und konsistent existieren kann man irgendwo einen Schalter setzen, dass jetzt die 2. Tabellengruppe aktiv ist. Die Leseprogramme müssen dann aber so angepasst werden, dass sie zum Startzeitpunkt erst mal lesen welche Gruppe gerade aktuell ist und sich dann auf diese Tabellen stürzen.

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

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Tabellenzugriff zulassen bzw. nicht zulassen

Beitrag von kbit100 (Specialist / 130 / 42 / 0 ) »
Vielen Dank für die Tipps!

Re: Tabellenzugriff zulassen bzw. nicht zulassen

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Im Prinzip richtig. Aber dann sind die Tabellen leer und die Fubas kommen ohne Ergebnis zurück und das wäre ja falsch.
In jeden Fuba müsste eine Prüfung rein, ob überhaupt ein Datensatz in jeder einzelnen Tabelle steht.
Solange du keinen Commit Work machst, sehen alle anderen parallel laufenden Programme (außerhalb deiner LUW) noch den Stand vor deinen Änderungen. Wenn also der Commit Work erst nach dem Löschen und dem Wiederbefüllen abgesetzt wird, dann passiert genau das, was du erreichen willst.

Re: Tabellenzugriff zulassen bzw. nicht zulassen

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Dele hat geschrieben:
Im Prinzip richtig. Aber dann sind die Tabellen leer und die Fubas kommen ohne Ergebnis zurück und das wäre ja falsch.
In jeden Fuba müsste eine Prüfung rein, ob überhaupt ein Datensatz in jeder einzelnen Tabelle steht.
Solange du keinen Commit Work machst, sehen alle anderen parallel laufenden Programme (außerhalb deiner LUW) noch den Stand vor deinen Änderungen. Wenn also der Commit Work erst nach dem Löschen und dem Wiederbefüllen abgesetzt wird, dann passiert genau das, was du erreichen willst.
Das könnte dann aber zu Lasten des Rollback-Bereichs der Datenbank gehen. Wenn die Datenmenge erheblich groß ist kann es an der Stelle zu Problemen kommen. Die Lösung würde ich aber mal testen, ggf. kommt die DB damit ja zurecht. Dann wäre das der geringste Aufwand auf Programmierungsseite.

Ansonsten würde ich das wie bereits vorgeschlagen mit einem Sperrobjekt lösen. Das Import-Programm setzt eine Lese-Sperre. Wenn die Bausteine dann parallel eine Schreibsperre setzen wollen sollten sie "abprallen"... ;-)

Grüße,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1708
Views
Nur Nummerische Eingaben zulassen
von pohlmann-schwarza » 20.05.2008 09:56 • Verfasst in ABAP® für Anfänger
9
Antw.
4902
Views
Dezimalzahlen nicht zulassen
von dyv » 07.08.2014 16:20 • Verfasst in ABAP® für Anfänger
6
Antw.
4249
Views
Mehrere Exportparameter von Suchhilfe in Feld zulassen
von k4lisp3r4 » 04.12.2006 09:30 • Verfasst in Dialogprogrammierung
11
Antw.
6851
Views
User - Tabellenzugriff
von Kristin » 25.05.2011 08:35 • Verfasst in Sonstige Module
0
Antw.
958
Views
Tabellenzugriff - verschachelte IF-Abfragen
von chebello » 17.12.2007 15:05 • Verfasst in ABAP® für Anfänger

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

Daten an Tabelle binden
Gestern von Bright4.5 1 / 515
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2149
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8744