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 / 4155 / 134 / 958 ) »
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 / 2004 / 271 / 424 ) »
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 / 2004 / 271 / 424 ) »
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 / 4477 / 229 / 1203 ) »
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 / 2004 / 271 / 424 ) »
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 / 2004 / 271 / 424 ) »
Nice. Aber da versteht erst recht kein Dritter mehr, was da passiert. :-D

Seite 1 von 1

Vergleichbare Themen

3
Antw.
6810
Views
Werte aus zwei unterschiedlichen Tabellen vergleichen
von blaah » 14.07.2010 10:56 • Verfasst in ABAP® für Anfänger
5
Antw.
6267
Views
quelltext vergleichen
von kostonstyle » 07.07.2008 09:15 • Verfasst in ABAP® für Anfänger
4
Antw.
1285
Views
Tabellen vergleichen
von Frank Schmitt » 11.05.2020 14:51 • Verfasst in ABAP® für Anfänger
7
Antw.
5334
Views
itabs vergleichen?
von asdfjklö » 05.09.2008 11:59 • Verfasst in ABAP® für Anfänger
6
Antw.
20303
Views
Feldwerte vergleichen
von Formularius » 19.02.2025 15:44 • Verfasst in SAP - Allgemeines

Aktuelle Forenbeiträge

Zukunft des ABAP Entwicklers
Gestern von ewx 9 / 680
Prüfzeugnisse Anlagen finden
Gestern von ewx gelöst 2 / 225
Spool vereinen OTF und PDF
vor 5 Tagen von anna2205 1 / 157
HR in der Zukunft?
vor einer Woche von waltersen 5 / 2651

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.

Aktuelle Forenbeiträge

Zukunft des ABAP Entwicklers
Gestern von ewx 9 / 680
Prüfzeugnisse Anlagen finden
Gestern von ewx gelöst 2 / 225
Spool vereinen OTF und PDF
vor 5 Tagen von anna2205 1 / 157
HR in der Zukunft?
vor einer Woche von waltersen 5 / 2651

Unbeantwortete Forenbeiträge

Spool vereinen OTF und PDF
vor 5 Tagen von anna2205 1 / 157
XSLT und Loipro05 Transformation
letzen Monat von Torsten1965 1 / 6332
VOLL Artikel in einem Display Typ 12
November 2025 von ThomasM84 1 / 24051