SQL STRING_AGG


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

SQL STRING_AGG

Beitragvon woddstock99 » 13.02.2019, 11:37

Hallo zusammen

ich habe folgende Ausgangssituation

Tabelle: NAMEN ist wie folgt aufgebaut

ID Vorname
1 aaa
1 bbb
1 ccc
2 yyy
3 ssss

Nun wollte ich per SQlAnweisung in ABAP folgendes Ergebnis erhalten

ID Vorname
1 aaa, bbb, ccc
2 yyy
3 ssss


Per DBACOCKPIT kann ich folgendes SQL absetzen

select ID, STRING_AGG( VORNAME, ', ')

from namen
group by ID
und er bringt mir auch das Ergebnis zurück

ID Vorname
1 aaa, bbb, ccc
2 yyy
3 ssss


IN ABAP kenn er aber diese Funktion STRING_AGG aber gar nicht :( . Wie kann ich das in einem ABAP Programm umsetzen ?

Gruss
woddstock99
ForumUser
 
Beiträge: 16
Registriert: 22.01.2019, 09:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

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

Re: SQL STRING_AGG

Beitragvon 4byte » 13.02.2019, 11:55

Hallo woddstock99,

mir fällt da nur ein, die Ergebnisse zu lesen und danach per loop in eine Ergebnistabelle zu schreiben. Etwa so:
(Pseudocode)
Code: Alles auswählen

loop at itab_db into wa.

lese Ergebnistabelle mit ID

Wenn vorhanden, dann hänge text an bestehenden text dran und sichere die ÄÄnderung in Ergebnistabelle
wenn nicht vorhanden dann append an ergebnistabelle

endloop.

Grüße 4byte

 
Es gibt 10 Menschen die binär verstehen :)
4byte
Specialist
 
Beiträge: 120
Registriert: 24.10.2017, 09:16
Dank erhalten: 34 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon woddstock99 » 13.02.2019, 12:09

Danke für deine Antwort aber genau diesen Weg will ich nicht gehen .. Muss doch auch per SQL möglich sein .. Was mich wundert . Im Editor wird der Befehl ausgeführt und im ABAP PGM kennt er das gar nicht ...
Bin langsam aber sicher immer verwirrter .. -> Ich bin ein SAP/ABAP Neuling
woddstock99
ForumUser
 
Beiträge: 16
Registriert: 22.01.2019, 09:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon SaskuAc » 13.02.2019, 12:23

Also die Lösung von 4Byte ist so ziemlich der Standard, wie das in ABAP gemacht wird.

Ich habe jetzt in einer kurzen Suche das hier gefunden: https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abensql_expr_in_aggregates_abexa.htm

Das 2. und 3. Select-Statement sieht da glaube ich passend aus:

Code: Alles auswählen
    SELECT char1 && '_' && char2 AS group,
           MAX( num1 + num2 ) AS max,
           MIN( num1 + num2 ) AS min,
           MIN( num1 * num2 ) AS min_product
           FROM demo_expressions
           GROUP BY char1, char2
           ORDER BY group
           INTO TABLE @DATA(grouped).
    out->write( grouped ).


Ist es das was du suchst?

eine Aggregatsfunktion ansich gibt es für sowas glaube ich nicht, zumindest konnte ich in der SAP Hilfe nichts finden.
SaskuAc
Specialist
 
Beiträge: 240
Registriert: 01.06.2015, 10:16
Dank erhalten: 24 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon woddstock99 » 13.02.2019, 13:06

Hallo SaskuAc,

Danke aber das bringt mir nichts . Damit kann ich das gewünschte Ergebiss nicht erzielen :(
woddstock99
ForumUser
 
Beiträge: 16
Registriert: 22.01.2019, 09:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon deejey » 13.02.2019, 13:07

Dann mache es eben statt mit Open-SQL mit native-SQL
deejey
Specialist
 
Beiträge: 183
Registriert: 31.07.2016, 11:20
Dank erhalten: 14 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon woddstock99 » 13.02.2019, 13:24

@DEEJEY ???????????????????? Ich weiss jetzt nicht was du mit damit sagen willst .
woddstock99
ForumUser
 
Beiträge: 16
Registriert: 22.01.2019, 09:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon deejey » 13.02.2019, 13:40

Mit Nativ-SQL kann man direkt SQL-Anweisungen quasi auf DB-Ebene absetzen, unabhängig von den Einschränkungen von ABAP. Wenn du sagst das Statement funktioniert an sich, dann ist das die einzige Möglichkeit

https://help.sap.com/doc/abapdocu_751_i ... ve_sql.htm
deejey
Specialist
 
Beiträge: 183
Registriert: 31.07.2016, 11:20
Dank erhalten: 14 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon 4byte » 13.02.2019, 13:43

Ich fasse es kurz zusammen:

OPENSQL ist die ABAP-eigene SQL Sprache. Diese wird durch die SAP Datenbankschnittstelle(DBSS) auf Nativ-SQL übersetzt. Ein SAP System kann mehrere verschiedene Datenbanksysteme nutzen, die jeweils ihre eigene SQL Dialekte haben.

Durch die DBSS wird sichergestellt, das das OPENSQL immer auf die richtige SQL Sprache der darunterliegenden DB übersetzt wird.

Was deejey meint: Alternativ kann auch direkt mit Native SQL in ABAP zugegriffen werden.
Siehe link https://help.sap.com/doc/abapdocu_751_index_htm/7.51/de-DE/abendatabase_access_guidl.htm

PS. war zu langsam :D
Es gibt 10 Menschen die binär verstehen :)
4byte
Specialist
 
