Der Inhalt der internen Tabelle i_tab wird in i_tab_safe gesichert.
i_tab wird gecleared und erhält einen neuen Inhalt. Dieser soll nun mit dem Inhalt aus dem ersten Durchlauf, der in i_tab_safe gesichert wurde, abgeglichen werden.
Bedingungen:
1. Befindet sich ein Datensatz aus i_tab bereits in i_tab_safe soll dieser erhalten bleiben.
2. Befindet sich ein Datensatz aus i_tab nicht in i_tab_safe, soll dieser in i_tab_safe eingefügt werden.
3. Alle Datensätze aus i_tab_safe die nicht in i_tab enthalten sind, sollen gelöscht werden.
ok stimmt ich hab mich verschrieben sorry.
Ich Versuch es an einem Beispiel zu erklären:
1. Durchlauf: i_tab bekommt folgende Werte --> KG80; KG100; KG120 --> gesichert in i_tab_safe.
2. Durchlauf: i_tab bekommt folgende Werte --> KG120; KG130 --> nun soll in i_tab_safe nur noch KG120 übrig bleiben und KG130 dazukommen, da KG130 größer ist als der größe Wert aus i_tab_safe (KG120).
3. Durchlauf: i_tab bekommt folgende Werte --> KG80; KG125; KG130 --> nun soll in i_tab_safe nur noch KG130 übrig bleiben. KG125 soll dazukommen da es zwischen dem kleinsten (KG120) und dem größten (KG130) Wert aus i_tab_safe liegt.
KG80 soll ignoriert werden da es kleiner ist als der kleinste Wert aus i_tab_safe (KG120).
Das Ergebnis nach dem 3. Durchlauf sieht auf i_tab_safe also wie folgt aus: KG125; KG130.
Bedingunen sind also:
1. Befindet sich ein Wert nach dem aktuellen Durchlauf schon auf i_tab_safe, bleibt dieser dort stehen.
2. Bei einem neuen Wert wird dieser nur dann hinzugefügt, wenn der Wert nicht kleiner ist als der kleinste Wert aus i_tab_safe.
3. Der neue Wert darf also nur größer als der größte Wert von i_tab_safe sein oder kann zwischen dem kleinsten und dem größten Wert aus i_tab_safe liegen.
4. Alle neuen Werte die kleiner als der kleinste Wert von i_tab_safe sind sollen ignoriert werden.
Ich hoffe das ist halbwegs verständlich erklärt. Ich bin schon schier am verzweifeln wie ich das programmtechnsich umsetzen soll. Deshalb würde ich mich über eure Antworten und Vorschläge freuen.
Hallo Artie,
nur so auf die schnelle in Pseudocode:
(funktioniert bereits beim 1. Durchlauf)
1. Bestimme den kleinsten Wert der i_tab_safe (safe_min).
2. Bestimme den kleinsten Wert der i_tab (min).
3. delete i_tab_save where wert < min
4. delete i_tab where wert < safe_min
5. Insert lines of i_tab into i_tab_safe (d.h. anhängen)
6. sort i_tab_safe
7. delete adjacent duplicates i_tab_safe
Dieser Algorithmus ist natürlich nur möglich, wenn Du die i_tab später nicht mehr brauchst.
Ansonsten musst Du 4. und 5. ersetzen durch ein
loop itab where wert >= safe_min.
insert i_tab into i_tab_safe.
endloop.
MfG
Thomas R.
Folgende Benutzer bedankten sich beim Autor Thomas R. für den Beitrag: Artie200