SQL STRING_AGG

Getting started ... Alles für einen gelungenen Start.
19 Beiträge • Seite 1 von 2 (current) Nächste
19 Beiträge Seite 1 von 2 (current) Nächste

SQL STRING_AGG

Beitrag von woddstock99 (ForumUser / 16 / 0 / 0 ) »
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

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


Re: SQL STRING_AGG

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
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 :)

Re: SQL STRING_AGG

Beitrag von woddstock99 (ForumUser / 16 / 0 / 0 ) »
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

Re: SQL STRING_AGG

Beitrag von SaskuAc (Specialist / 321 / 37 / 43 ) »
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_i ... _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.

Re: SQL STRING_AGG

Beitrag von woddstock99 (ForumUser / 16 / 0 / 0 ) »
Hallo SaskuAc,

Danke aber das bringt mir nichts . Damit kann ich das gewünschte Ergebiss nicht erzielen :(

Re: SQL STRING_AGG

Beitrag von deejey (Specialist / 418 / 128 / 45 ) »
Dann mache es eben statt mit Open-SQL mit native-SQL

Re: SQL STRING_AGG

Beitrag von woddstock99 (ForumUser / 16 / 0 / 0 ) »
@DEEJEY ???????????????????? Ich weiss jetzt nicht was du mit damit sagen willst .

Re: SQL STRING_AGG

Beitrag von deejey (Specialist / 418 / 128 / 45 ) »
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

Re: SQL STRING_AGG

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
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_i ... _guidl.htm

PS. war zu langsam :D
Es gibt 10 Menschen die binär verstehen :)

Re: SQL STRING_AGG

Beitrag von woddstock99 (ForumUser / 16 / 0 / 0 ) »
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.

Re: SQL STRING_AGG

Beitrag von deejey (Specialist / 418 / 128 / 45 ) »
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

Re: SQL STRING_AGG

Beitrag von SaskuAc (Specialist / 321 / 37 / 43 ) »
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..

Re: SQL STRING_AGG

Beitrag von deejey (Specialist / 418 / 128 / 45 ) »
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.

Re: SQL STRING_AGG

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
Du könntest das auch mit AMDP realisieren
/Edwin

Re: SQL STRING_AGG

Beitrag von deejey (Specialist / 418 / 128 / 45 ) »
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.

Vergleichbare Themen

12
Antw.
2714
Views
CSV String
von Django90 » 02.10.2017 08:58 • Verfasst in ABAP® für Anfänger
6
Antw.
3926
Views
string vergleich
von dimes » 22.05.2006 09:28 • Verfasst in ABAP® Core
2
Antw.
2065
Views
# in String suchen
von Thanatos82 » 05.03.2013 13:31 • Verfasst in ABAP® für Anfänger
8
Antw.
4601
Views
String splitten
von Marc K. » 23.08.2012 11:35 • Verfasst in ABAP® für Anfänger
1
Antw.
1052
Views
string limit
von anays » 08.02.2006 14:01 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140