Beiträge: 120
Registriert: 24.10.2017, 09:16
Dank erhalten: 34 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon woddstock99 » 13.02.2019, 13:59

Danke für die Antworten

Achso das meinst du :). Sorry stand auf dem Schlauch .
Dann müsste ich aber über Cursor arbeiten oder ??

Weil ein Into Tabelle ist ja nicht erlaubt zwischen
exec sql.
endexec

per Cursor hab ich es hinbekommen .
Aber geht das auch direkt -> Sprich Select irgendwas into Tabelle ??

Sorry für die Fragen aber ich bin mir halt nicht sicher wie das die Erfahreren User umsetzen würden.
woddstock99
ForumUser
 
Beiträge: 16
Registriert: 22.01.2019, 09:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon deejey » 13.02.2019, 14:06

geht über ADBC:
cl_sql_connection=>get_connection, ->execute_query und noch paar andere Sachen, habe im Mom keinen Systemzugriff, da wird einfach SQL-Statement als String übergeben und eine itab-Definition als Empfangsobjekt
deejey
Specialist
 
Beiträge: 183
Registriert: 31.07.2016, 11:20
Dank erhalten: 14 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon SaskuAc » 13.02.2019, 14:13

Die Frage ist aber, warum willst / kannst du nicht mit dem Loop arbeiten wie ganz vorne vorgeschlagen? ...
Ich gehe ungerne auf Native SQL, weil man bei einem Wechsel der Datenbank gerne mal vergisst das umzubauen... Das bemerken wir bei einem Projekt ( in dem wir unsere Server zu einem Service Provider umziehen und dabei OS und DB wechseln ) ziemlich stark... da mussten sehr viele Native SQL sachen wieder angefasst werden ... weil halt ein paar Dinge vergessen wurden..

Ich würde dir raten eine Möglichkeit zu finden das in ABAP zu machen. Auch wenn manche Sachen nicht schön erscheinen..
SaskuAc
Specialist
 
Beiträge: 240
Registriert: 01.06.2015, 10:16
Dank erhalten: 24 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon deejey » 13.02.2019, 14:24

Es ist einfach cooler mit SQL 8) es ist unglaublich was es da für Möglichkeiten gibt, die denke ich viel zu selten genutzt werden ... und ein möglicher Wechsel der DB wird mMn überschätzt, und selbst wenn es dann mal passieren sollte, dann wird eh ein großes Migrationsprojekt aufgetan bei dem sowas abgearbeitet wird, na wenn schon.
deejey
Specialist
 
Beiträge: 183
Registriert: 31.07.2016, 11:20
Dank erhalten: 14 mal
Ich bin: Entwickler/in

Re: SQL STRING_AGG

Beitragvon edwin » 13.02.2019, 14:50

Du könntest das auch mit AMDP realisieren
/Edwin
edwin
Specialist
 
Beiträge: 249
Registriert: 27.02.2007, 17:15
Wohnort: Ludwigsburg
Dank erhalten: 37 mal
Ich bin: Freiberufler/in

Re: SQL STRING_AGG

Beitragvon deejey » 13.02.2019, 14:57

Stimmt, das wird in der Doku auch beschrieben, aber ich habe es nicht erwähnt weil ich im Gegensatz zu ADBC keine Erfahrung mit AMDP habe, das sollte also keine Wertung sein.
deejey
Specialist
 
Beiträge: 183
Registriert: 31.07.2016, 11:20
Dank erhalten: 14 mal
Ich bin: Entwickler/in

Nächste

Zurück zu ABAP® für Anfänger

  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
Keine Beiträge gefunden - versuche es mit der erweiterten Suche.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder