Anhand des Stichtags die letzten Datensätze ermitteln

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Anhand des Stichtags die letzten Datensätze ermitteln

Beitrag von kaim77 (Specialist / 200 / 0 / 0 ) »
Guten Abend,

ich habe folgendes Problem. Es gibt eine Tabelle ZGH_PART. Die Tabell hat die Spalten
Partnr, begda, endda, exist und noch andere Spalten.

Ich möchte ein Stichtag vorgeben. Z.B. 11.12.2022. Dann sollen die Datensätze zurückgegeben werden, wo der Stichtag entweder zwischen endda und begda liegt oder der Stichtag größer als endda ist.

D.h. der aktuellste Datensatz mit exist = '2' aller Partnr' soll zurückgegeben werde,

Wie müsste der select hier aussehen?

Z.B. wenn der 06.01.2022 als Stichtag vorgeben wurde und die Tabelle

Partnr Endda Begda exist
4711 20211201 20210511 2
4711 20210411 20210120 2

Hier muss 4711 20211201 20210511 2 zurückgegeben werden.

Wenn als Stichtag 02.02.2021 angegeben wird, dann soll
4711 20210411 20210120 2 zurückgegeben.
Das ganze soll für alle Partnr durchlaufen werden.

Danke für eure Hilfen.
Kaim



Danke
Viele Grüße
Kaim

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


Re: Anhand des Stichtags die letzten Datensätze ermitteln

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,

select * from
where Stichtag >= begda
and exist = 2

Gruß Wolfgang

Re: Anhand des Stichtags die letzten Datensätze ermitteln

Beitrag von Shortcut IT (ForumUser / 52 / 2 / 18 ) »
Hallo,
ich wüsste jetzt nicht, wie es mit einem SELECT allein getan sein sollte, da du ja entweder den aktuellsten Satz haben willst, dessen Stichtag in BEGDA...ENDDA reinfällt oder - wenn sich dazu keiner findet - den mit den jüngsten BEGDA/ENDDA.
Der SELECT von @wreichelt ist geeignet, liefert aber ggf. mehrere Sätze pro PARTNR.
Ich würde eine interne Tabelle verwenden und dort ältere Sätze pro PARTNR entfernen.

Code: Alles auswählen.

select * from ZGH_PART into table @data(zghPartners)
    where begda <= @stichtag and exist = '2'
    order by partnr ascending, begda descending.
delete adjacent duplicates from zghPartners comparing partnr.
loop at zghPartners assigning field-symbol(<p>).
  write:/ <p>-partnr, <p>-begda, <p>-endda.
endloop.
Frohes neues Jahr!
Shortcut IT

Re: Anhand des Stichtags die letzten Datensätze ermitteln

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,

er wollte doch

Dann sollen die Datensätze zurückgegeben werden, wo der Stichtag entweder zwischen endda und begda liegt oder der Stichtag größer als endda ist.


Gruß Wolfgang

Re: Anhand des Stichtags die letzten Datensätze ermitteln

Beitrag von Shortcut IT (ForumUser / 52 / 2 / 18 ) »
Hallo,
ja, aber er wollte nur einen pro Partnr.
D.h. der aktuellste Datensatz mit exist = '2' aller Partnr' soll zurückgegeben werde,
Gruß
Shortcut IT

Re: Anhand des Stichtags die letzten Datensätze ermitteln

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »

Code: Alles auswählen.

select * from ZGH_PART into table @data(zghPartners)
    where exist = '2'
      AND begda = SELECT( MAX(begda) FROM ZGH_PART
                                     WHERE begda <= @stichtag
                                      AND PARTNR = ZGH_PART-PARTNR ). 


loop at zghPartners assigning field-symbol(<p>).
  write:/ <p>-partnr, <p>-begda, <p>-endda.
endloop.
Gruß Hendrik

Re: Anhand des Stichtags die letzten Datensätze ermitteln

Beitrag von Shortcut IT (ForumUser / 52 / 2 / 18 ) »
Hallo @JHM,
hast du das mal probiert? Bei mir rutscht das nicht durch den Syntax-Check. Von fehlenden Spaces (

Code: Alles auswählen.

...MAX( begda )...
) abgesehen funktioniert der Bezug

Code: Alles auswählen.

...AND PARTNR = ZGH_PART-PARTNR ).
nicht (Field...is unknown.). Auch nicht mit Verwendung eines Alias.
Gruß
Shortcut IT

Re: Anhand des Stichtags die letzten Datensätze ermitteln

Beitrag von Shortcut IT (ForumUser / 52 / 2 / 18 ) »
Hallo,
mit der Tilde statt Bindestrich funktioniert es dann doch:

Code: Alles auswählen.

select * from ZGH_PART into table @data(zghPartners)
    where exist = '2'
      AND begda = ( SELECT MAX( begda ) FROM ZGH_PART
                                     WHERE begda <= @stichtag
                                      AND PARTNR = ZGH_PART~partnr
                                      and exist = '2' ).
loop at zghPartners assigning field-symbol(<p>).
  write:/ <p>-partnr, <p>-begda, <p>-endda.
endloop.
Viele Grüße
Shortcut IT

Seite 1 von 1

Vergleichbare Themen

5
Antw.
7004
Views
Alter ermitteln anhand Geburtsdatum
von Andreas Schlender » 23.05.2007 12:11 • Verfasst in ABAP® für Anfänger
0
Antw.
1405
Views
Nachrichtenfindung anhand KalkSchema ?
von the » 23.02.2005 10:20 • Verfasst in ABAP® für Anfänger
0
Antw.
1060
Views
Sortierung anhand von Tabellenspalten
von Lamerman » 18.05.2006 14:33 • Verfasst in ABAP® Core
0
Antw.
2527
Views
EWM: HU mit RBG anhand von Produkt-LB bewegen
von TimTo » 14.02.2019 15:08 • Verfasst in Sonstige Module
4
Antw.
3200
Views
SELECT der letzten ID
von the-FoX » 18.01.2005 18:11 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Regex in where
vor 9 Stunden von tar 8 / 244
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1533
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 180
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 418

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

Regex in where
vor 9 Stunden von tar 8 / 244
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1533
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 180
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 418

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 126
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3300
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9857