Vergleich von internen Tabellen

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

Vergleich von internen Tabellen

Beitrag von Artie200 (ForumUser / 17 / 2 / 0 ) »
Hallo,

ich habe folgendes Problem:

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.

Wie würde der Abgleich aussehen?

Vielen Dank im Vorraus.

Gruß
Artie200

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


Re: Vergleich von internen Tabellen

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Sorry, entweder versteh ich deine Bedingungen nicht, oder du hast dich irgendwie verschrieben.

Der Abgleich laut deinen Bedingungen wäre: i_tab_safe[] = i_tab[].

Re: Vergleich von internen Tabellen

Beitrag von Artie200 (ForumUser / 17 / 2 / 0 ) »
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.

Re: Vergleich von internen Tabellen

Beitrag von Thomas R. (Expert / 754 / 74 / 34 ) »
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


Re: Vergleich von internen Tabellen

Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »
Hallo Artie,
hallo Thomas,

wenn ich Arties Aussagen richtig verstehe, sollte der Pseudocode etwas anders aussehen.

Falls i_tab_safe initial
2. i_tab_safe = i_tab.

sonst
1. Bestimme den kleinsten Wert der i_tab_safe (safe_min).
2. i_tab_safe = i_tab.
3. delete i_tab_safe where wert < safe_min
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Vergleich von internen Tabellen

Beitrag von Artie200 (ForumUser / 17 / 2 / 0 ) »
Vielen Dank für eure Ideen.
@ Thomas ich habe deine Idee umgesetzt und es funktioniert. Danke :-)

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2020
Views
Tabellen-Vergleich FuBa ??
von gabo » 16.12.2007 19:03 • Verfasst in ABAP® Core
2
Antw.
2143
Views
Vergleich Inhalt zweier DB-Tabellen
von schuessler » 12.07.2007 10:40 • Verfasst in ABAP® Core
3
Antw.
3623
Views
Vergleich Customizing Tabellen auf zwei Systemen
von hausi » 13.11.2018 11:04 • Verfasst in ABAP® Core
4
Antw.
6402
Views
gruppieren von internen Tabellen
von debianfan » 18.01.2018 03:17 • Verfasst in ABAP® für Anfänger
3
Antw.
3835
Views
feldkatalog von internen tabellen?
von ismailer » 17.01.2005 11:47 • Verfasst in ABAP Objects®

Über diesen Beitrag


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.