Select-Befehl : Artikel-Liste mit jüngstem Wert

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

Select-Befehl : Artikel-Liste mit jüngstem Wert

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo,

bin etwas raus aus abap.
Deshalb diese Frage:

Ich such folgenden Selekt-Befehl (in einem Statement)

Ich such für bestimmte Artikel den Letzwert bzw. den jüngsten Preis.
Ich krieg's nicht mehr hin - hier meine Ansätze mit einem subquery:

* select * from ztab into table gt_itab
* where aedat = ( select max( aedat ) from ztab
* where matnr in s_matnr
* and aedat le p_datum
* and ebeln in s_ebeln
* and ebelp in s_ebelp ).

Wer kann helfen?

Es geht natürlich mit folgendem Workaround , aber Ich möchte ein Statement:

Code: Alles auswählen.

  
  select * from ztab appending corresponding fields of table gt_ztab
            where matnr in s_matnr
             and ebeln in s_ebeln
             and ebelp in s_ebelp
             and aedat le p_datum
             order by matnr aedat descending.

  loop at gt_ztab into za.
    at new matnr.
      move-corresponding za to wa.
      append wa to gt_itab.
    endat.
  endloop.

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


Re: Select-Befehl : Artikel-Liste mit jüngstem Wert

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
Asaph hat geschrieben:Wer kann helfen?
Du brauchst wegen dem SubSelect die meisten WHERE-Abfragen zweimal:
einmal für den Hauptselect gegen die Werte des SelScreen
einmal für den SubSelect gegen die Werte eines Hauptsatzes:

Code: Alles auswählen.

  select * from ztab into table gt_itab
            where matnr in s_matnr
               and aedat le p_datum
               and ebeln in s_ebeln
               and ebelp in s_ebelp 
               and aedat =  ( select max( aedat ) from ztab AS sub
                                      where sub~matnr EQ ztab-matnr
                                      and sub~aedat le p_datum
                                      and sub~ebeln EQ ztab-ebeln
                                      and sub~ebelp EQ ztab-ebelp ).
Ob das Coding 100% sinn macht kann ich nicht sagen, da ich die Tabellendefintion von ZTAB nicht kenne. ebeln/ebelp sollte immer auf eine Materialnr. referenzieren oder sind das Beistellmaterialien, dann gäbe es wiederum n-fach die Materialnummer je ebeln/ebelp.
Auch die Abfrage mit LE p_datum im SubSelect kann evtl. entfallen, je nachdem was man haben möchte.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
Asaph

Gruß Hendrik

Re: Select-Befehl : Artikel-Liste mit jüngstem Wert

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Danke, bringt mich weiter, so sieht es jetzt aus:

Code: Alles auswählen.

 select * from ztab as z into table gt_ztab
             where matnr in s_matnr
                and aedat le p_datum
                and ebeln in s_ebeln
                and ebelp in s_ebelp
                and aedat =  ( select max( distinct aedat ) from Ztab AS sub
                                       where sub~matnr EQ z~matnr )
                order by matnr                                  .

  delete adjacent duplicates from  gt_ztab comparing matnr.
Es gibt tatsächlich Einträge mit gleichem AEDAT , die ich wieder eliminiere...
Oder gibt es hier auch noch eine Verbesserung ?

lg
Andreas

Re: Select-Befehl : Artikel-Liste mit jüngstem Wert

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
Asaph hat geschrieben: Es gibt tatsächlich Einträge mit gleichem AEDAT , die ich wieder eliminiere...
Oder gibt es hier auch noch eine Verbesserung ?
Schau dir mal den Zusatz DISTINCT beim Select an.
Gruß Hendrik

Re: Select-Befehl : Artikel-Liste mit jüngstem Wert

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Versuch doch mal folgendes:

Code: Alles auswählen.

 select * from ztab appending corresponding fields of table gt_ztab  UP TO 1 rows
            where matnr in s_matnr
             and ebeln in s_ebeln
             and ebelp in s_ebelp
             and aedat le p_datum
             order by aedat ASCENDING.

