Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Aktualisierung - wie am besten?

Begonnen von Serenia, November 18, 2016, 10:01:50

⏪ vorheriges - nächstes ⏩

Serenia

Hallo,

ich bin neu hier und auch noch neu im Umgang mit Access...

Ich arbeite zur Zeit an einer Datenbank, die in Zukunft hauptsächlich für Reportings genutzt werden soll. Hintergrund sind SAP Tabellen in denen überall unterschiedliche Informationen stehen und die alle miteinander verknüpft werden müssen, damit man rausbekommt was man wissen will ohne stundenlang Sverweise über Excel machen zu müssen.

Die Abfragen und Formulare, die wir benötigen bekomme ich hin und es funktioniert soweit ganz gut.

Meine Frage: wie aktualisiere ich den ganzen Sums am einfachsten?
Im Moment importiere ich die SAP Tabellen als Exceltabelle alle einzeln, fahre dann Bereinigungsabfragen für die Tabellen (weil Formate sonst nicht passen etc) und erstelle daraus mit Tabellenerstellungsabfragen neue Tabellen. In die bereinigten Tabellen füge ich einen Primärschlüssel hinzu - fertig.

Noch zum Verständnis: Ich lade die Tabellen direkt aus SAP herunter und speichere sie nur ab, ansonsten möchte ich daran nichts ändern, daher Bereinigung etc per Access.

Nun ist es ja aber so, dass sich Daten auch mal ändern  ;D
Also einmal im Monat ca sollte es möglich sein die Datenbank zu aktualisieren und das natürlich möglichst einfach.

Dabei kann es sein, dass neue Datensätze hinzukommen oder sich in den alten was ändert. - Eine Aktualisierungsabfrage würde vorhandene Daten überschreiben, Frage: sieht man bei einer solchen Abfrage was sich geändert hat? Anschließend müsste man eine Anfügeabfrage machen für evtl neu hinzugekommene Daten? Das muss ich dann aber auch für jede Tabelle einzeln machen?

Wenn ich ganz einfach die vorhandene Tabellen lösche und neu importiere habe ich zwar die aktuellsten Daten aber ich weiß nie was sich geändert hat... außerdem muss ich immer die Primärschlüssel neu setzen.

Ich bin hochgradig verwirrt und weiß nicht wie ich vorgehen soll.  :D

Vielleicht weiß ja jemand Rat :)

Wurliwurm

Kein Grund zur Verwirrung  :)

Ich würde die Access-Datenbank als reinen Datenspeicher zur Auswertung sehen. Damit werden am besten immer alle Daten auf einmal aus der Datenquelle SAP gefüllt (und die alten gelöscht).  Sonst müßtest Du alle Schlüssel aus SAP mitführen.

Auch keine Anfügeabfragen und derlei. Die Regeln der Aufteilung in einzelne Tabellen nach Schlüsselabhängigkeiten ("Normalisierung") spielen damit auch keine Rolle in der Access-Datenbank.

Also am besten Abfragen aus dem SAP 1:1 in Access-Tabellen übernehmen. Wenn die Access-Tabellen mit geeigneten Indizes geführt werden, müßten alle lokalen Abfragen im Access schnell laufen.

Herunterladen von klassichen Drucklisten Listen über die SAP-Oberfläche ist eine Qual, weil er die Spaltentrenner ("|") alle mitgibt. Falls Du die Berechtigung hast, kannst Du in Transaktion SE16N die angezeigten Daten direkt in Excel herunterladen. Als bessere Lösung könnte ich mir SAP-Query (Transaktion SQ01) vorstellen. Hier kann man JOINs über mehrere Tabellen machen. Ausgabe in den Hintergrund als Textverarbeitung. Der Königsweg wäre natürlich,  ein ABAP-Report zu programmieren, der die Daten im gewünschten Format auf dem Server oder auf dem lokalen PC ablegt.

Es gibt für Dein Vorhaben natürlich schon eine Menge fertiger Lösungen, die mächtigste ist das Business Warehouse von SAP.

Serenia

Danke für die Antwort :)

Die Transaktion SQ01 haben wir uns auch angeschaut, allerdings wird hier niemand eine Berechtigung dafür bekommen und es sind keine Feldberechnungen möglich, weiterhin können wir keine zusätzlichen externen Tabellen einspielen. Deswegen haben wir uns auf eine Access Lösung geeinigt.

