Ein Programm sollte je Min. pro Tag in einer Tabelle nachgucken und ...

Getting started ... Alles für einen gelungenen Start.
35 Beiträge • Seite 1 von 3 (current) Nächste
35 Beiträge Seite 1 von 3 (current) Nächste

Ein Programm sollte je Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von HH_ABAP (Specialist / 262 / 144 / 1 ) »
Hallo,

ich sollte ein Programm programmieren, dass je ? Min. pro Tag in einer Tabelle nachgucken, ob das Feld X geändert wurde oder nicht. Wenn ja, sollte in einem anderen Feld in einer anderen Tabelle schreiben.

Wie kann ich diese überwachung programmieren?

Vielen Dank im Voraus!

VG
Zuletzt geändert von HH_ABAP am 25.05.2023 15:45, insgesamt 1-mal geändert.

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


Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von Wann (ForumUser / 57 / 3 / 15 ) »
Du kannst mal schauen, ob die Tabellen CDHDR und CDPOS die Änderungen des Feldes speichern. Dann wäre eventuell nur noch Teil 2 der Aufgabe relevant.

Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von Bright4.5 (Specialist / 265 / 21 / 1 ) »
Vielleicht das Programm so schreiben, dass es später als Batch-Job alle 5 Minuten läuft und dann einen Update auf der DB-Tabelle macht? Wobei ich einen Batch-Job mit allen 5 Minuten schon recht heftig finden würde....

Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von HH_ABAP (Specialist / 262 / 144 / 1 ) »
Bright4.5 hat geschrieben:
19.05.2023 16:02
Vielleicht das Programm so schreiben, dass es später als Batch-Job alle 5 Minuten läuft und dann einen Update auf der DB-Tabelle macht? Wobei ich einen Batch-Job mit allen 5 Minuten schon recht heftig finden würde....
Hallo,

vielen Dank für die Antwort.

Wie sollte automatisch einen Update auf der DB-Tabelle gemacht werden?

VG

Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von Bright4.5 (Specialist / 265 / 21 / 1 ) »
Hallo HH_ABAP,

ja, also z.B:

Code: Alles auswählen.


Update db-tabelle set field = new_wert
                          where field_2 = wert_vergleich

COMMIT WORK.

Also du schreibst ein Programm schaust, ob sich der Wert geändert hat, wenn ja nimmst du ihn als Datensatz in eine interne Tabelle auf. Danach loopst du über alle Werte und machst ein Update auf der Datenbank. Du setzt den neuen Wert dabei mit dem Schlüsselwort Set und vergleichst wo es rein soll mit Where.

Danach planst du das Programm als Job ein (ich glaube in der SM36, habe leider gerade kein System zur Hand) und lässt es alle 5 Minuten laufen.

Ob die Lösung so elegant ist, sei mal dahingestellt, aber was besseres würde mir so auf Anhieb auch nicht einfallen. Vielleicht hat da ja noch jeamand eine bessere Idee. Oder du gibst noch ein paar mehr Informationen preis, um was für ein Feld es sich da genau handeln würde : ) Dann könnte man da vielleicht auch noch mal besser darüber nachdenken.

Folgende Benutzer bedankten sich beim Autor Bright4.5 für den Beitrag:
HH_ABAP


Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ja, die Einplanung via SM36/SM37 ist hier der Weg. Ich habe auch so einen Job im Einsatz (ein selbst gebautes Verbucherframework). Allerdings habe ich da als 2. Step des Jobs einen Aufruf, mit dem der Job seine eigenen alten Joblogs löscht. Ansonsten entstehen über den Tage (die Tage) schnell riesige Logmengen, wenn alle 5 Minuten ein Log geschrieben wird.

Das würde ich bei einem derart häufig laufenden Job auch dringend empfehlen. Wobei der Job selbst dann natürlich ein eigenes, aussagekräftiges Log führen sollte, aus dem besser suchbar und mit weniger Datenmüll hervorgeht, wann er was gemacht hat und mit welchem Ergebnis.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
HH_ABAP


Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von HH_ABAP (Specialist / 262 / 144 / 1 ) »
@Bright4.5
@DeathAndPain

vielen Dank für die Antwort.

1. Wie sollte ein Programm schauen, ob sich der Wert geändert hat?

2. Wie kann ich in mit dem Job, seine eigenen alten Joblogs löschen?

Vielen Dank im Voraus!
VG
Zuletzt geändert von HH_ABAP am 20.05.2023 10:06, insgesamt 1-mal geändert.

Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von HH_ABAP (Specialist / 262 / 144 / 1 ) »
Bright4.5 hat geschrieben:
19.05.2023 18:36
Also du schreibst ein Programm schaust, ob sich der Wert geändert hat, wenn ja nimmst du ihn als Datensatz in eine interne Tabelle auf.
Wie denn? 😊 Wie sollte ein Programm schauen, ob sich der Wert geändert hat?

Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Im einfachsten Fall enthält die zu prüfende Tabelle eine Spalte mit dem letzten Änderungsdatum. Bei vielen SAP-Tabellen ist das der Fall, bei Deinen eigenen Tabellen kannst Du so eine Spalte problemlos hinzufügen.