Re: Select-Befehl : Artikel-Liste mit jüngstem Wert

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Unit605 hat geschrieben:Versuch doch mal folgendes:

Code: Alles auswählen.

 select * from ztab appending corresponding fields of table gt_ztab  UP TO 1 rows
            where matnr in s_matnr
             and ebeln in s_ebeln
             and ebelp in s_ebelp
             and aedat le p_datum
             order by aedat ASCENDING.
Die Idee würde ich auch empfehlen, allerdings mit DESCENDING, da ja das jüngste Datum gesucht wird. :)
Gruß,
der Matze

Re: Select-Befehl : Artikel-Liste mit jüngstem Wert

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Thanatos82 hat geschrieben:
Unit605 hat geschrieben:Versuch doch mal folgendes:

Code: Alles auswählen.

 select * from ztab appending corresponding fields of table gt_ztab  UP TO 1 rows
            where matnr in s_matnr
             and ebeln in s_ebeln
             and ebelp in s_ebelp
             and aedat le p_datum
             order by aedat ASCENDING.
Die Idee würde ich auch empfehlen, allerdings mit DESCENDING, da ja das jüngste Datum gesucht wird. :)
Bist Du Dir sicher? Hast Du es mal ausprobiert?

Re: Select-Befehl : Artikel-Liste mit jüngstem Wert

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Unit605 hat geschrieben:
Thanatos82 hat geschrieben:
Unit605 hat geschrieben:Versuch doch mal folgendes:

Code: Alles auswählen.

 select * from ztab appending corresponding fields of table gt_ztab  UP TO 1 rows
            where matnr in s_matnr
             and ebeln in s_ebeln
             and ebelp in s_ebelp
             and aedat le p_datum
             order by aedat ASCENDING.
Die Idee würde ich auch empfehlen, allerdings mit DESCENDING, da ja das jüngste Datum gesucht wird. :)
Bist Du Dir sicher? Hast Du es mal ausprobiert?
Probiert habe ich es nicht, aber wenn ich ascending nach Datum sortiere erhalte ich das kleinste Datum, also das älteste zuerst (z.B. 20160101) und das jüngste damit zuletzt (z.B. 20161013), daher bin ich mir ziemlich sicher, dass es descending sein müsste. Wobei du mich jetzt ein wenig ins Zweifeln gebracht hast. :twisted:
Gruß,
der Matze

Re: Select-Befehl : Artikel-Liste mit jüngstem Wert

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Nee, Du hast schon recht. :-)

Ich habe "kleinstes" Datum mit "juengstes" Datum verwechselt.

Mit "DESCENDING" bekommst Du das aelteste Datum als Result.

Seite 1 von 1

Vergleichbare Themen

17
Antw.
2645
Views
SQL SELECT-BEFEHL
von hmaxi96 » 02.11.2015 12:07 • Verfasst in ABAP® für Anfänger
3
Antw.
569
Views
TSTMP in select-Befehl
von Frank Schmitt » 26.05.2020 11:00 • Verfasst in ABAP® für Anfänger
5
Antw.
2223
Views
Typecast bei Select-Befehl
von Senshi » 05.11.2007 16:17 • Verfasst in ABAP® für Anfänger
3
Antw.
8008
Views
sql befehl select leere felder = '' ?
von michaels » 27.01.2005 14:41 • Verfasst in ABAP® Core
1
Antw.
385
Views
SELECT-FROM-Befehl und Löschen von Einträgen
von lr_1504 » 10.01.2020 16:53 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor 38 Minuten von ewx 17 / 1027
Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 20 / 2492
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1631

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

Eclipse - warum/wann verwendet ihr es [nicht]
vor 38 Minuten von ewx 17 / 1027
Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 20 / 2492
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1631

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 695
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2325
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8907