Dynamischen Select + Aggregat

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

Dynamischen Select + Aggregat

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Hallo,

ich bin gerade dabei ein dynamischen Select zu schreiben und habe hier bei dem COUNT(*) Aggregat Probleme, eventuell kann mir einer von euch helfen:

Code: Alles auswählen.

    SELECT (itab_group) COUNT(*) INTO (<group>, count)
      FROM (p_tab) CLIENT SPECIFIED
     WHERE  mandt  = sy-mandt
       AND  (itab_where)
      GROUP by (itab_group).

      WRITE: / <group>,
               count.
    ENDSELECT.
Nun meckert er: Fehlerhafter Ausdruck "COUNT(*)" bei Angabe einer Aggregatfunktion.
Wenn ich COUNT(*) weg nehme, klappt alles? dann fehlt mir ja aber der Zähler.

Wenn ich gerade dabei bin, in SAP gibt es doch bestimmt eine Tabelle in der alle Tabellennamen und die Zeilen der Tabellen enthalten sind oder?

Vielen Dank
c0lt

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


Beitrag von Gast ( / / 0 / 3 ) »
Wenn ich gerade dabei bin, in SAP gibt es doch bestimmt eine Tabelle in der alle Tabellennamen und die Zeilen der Tabellen enthalten sind oder?
Ja gibt es selbstverständlich: DD03L heisst das gute Stück.


Grüße

BeratenderEntwickler

Re: Dynamischen Select + Aggregat

Beitrag von Gast ( / / 0 / 3 ) »
c0lt.seavers hat geschrieben:Nun meckert er: Fehlerhafter Ausdruck "COUNT(*)" bei Angabe einer Aggregatfunktion.
Versuchs mal mit COUNT( * ). ABAP ist da manchmal bockig und will die Leerzeichen.

Gruß Hendrik

Beitrag von Gast ( / / 0 / 3 ) »
Anonymous hat geschrieben:
Wenn ich gerade dabei bin, in SAP gibt es doch bestimmt eine Tabelle in der alle Tabellennamen und die Zeilen der Tabellen enthalten sind oder?
Ja gibt es selbstverständlich: DD03L heisst das gute Stück.
Insbesondere bei Include- u./o. Append-Strukturen muss man aber aufpassen.
Man macht sich das Leben einfacher, wenn man die entsprechenden *NAMETAB*-FBs aufruft.

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Hi,

schon einmal vielen Dank für die Hilfreichen Tipps!

Code: Alles auswählen.

