Werte zwischen benachbarten Zeilen vergleichen

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

Werte zwischen benachbarten Zeilen vergleichen

Beitrag von Barney (Specialist / 104 / 20 / 9 ) »
Hallo, ich habe folgende Anforderung, aber leider noch keine schlaue Idee, wie ich das geschickt umsetzen kann.

Man stelle sich folgende Tabelle vor:

ID Wert
1 _
2 _
3 X
4 _
5 _
6 X
7 X
8 _
9 _

In den Zeilen 3, 6 und 7 sind die Werte gesetzt, in den anderen Zeilen der Tabelle sind die Werte leer. Ich möchte jetzt die Zeilen rausbekommen, wo der Wert gesetzt ist und gleichzeitig in der Zeile davor UND danach nicht (in meinem Beispiel Zeile 3). Mir schwebt sowas vor, dass über die Tabelle loope und mir eine Hilfstabelle aufbaue, wo Feld1 der Wert aus der Vorzeile, Feld2 der aktuelle Wert und Feld3 der Wert aus der nächsten Zeile ist. Das wäre aber ein wüstes Schreiben und Aktualisieren der Hilfstabelle während des Loops (max. 3x pro Durchlauf). Bevor ich mich daran mache, würde ich gerne wissen, ob jemand eine schlauere Idee hat...

Danke und tot ziens

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


Re: Werte zwischen benachbarten Zeilen vergleichen

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Folgendes Pseudocoding könnte das machen ohne Zusatztabellen und Single-Pass:

Code: Alles auswählen.

loop at itab assigning <fs1>.

  if <fs2> is assigned and <fs3> is assigned.
* Hier kannst du jetzt deine Sachen machen.  <fs1>,<fs2> und <fs3> sind 3 aufeinanderfolgende Zeilen, wobei <fs1> die am weitesten unten stehende Zeile ist
  endif.

* direkt vor dem Endloop ein bisschen Assignmentspielerei um die nächste Zeile vorzubereiten.
  if <fs2> is assigned>. 
    assign <fs2> to <fs3>.
  endif.
  assign <fs1> to <fs2>.

endloop.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
DeathAndPainBarney

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Werte zwischen benachbarten Zeilen vergleichen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Nette Lösung. Ich hätte es mit Puffervariablen gemacht, aber Feldsymbole sind an dieser Stelle wohl noch eleganter.

Re: Werte zwischen benachbarten Zeilen vergleichen

Beitrag von Barney (Specialist / 104 / 20 / 9 ) »
Genau so was elegantes hab ich gesucht... ich stelle fest: ich muss mehr mit Feldsymbolen arbeiten... DANKE!

Re: Werte zwischen benachbarten Zeilen vergleichen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ob das die richtige Konsequenz ist... in diesem Falle macht sich das ganz gut, aber in vielen Fällen machen Feldsymbole den Code eher unübersichtlich. Meistens ist es besser lesbar und verständlich, wenn man mit diskreten Variablen arbeitet (was auch hier möglich, in diesem speziellen Fall aber nicht überlegen gewesen wäre).

Natürlich gibt es auch Situationen, in denen man an Feldsymbolen nicht vorbeikommt.

Re: Werte zwischen benachbarten Zeilen vergleichen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Die CASE-Lösung habe ich auch favorisiert, bis ich auf die mit dem NS/CS gekommen bin. Die ist viel kürzer und wenn man einmal begriffen hat, wie sie funktioniert, IMHO auch besser lesbar.
DeathAndPain hat geschrieben:Ob das die richtige Konsequenz ist... in diesem Falle macht sich das ganz gut, aber in vielen Fällen machen Feldsymbole den Code eher unübersichtlich. Meistens ist es besser lesbar und verständlich, wenn man mit diskreten Variablen arbeitet (was auch hier möglich, in diesem speziellen Fall aber nicht überlegen gewesen wäre).

Natürlich gibt es auch Situationen, in denen man an Feldsymbolen nicht vorbeikommt.
Wenn man das mit den Feldsymbolen einmal begriffen hat und weiss wie sie funktionieren, .......

Deine Postings klingen so, als ob immer nur Deine Loesung, die beste Loesung und best lesbare Loesung ist.

Re: Werte zwischen benachbarten Zeilen vergleichen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Unit605 hat geschrieben:Deine Postings klingen so, als ob immer nur Deine Loesung, die beste Loesung und best lesbare Loesung ist.
Jeder Programmierer ist von sich selbst überzeugt sein Code sei der Beste. :P
Man darf sich nur nicht verrennen und andere Meinungen komplett ignorieren. Sonst bleibt man in der Entwicklung stehen und verliert den Anschluss.
Die Postings von DeathAndPain erinnern mich ein wenig an die Demoszene, möglichst viel in möglichst wenig Code zu erreichen. Dieses Paradigma ist aber auf ABAP und seine "Geschwätzigkeit" nur bedingt anwendbar.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Werte zwischen benachbarten Zeilen vergleichen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Die Postings von DeathAndPain erinnern mich ein wenig an die Demoszene, möglichst viel in möglichst wenig Code zu erreichen.
Ist dieser Thread hier nicht das beste Gegenbeispiel? Kürzer wird der Code bei Verwendung von Feldsymbolen allemal, weil man sich nämlich den INSERT oder MODIFY-Befehl spart. Aber er wird eben in vielen Fällen auch um Größenordnungen schlechter nachvollziehbar, insbesondere für andere Menschen als denjenigen, der den Code geschrieben hat, und da sage ich ganz klar, dass mir der Preis zu hoch ist.

Re: Werte zwischen benachbarten Zeilen vergleichen

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Einfach aus Interesse.
Ich hätte da noch eine andere Variante, die aber nur funktioniert, wenn ID character Format hat (in meinem Beispiel NUMC).

Code: Alles auswählen.

REPORT.

data:   begin of watab,
              id    type n length 2,
              value type c,
        end   of watab.
data:   itab        like standard table of watab.

perform append_itab
  using: '_', '_', 'X', '_', '_', 'X', 'X', '_', '_', '_', 'X', '_'.

loop at itab assigning field-symbol(<wa>)
     from 2 to lines( itab ) - 1
     where value = abap_true.
     FIND  all occurrences of '_' in table itab
           from sy-tabix - 1  to   sy-tabix + 1
           match count sy-index.
     if   sy-index = 2.
          write: /01 sy-tabix.
     endif.
endloop.

form append_itab   using i_value type c.
 append initial line to itab assigning field-symbol(<wa>).
 <wa>-id = lines( itab ) + 1.
 <wa>-value = i_value.
endform.

Re: Werte zwischen benachbarten Zeilen vergleichen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Nice. Aber da versteht erst recht kein Dritter mehr, was da passiert. :-D

Seite 1 von 1

Vergleichbare Themen

3
Antw.
5870
Views
Werte aus zwei unterschiedlichen Tabellen vergleichen
von blaah » 14.07.2010 10:56 • Verfasst in ABAP® für Anfänger
4
Antw.
2702
Views
Abhängige Werte-Liste (F4-Werte)
von Gast » 27.12.2005 10:34 • Verfasst in ABAP® Core
9
Antw.
3818
Views
Entwicklungsobjekte vergleichen
von BesenWesen » 06.12.2005 13:05 • Verfasst in Basis
2
Antw.
5221
Views
Strukturen vergleichen
von snooze » 17.01.2005 09:25 • Verfasst in ABAP® Core
4
Antw.
542
Views
Tabellen vergleichen
von Frank Schmitt » 11.05.2020 14:51 • Verfasst in ABAP® für Anfänger

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