alv mit vorgänger - zeile vergleichen

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

alv mit vorgänger - zeile vergleichen

Beitrag von Nadine_2706 (ForumUser / 91 / 16 / 0 ) »
Hallo,

meine alv sieht sieht folgend aus:

| datum | start 1 | ende 1 | start 2 | ende 2|
| 01.01.2001 | 07:00 | 08:15 | 08:15 | 20:00 |
| 01.01.2001 | 19:00 | 21:00 | | |
| 02.01.2001 | 07:00 | 08:15 | 08:15 | 20:00 |
| 02.01.2001 | 20:00 | 21:00 | | |

Mein Programm liest ALV zeilenweise und vergleicht werte: ob start 2 < ende 1, denn es darf sich nicht überschneiden.
wenn ich zeile 2 mit zeile 1 vergleichen möchte bzw. start 1 aus zeile 2 < ende 2 aus zeile 1 -> fehlermeldung!

Wie könnte ich das denn umsetzen, wenn ich zeile 1 und zeile 2 bzw. da wo gleiches datum steht -> vergleiche?

Danke!

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


Re: alv mit vorgänger - zeile vergleichen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hi!

Ich glaub da fehlen noch ein paar Satzzeichen und Worte bevor ich das richtig interprtieren könnte, was du vorhast :oops:

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: alv mit vorgänger - zeile vergleichen

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Ich versteh, was Nadine vorhat, aber nicht die Umsetzung ;)

Wir haben die Struktur mit einem Datum, 2 Start- und Endzeitpunkten.
Der zweite Startzeitpunkt darf nicht vor dem ersten Endzeitpunkt liegen.
Jedoch kann es zu einem Datum mehr als 2 Start-/Endtermine geben, wodurch dann eine neue Zeile erstellt wird.

Wenn man nun den dritten Startzeitpunkt mit dem zweiten Endzeitpunkt vergleichen will, muss man den Startzeitpunkt aus der einen Zeile und den Endzeitpunkt aus der vorherigen Zeile vergleichen, dort, wo das Datum gleich ist natürlich.

Nur wie man das macht, kannst du wohl besser lösen @adt ;)

Re: alv mit vorgänger - zeile vergleichen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hmm...
Versucht es anstatt mit Datum/Uhrzeit mit Zeitstempel, die sind meines Erachtens für Zeitraum-Vergleiche besser geeignet.
Mit CONVERT DATE ... TIME ... INTO TIMESTAMP ... TIMEZONE ... bzw CONVERT TIMESTAMP ... TIMEZONE ... INTO DATE ... TIME ... kann man zwischen den beiden konvertieren und in der Anzeige im ALV kann man entweder eine EDIT-Mask hinterlegen oder sich einen eigenen Konvert-Exit schreiben.
Okay, dass mal dazu.

Wenn ich das jetzt richtig verstanden habe, ist hier eigentlich von einer komprimierten Darstellung die Rede.
Ursprünglich sollte das Ganze in der Datenbank ja so aussehen: Datum|Start|Ende bzw Startdatum|Startzeit|Endedatum|Endezeit
Und um Platz im ALV zu sparen (weil meistens kaum mehr als zwei Werte je Datum gepflegt wurden) sollen diese so angezeigt werden.

Mein Vorschlag:
Eine interne Struktur für den Vergleich (Siehe die erwähnte DB-Struktur) und eine eigene Struktur für die Anzeige. Wenn jetzt Daten verglichen werden sollen, muss man nur die Daten in der internen Struktur miteinander wie gewohnt vergleichen. In der Ausgabe muss man dann nur die Daten der Reihe nach in die entsprechenen Felder eintragen.

Den Befehl würde ich übrigens für den Vergleich empfehlen
LOOP AT ...
AT NEW/FIRST/LAST ...
Damit kann man eine Gruppenstufe auf das Datum festlegen und so alle vergleichen die zu einem Datum gehören.

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: alv mit vorgänger - zeile vergleichen

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Nachsatz:

Code: Alles auswählen.

IF akt-Start BETWEEN old-start AND old-end
OR akt-End BETWEEN old-start AND old-end.
* Das darf nicht sein
ENDIF.
Die Felder "akt" und "old" sind die jeweiligen Tabellenzeilen die du miteinander vergleichst.
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: alv mit vorgänger - zeile vergleichen

Beitrag von Nadine_2706 (ForumUser / 91 / 16 / 0 ) »
Hallo,
vielen Dank für Eure Mithilfe!!!

Ich habe dies nun so gelöst, in dem ich alles in eine Struktur auslagere und da die Werte vergleiche:

Code: Alles auswählen.

    if LS_ALV_OUT is initial.
      move <ALV_OUT> to LS_ALV_OUT.
    else.
      if <ALV_OUT>-DATUM eq LS_ALV_OUT-DATUM and LS_ALV_OUT-TIM_END gt LS_ALV_OUT-TRT_BEG.
        perform  FEHLER_ZEILE  using     'C'  'Reise- oder Arbeitszeiten überschneiden sich'
                                   changing  <ALV_OUT>  .

      endif.
      move <ALV_OUT> to LS_ALV_OUT.
    endif.
Und dies funktioniert!

Danke nochmals!!!!

Seite 1 von 1

Vergleichbare Themen

6
Antw.
2138
Views
ALV - Zeile zum Vorgänger einfügen
von Nadine_2706 » 12.09.2011 10:58 • Verfasst in ABAP® für Anfänger
10
Antw.
2388
Views
Vorgänger und Nachfolger einer Spalte
von Bjuti » 21.01.2014 16:19 • Verfasst in ABAP® für Anfänger
1
Antw.
1762
Views
Liest READ Zeile für Zeile oder aufeinmal
von bohne » 26.11.2006 16:46 • Verfasst in ABAP® für Anfänger
1
Antw.
266
Views
3
Antw.
1989
Views
Zellen im ALV vergleichen
von Dörk » 25.11.2005 14:38 • Verfasst in ABAP® Core

Ü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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 6 Stunden von Bright4.5 1 / 138
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1780
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8381