Multiton oder Flyweight Pattern

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Multiton oder Flyweight Pattern

Beitrag von Norl (ForumUser / 2 / 0 / 0 ) »
Hallo,
dies ist mein erster Beitrag hier, daher entschuldigt bitte, sollte nicht alles so flüssig laufen.

Ich sitzte momentan an meiner Bachelorarbeit und entwickle dafür eine Art Event Sourcing Lösung in ABAP.
Da ich mit ABAP nicht besonders vertraut bin, fällt mir vieles noch etwas schwer und habe momentan folgendes Problem:

Ich vergleiche den alten und neuen Stand eines Objektes (beispielsweise eines Vertrags) und prüfe, ob es eine Änderung gegeben hat.
Diese Änderung soll, je nach Datentyp, in einer eigenen Tabelle(nennen wir sie DataStore) gespeichert werden(nur der aktuelle/neue Wert). Um im Nachhinein bestimmen zu können, aus welcher Tabelle und welchem Datenfeld dieser Wert kommt, habe ich eine weitere Tabelle erzeugt, in der jeder Kombination von Tabelle+Feldname eine Zahl zugewiesen ist. Diese Zahl ist teil des Schlüssels der "DataStore" Tabellen.
Nun habe ich eine Klasse erstellt, um diesen Schlüssel zu erzeugen bzw. abzuspeichern und komme hier nicht weiter.
Feldname und Tabellenname des betreffenden Wertes bekommt die Klasse übergeben, wie kann ich daraus nun einen zusammenhängenden Datensatz, sprich: Tabelle A + Feldname B = Key 1,Tabelle A + Feldname C = Key 2 usw., bilden?
Als Tipp wurde mir das Multiton oder Flyweight Pattern nahegelegt, komme aber so auf keine wirkliche Lösung.

Freundliche Grüße

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


Re: Multiton oder Flyweight Pattern

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
In SAP gibt es Änderungsbelege. Hier wird genau beschrieben welches Feld wie (alter Wert/ neuer Wert) wann von wem geändert wurde.
Hierfür generiert man für die zu überwachenden Strukturen und Tabellen einen Funktionsbaustein, der am Ende der Transaktion/ Verarbeitung aufgerufen wird.

Wenn du prüfen möchtest, ob überhaupt eine Änderung vorgenommen wurde, kannst du entweder alle verwendeten Felder in einem komplexen Datenobjekt definieren und fragst ab "IF alt <> neu."
Oder das Objekt protokolliert selber, ob eine Änderung stattgefunden hat.

Das Verfahren mit deinem DataStore kenne ich nicht und ich halte das auch für sehr aufwändig und schwerfällig. Wie prüfst du denn z.B. Änderungen in einer Tabelle, z.B. Vertragspositionen? Dann müsstest du zu deiner DataStore-Zahl auch noch einen Index verwalten.
Warum verwendest du überhaupt eine "Zahl" und nimmst nicht gleich die Kombination aus Tabelle + Feldname?

Re: Multiton oder Flyweight Pattern

Beitrag von Thomas R. (Expert / 754 / 73 / 34 ) »
Hallo Norl,
die Sinnhaftigkeit Deiner Thematik hat Enno ja schon zur Diskussion gebracht. Darüber solltest Du nochmals nachdenken!


Zu Deinem konkreten Problem (wenn es unbedingt ein numerischer Schlüssel im "Datastore" sein muss):
Du könntest doch einfach die Anzahl der Datensätze in der "weiteren Tabelle" als Schlüssel verwenden.
Das Vorgehen in Deiner Klassenmethode wäre:
1. Lesen der "weiteren Tabelle" mit dem Schlüssel "Tabelle" "Feldname".
2. Bei einem Treffer den numerischen Schlüsselwert zurück liefern.
3. Ansonsten die Anzahl der Einträge in der Tabelle feststellen und einen neuen Datensatz mit "Tabelle" "Feldname" "Anzahl" in die "weitere Tabelle" einfügen und die "Anzahl" zurückliefern. Wenn man es richtig machen will muss man vor dem "Zählen" die Tabelle komplett gegen Schreiben sperren und diese Sperre nach dem Einfügen wieder aufheben.
4. Es darf keinerlei Löschfunktion von Datensätzen in der "weiteren Tabelle" geben!

MfG
Thomas R.

Re: Multiton oder Flyweight Pattern

Beitrag von Norl (ForumUser / 2 / 0 / 0 ) »
Hallo,
entschuldigung für de späte Rückmeldung, hatte extreme Probleme mit meinem Internet.
Attribute für alt bzw. neu gibt es bereits, daher frage ich einfach if alt NE neu wie ewx vorgeschlagen hat.

Warum ich einen numerischen Schlüssel gewählt habe weiß ich selbst nicht, hat vielleicht damit zu tun, wie ich sowas in der Uni gelernt habe(sehr theoretisch und nach Lehrbuch).
Habe das aber jetzt so ähnlich gelöst wie in dem Beispiel von Thomas R.

Nun habe ich aber das Problem, wie bekomme ich den Tabellen- und Feldnamen der Änderung raus? Ich habe in der SAP Tabelle DD03L die Felder "Tabname" und "Fieldname" gefunden, können die mir da helfen?


Das ganze Projekt ist nicht unbedingt sauber oder effizient aufgebaut, da es ,aufgrund des sehr begrenzten Zeitrahmens für die Thesis, mir hauptsächlich um das Konzept geht, der Code soll nur als Prototyp zum groben Testen des Konzeptes dienen.

Vielen Dank für die Hilfe

Grüße

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1899
Views
Sonderzeichen für Covers Pattern definieren
von maclean » 13.06.2007 16:24 • Verfasst in ABAP® Core
3
Antw.
10862
Views
Problem bei Select Abfrage mit Contains Pattern (CP)
von eddi12 » 05.03.2008 10:52 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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 3 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141