Wenn es das nicht gibt, wird es schwierig. Dann könntest Du nur eine zusätzliche Logtabelle anlegen. Entweder enthält diese dann eine Kopie Deiner zu prüfenden Daten, so dass Du immer mit Deiner Logtabelle vergleichen und damit Änderungen erkennen kannst. Oder - und das wäre deutlich speicherplatzschonender, wenngleich rechenintensiver - Deine Logtabelle enthält nur denselben Primärschlüssel wie Deine zu prüfende Tabelle und dazu eine Spalte mit einem über die übrigen Spalten berechneten Hashwert.

Ein dritter Weg (und eigentlich ist das der professionelle) besteht darin, direkt bei jeglichen Änderungen an der Tabelle einen Änderungsmarker zu setzen, z.B über einen BADI oder User Exit (oder direkt in Deinem Programm, wenn das die Tabelle selber ändert). Das kann eine Spalte "geändert" in der Tabelle selbst sein oder eine Zeile in einer zugehörigen Logtabelle. Dann kannst Du nachher einfach all diese Zeilen lesen und hast dann die geänderten.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
HH_ABAP


Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von HH_ABAP (Specialist / 262 / 144 / 1 ) »
Hallo DeathAndPain,

vielen Dank für die Antwort.

Ich habe festgestellt, wenn der Wert sich ändert, wird es in Tabellen CDHDR und CDPOS mit änderungsdatum, Zeit, oldvalue und newvalue gespeichert.

ich weiß nicht, wie es weiter geht:
1. ich soll änderungsdatum und Zeit aus Tabellen CDHDR und CDPOS in Variablen speichern.
2. ?
3. ?
Wie geht es weiter?

Vielen Dank im Voraus!
VG

Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Du musst Dir doch nur irgendwie merken, wann Du das letzte Mal auf Änderungen geprüft hast (Datum und Uhrzeit). Beim nächsten Mal selektierst Du alle Tabelleneinträge, deren Änderungsdatum und -zeit danach liegen. Das sind die Einträge, die sich geändert haben.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
HH_ABAP


Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von wreichelt (Top Expert / 1031 / 29 / 188 ) »
Du kannst doch ein kleines Programm schreiben

- lese den zu prüfenden Satz
- im Memory (Import) Holst du den letzen gemerkten Eintrag
- Vergleichen
— nicht geändert, nichts tun
— geändert, jetzt im Memory (Export) merken
— und in deinen Satz wegschreiben
. Fertig

Wegen der Joblogs hat die Basis ein Programm das die Dinger putzt

Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag:
HH_ABAP


Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von HH_ABAP (Specialist / 262 / 144 / 1 ) »
DeathAndPain hat geschrieben:
20.05.2023 20:15
Du musst Dir doch nur irgendwie merken, wann Du das letzte Mal auf Änderungen geprüft hast (Datum und Uhrzeit). Beim nächsten Mal selektierst Du alle Tabelleneinträge, deren Änderungsdatum und -zeit danach liegen. Das sind die Einträge, die sich geändert haben.
Ja, soll ich eine DB-Tabelle (Z-Tabelle) anlegen und die letzte überprüfung in der Tabelle speichern (Datum und Zeit), oder?
Dann nach 14 Tage sollten die Einträge aus der Tabelle gelöscht werden, damit die Tabelle nicht schnell voll wird, oder?

Vielen Dank im Voraus!
VG

Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von HH_ABAP (Specialist / 262 / 144 / 1 ) »
wreichelt hat geschrieben:
20.05.2023 21:25
Wegen der Joblogs hat die Basis ein Programm das die Dinger putzt
Wie heißt dieses Programm? Wie finde ich das?

Vielen Dank im Voraus!
VG

Re: Ein Programm sollte je 5 Min. pro Tag in einer Tabelle nachgucken und ...

Beitrag von wreichelt (Top Expert / 1031 / 29 / 188 ) »
RSBTCDEL zum Löschen alter Hintergrund-Joblogs

Gruß Wolfgang

Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag:
HH_ABAP


Vergleichbare Themen

1
Antw.
1807
Views
Programm Laufzeit Tabelle
von Neroringer » 22.11.2006 16:57 • Verfasst in ABAP® Core
0
Antw.
1040
Views
Programm RLLNACH1 nach Z-Tabelle selektieren lassen
von max1 » 13.02.2007 14:58 • Verfasst in ABAP® für Anfänger
3
Antw.
718
Views
0
Antw.
2356
Views
LSMW Programm in ABAP Programm überführen
von mherke » 07.02.2007 15:02 • Verfasst in ABAP® für Anfänger
2
Antw.
2895
Views
Programm aus anderem Programm heraus aufrufen
von Namp » 27.03.2006 13:34 • Verfasst in SAP - Allgemeines

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