Ich lade also momentan alle Tabellen über SE16 herunter und importiere sie in Access. Schlüssel haben die dann meines Wissens keine. Klar ich könnte immer die alten Tabellen löschen und die neuen importieren, hatte gehofft es gibt eine schönere Lösung  ;D

Ich hab das Importieren Makro mal ausprobiert, welches somit alle Tabellen gleichzeitig importiert, jedoch muss ich trotzdem vorher alle Tabellen löschen.

Die Tabellen haben alle eine Materialnummer, jedoch ist es in manchen Tabellen so, dass die Materialnummern mehrmals vorkommen, da sie zB in verschiedenen Werken gepflegt sind. Hier verwende ich also immer einen zusammengesetzten Primärschlüssel.

Ja eine fertige SAP Lösung wäre mir natürlich am liebsten - soll aber frühestens 2018 kommen  ;D solange muss ich mir also irgendwie behelfen.

Wurliwurm

Um zwischen "alten" und "neuen" Daten zu unterscheiden, braucht es ein eindeutiges Kriterium. Bei Bewegungsdaten ist die Belegnummer o.ä., oder einen Zeitstempel der letzten Änderung, gerne TIMESTMP oder AEDAT in den SAP benannt.

Die importierende Access-Datenbank kann nicht wissen, was "neu" ist, wenn sie nicht jeden eingefügten Satz vergleicht. Das ist ein allgemeines Problem und keines von Access oder SAP.

Am besten die Primärschlüssel aus dem SAP übernehmen, auch wenn diese alphanummerisch und zusammengesetzt sind. Damit ist dann auch ein JOIN etwa über die Tabellen MARA und MARC über die Materialnummer möglich. Du brauchst die SAP-Schlüssel für den JOIN und die automatischen PK-Indexe aus dem Access bringen hier gar nichts.

ebs17

Mit freundlichem Glück Auf!

Eberhard

Serenia

@Wurliwurm.
Wenn du meinst ich soll die Primärschlüssel übernehmen - meinst du damit, dass ich die gleichen wie in SAP hinterlegt verwenden soll oder meinst du damit, dass das irgendwie automatisch mit herunterzuladen ist? Die Primärschlüssel setze ich ja manuell schon so, ich verwende keine automatischen Indexe - die Materialnummer (und jeweils weitere Spalten) sind immer mein Primärschlüssel.
Aber bei jeder Aktualisierung muss ich diese neu setzen.
Da müsste ich also doch mit Lösch- und Anfügeabfrage arbeiten wie in dem Link von ebs17 beschrieben.

Wurliwurm

Du mußt die gleichen Primärschlüssel setzen wie in den SAP-Tabellen, also auch u.U. mehrspaltige. Die entsprechende Tabelle im Access wird einmal angelegt, mit Schlüsseln, Indexen, Gültigkeitsregeln usw. Dann wird an der Struktur der Tabelle nichts mehr angefaßt.

Das Fortschreiben der Ziel-Tabelle erfolgt dann auf die Weise, wie in dem Link von Eberhard ausführlich beschrieben. Dafür braucht es dann noch eine weitere Interim-Tabelle (~Quelltabelle), wo erstmal aus dem SAP alles hineingekippt wird.

Wenn der Update eh nur einmal einmal im Monat ist und nicht ständig User an der Access-Datenbank angemeldet sind, dann würde *ich zumindest* einfach einmal im Monat alles löschen, die Access-Datei komprimieren und anschließend wieder neu laden. Das wäre am schnellsten und am wenigsten aufwendig. Ich sehe den Mehrwert nicht, bei einer reinen Auswertungsdatenbank Aufwand zu treiben mit inkrementellen Fortschreiben.

Serenia

Ok alles klar, dann werde ich wohl (zumindest vorerst) dabei bleiben und zur Aktualisierung zuerst alles löschen. Sieht man ja dann wie es funktioniert.

Spricht irgendwas dagegen den Import mit dem Import-Makro zu machen? Ich weiß Makros in Access sind irgendwie verpöhnt... es funktioniert aber  ;D

Wurliwurm

Zitat von: Serenia am November 18, 2016, 13:43:32
Spricht irgendwas dagegen den Import mit dem Import-Makro zu machen?

Die Alternative wäre nur Programmierung, mit entsprechendem Lern- und Einarbeitungsaufwand.

Ich würde an Deiner Stelle jedenfalls beim Aufzeichnen der Makros dauf achten, daß von der Makroroutine nichts mehr an der Struktur der Zieltabelle angefaßt wird.

Serenia