COUNT( * ) 
ändert jedoch leider nichts an dem Fehler :-(.

mfg
c0lt

Beitrag von olli-x (Specialist / 166 / 0 / 1 ) »
Hi,

wenn ich das so richtig interpretiere willst Du die Anzahl der selektierten Zeilen habe ?

In diesem Fall würde ich dann einfach den "sy-dbcnt" nehmen...

Gruß,
Oliver

Beitrag von Gast ( / / 0 / 3 ) »
c0lt.seavers hat geschrieben:

Code: Alles auswählen.

COUNT( * ) 
ändert jedoch leider nichts an dem Fehler :-(.
Geht so auch nicht, hab eben nicht genau genug gelesen.
Du gibst dynamisch die zu lesenden Spalten an.
Die Aggregatsfunktion muss dann auch mittels itab_group angegeben werden. Wenn dynamisch dann auch komplett.

Gruß Hendrik

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
So, ich habe das nun einmal getestet und nun meckert er auch nicht mehr. Wenn ich das Programm ausführe, bricht mir das Programm mit dem Fehler:

Der darin auftretende Feldname "COUNT(*)" kommt in keiner der
Datenbanktabellen aus der FROM-Klausel vor.

ab.

Code: Alles auswählen.

    select (itab_group) into <group>
      from (p_tab) client specified
     where  mandt  = sy-mandt
       and  (itab_where)
      group by (itab_group).

In itab_group steht: COUNT(*) BUKRS


Mit sy-dbcnt klappt es leider auch nicht.

Vielen Dank
c0lt.

Beitrag von Gast ( / / 0 / 3 ) »
c0lt.seavers hat geschrieben:Der darin auftretende Feldname "COUNT(*)" kommt in keiner der
Datenbanktabellen aus der FROM-Klausel vor.
Leerzeichen bei COUNT mitgeben!

Mal das Beispiel aus der F1-Hilfe:

Code: Alles auswählen.

FORM my_select USING l_group TYPE string. 
  DATA: l_columns TYPE TABLE OF string, 
        l_container TYPE string, 
        l_count     TYPE i. 
  APPEND l_group TO l_columns. 
  APPEND `count( * )` TO l_columns. 
  SELECT (l_columns) 
         FROM spfli 
         INTO (l_container, l_count) 
         GROUP BY (l_group). 
    WRITE: / l_count, l_container. 
  ENDSELECT. 
ENDFORM. 
Gruß Hendrik[/code]

Beitrag von Gast ( / / 0 / 3 ) »
Okay ich denke, ich habe den Fehler gefunden:

In meinem Beispiel hatte ich in der Feldauswahl und in dem GROUP BY beides mal COUNT(*) FELD... so geht das nicht :-). Nun steht in der GROUP BY wieder nur das FELD.


Wenn ich bei der Angabe INTO mit zwei Feldern arbeite, bekomme ich schon mal die Meldung, dass er kein Komma erwartet hat:

Komma ohne vorausgegangenen Doppelpunkt (nach SELECT ?).

Wenn ich mir hier eine FS aufbaue welche die Struktur des COUNTS und des Feldes hat (muss ja dynamisch per REF passieren), geht er ebenfalls auf die Bretter:

Bei der Anweisung
"SELECT ... INTO wa"
sind an der Argumentposition "wa" tiefe Datenobjekte nicht unterstützt.

Elementare tiefe Datentypen sind interne Tabellen, (Objekt- und Datenobjekt-) Referenzen und Strings (STRING, XSTRING). Allgemeine tiefe Datenobjekte sind elementare tiefe Datentypen oder Strukturen, die tiefe Datenobjekte enthalten.

mh was nun?
c0lt

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Entschuldigung, ich war nicht eingeloggt. Ein über mir ist mein Post.

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Hat keiner mehr einen Tipp?

Beitrag von Steffi221185 (Specialist / 132 / 0 / 0 ) »
geb doch notfalls ne Itab an... Die felder von deiner Tabelle haste doch .. dann musste die Tabelle nur um das Feld von count(*) erweitern.

ist allerdings ein bissl umständlicher.

oder du musst alle felder einzeln angegeben und nicht in einen string schreiben...

Seite 1 von 1

Vergleichbare Themen

7
Antw.
3352
Views
Problem mit dynamischen SELECT-Statement
von Falloutboy3k » 25.04.2007 08:55 • Verfasst in ABAP® Core
4
Antw.
15371
Views
dynamischen Feldnamen auslesen
von Mario » 10.10.2005 18:24 • Verfasst in ABAP® Core
1
Antw.
1858
Views
Tool Tip bei dynamischen Buttons
von bek » 19.05.2014 18:19 • Verfasst in Dialogprogrammierung
3
Antw.
755
Views
Datenladen mit dynamischen Dateinamen
von martin_S. » 14.06.2023 17:01 • Verfasst in ABAP® für Anfänger
5
Antw.
475
Views
Datenladen mit dynamischen Datum
von martin_S. » 17.11.2023 15:33 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

RFC vs. ODATA
vor einer Woche von DeathAndPain 8 / 3105
FUBA 'HR_INFOTYPES_OPERATION'
vor einer Woche von DeathAndPain 2 / 2108
Frage zur redefinierten Methode
vor einer Woche von ralf.wenzel 12 / 3603

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.