ABAP-SQL Frage


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

ABAP-SQL Frage

Beitragvon DaHipster » 01.12.2003, 18:04

Ich möchte diese Abfrage ausführen:
SELECT name, MAX(wert) AS maxwert
FROM test
GROUP BY name
HAVING maxwert <= 5
ORDER BY wert;

ABAP meckert, dass das Feld maxwert unbekannt sei - wie schwach ist das denn? Sieht für mich nach 100% standard aus. :?

Weiss jemand, wie man´s formulieren muss, damit sogar ABAP damit umgehen kann?
DaHipster
ForumUser
 
Beiträge: 2
Registriert: 01.12.2003, 17:56
Dank erhalten: 0 mal

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Beitragvon Gast » 01.12.2003, 18:38

Vielleicht: SELECT name MAX( wert ) AS maxwert FROM test

:roll:
Gast
 

Re: ABAP-SQL Frage

Beitragvon Frank Dittrich » 01.12.2003, 18:54

DaHipster hat geschrieben:Ich möchte diese Abfrage ausführen:
SELECT name, MAX(wert) AS maxwert
FROM test
GROUP BY name
HAVING maxwert <= 5
ORDER BY wert;

ABAP meckert, dass das Feld maxwert unbekannt sei - wie schwach ist das denn? Sieht für mich nach 100% standard aus. :?

Weiss jemand, wie man´s formulieren muss, damit sogar ABAP damit umgehen kann?

Code: Alles auswählen
SELECT name MAX&#40; wert &#41; AS maxwert
       FROM test
       INTO ... " &#40;feld1, feld2&#41; | &#91;CORRESPONDING FIELDS OF&#93; wa | TABLE itab
*      alternativ APPENDING ...
       GROUP BY name
       HAVING MAX&#40; wert &#41; <= 5
       ORDER BY maxwert.
* je nach Option bei INTO fehlt dann noch ein ENDSELECT nach Verarbeitung der Daten
Frank Dittrich
Expert
 
Beiträge: 674
Registriert: 03.12.2002, 15:33
Dank erhalten: 16 mal

Beitragvon DaHipster » 02.12.2003, 09:10

Granatengute Idee, im HAVING nochmal zu aggregieren. Damit hat´s dann auch geklappt.

Danke! :D
DaHipster
ForumUser
 
Beiträge: 2
Registriert: 01.12.2003, 17:56
Dank erhalten: 0 mal

Beitragvon Gast » 02.12.2003, 10:39

Bist Du Dir sicher, dass der Fehler daran lag/liegt :roll:
Gast
 

Beitragvon Asaph » 03.12.2003, 13:11

Hallo allerseits,

ich habe eine ähnliches Problem:

ich suche die Differenz (difku) mit dem höchsten Ladedatum (lddat),
um eine kumulierte Differenz fortzuschreiben.

da ich es mit dem obigem Beispiel nicht hinbekomme, teile ich Z.Zt
die Selektion auf :


Code: Alles auswählen
    SELECT max&#40; lddat &#41; FROM  ZSUM CLIENT SPECIFIED
              into hvdat
           WHERE  MANDT  = sy-mandt
           AND    BUKRS  = sumtab-bukrs
           AND    LDDAT  lt sumtab-lddat
           AND    GVORF  = sumtab-gvorf.

    SELECT single difku FROM  ZSUM CLIENT SPECIFIED
              into wa-difku
           WHERE  MANDT  = sy-mandt
           AND    BUKRS  = sumtab-bukrs
           AND    LDDAT  = hvdat
           AND    GVORF  = sumtab-gvorf.
 


gibt es eine Möglichkeit dies mit einem select-Statement hinzubekommen ?
es muß ein Einzelsatzzugriff sein, da nur ein Satz Pro Bukrs/Lddat/Gvorf existiert (i.e. kein Select-endselect statement):!:


Gruß Andreas
Asaph
Expert
 
Beiträge: 578
Registriert: 14.08.2003, 06:37
Wohnort: Düsseldorf
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Beitragvon Gast » 03.12.2003, 19:57

Möglicherweise habe ich die Aufgabenstellung nicht verstanden aber
warum nicht eine subquery?

Code: Alles auswählen
  select difku from zsum into wa_difku
          where bukrs = sumtab-bukrs
             and gvorf = sumtab-gvirf
             and lddat =  select max&#40; lddat &#41; from zsum
                                 where bukrs = sumtab-bukrs
                                   and  gvorf = sumtab-gvorf.

 
 

Ich glaube bei der Subqury fehlen noch ein paar Klammern...da musst Du Dir nochmals die Syntax genauer anschauen.
client specified kannst Du Dir übrigens sparen, wenn Du mit sy-mandt darauf zugreifst - diese where bed. ist implizit immer vorhanden.

Deine Bemerkung mit dem Einzelsatz lesen habe ich auch nicht verstanden - wenn nur ein Eintrag da ist liest auch select-endselect nur einer (oder man kann es mit up to 1 rows einschränken).
Ich vermute, der select wird in eienr Schleife über eine interne Tabelle sumtab aufgerufen. Möglicherweise würde es sich anbieten ein Select into table durchzuführen mit group by bukrs gvorf. Array fetches sind performanter als Einzelsatzzugriffe.

Trotz allen Unklarheiten - hoffe ich, dass Dir das etwas weiterhilft
Christian
Gast
 


Zurück zu ABAP® Core

  Aktuelle Beiträge   
Steuerliches Abgangsland in Verkaufsbeleg ändern
vor 4 Stunden von Julia611 0 Antw.
XML hochladen, Abschnitte suchen, Abschnitte als XML zurück
vor 3 Stunden von deejey 1 Antw.
(LKW)Bedarfsvorschau je Debitor
vor 2 Tagen von wreichelt 5 Antw.
Lieferplan, Einteilungen, Feinabrufe
vor 3 Tagen von bapimueller 0 Antw.
gelöst Smartforms Struktur rechtsbündig
vor 3 Tagen von qyurryus 3 Antw.

  Ähnliche Beiträge beta
Frage zu RFC
12.07.2005, 15:07 von Frank Zet. 2 Antw.
Frage zu RFC_READ_TABLE !
15.11.2004, 13:31 von Hermann 2 Antw.
Frage zur Berechtigungsprüfung
19.04.2005, 13:36 von ewx 2 Antw.
Frage zur Laufzeit
27.10.2005, 12:20 von ereglam 2 Antw.
SAP-Script Frage?
03.02.2006, 13:51 von eschi78 13 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]