Feldymbol auf Feldaggregation

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

Feldymbol auf Feldaggregation

Beitrag von ralf.wenzel (Top Expert / 4011 / 209 / 283 ) »
Moin moin,

ich habe hier ein kleines Syntaxproblem. Nehmen wir als Beispiel den Select

Code: Alles auswählen.

SELECT gjahr sum( dmbtr ) FROM bseg
         into table it_bseg
         group by gjahr.
Dass der Select fachlich keinen Sinn macht, lassen wir mal außer Acht.

Davon habe ich nun eine ganze Menge, wobei das Betragsfeld sich ändert, es ist also mal dmbtr, mal hwbtr, was auch immer. Es sind aber immer typgleiche Betragsfelder.

Statt nun für jedes Feld einen eigenen Select zu schreiben, möchte ich den in eine FORM auslagern, dazu brauche ich dann wohl ein Feldsymbol.

Code: Alles auswählen.

perform get_values using 'DMBTR'  "das ist sicher falsch!
                      changing it_bseg.

form get_values using fieldname 
                 changing lt_bseg.

*** ASSIGN!

  select gjahr <feldsymbol>
         into table lt_bseg
         group by gjahr.

endform.
Wie müsste das Feldsymbol aussehen für die Aggregation "SUM ( betrag )" mit betrag = diverse Währungsfelder der BSEG? Und wie müsste der Assign aussehen?

Ich möchte es möglichst vermeiden, lt_bseg von Hand zu erzeugen!

Es geht mir NUR um die Syntax, das ist KEIN Select aus der Praxis!!! ;) (mein Select aus der Praxis bezieht sich auf kundeneigene Tabellen ähnlicher Struktur)


Danke.

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development -- 25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Beitrag von ewx (Top Expert / 4916 / 332 / 653 ) »
guckstuhier: www.abapforum.com/forum/viewtopic.php?t=15173
das müsste passen...

Beitrag von ralf.wenzel (Top Expert / 4011 / 209 / 283 ) »

Code: Alles auswählen.

data fname type text40.
Da wäre ich im Leben nie drauf gekommen. Ich guck mal ob das tut.

Mein Coding sieht dann wie folgt aus:

Code: Alles auswählen.

perform get_values using 'SUM( DMBTR )'   
                      changing it_bseg. 

form get_values using fieldname type  text40
                 changing lt_bseg.  "natürlich typisiert 

  select gjahr fieldname 
         into table lt_bseg 
         group by gjahr. 

endform.
Das sollte mir dann eine Liste aller Geschäftsjahre und der Summe aller DMBTR-Beträge über das jeweilige Geschäftsjahr ausgeben.

Falls ich was falsch verstanden habe, bitte kurz anklingeln ;) (also hier im Forum)

Danke


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development -- 25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von GastX (Specialist / 288 / 6 / 20 ) »
Hallo Ralf,
bei

Code: Alles auswählen.

select gjahr fieldname 
         into table lt_bseg 
         group by gjahr. 
dürftest Du den Fehler kriegen, dass der Spaltenname "fieldname" unbekannt ist.

Du musst den dynamischen Part in Klammern angeben (ohne Leerzeichen). Das geht hier leider nicht je Feld, d.h. du müsstest die ganze Feldliste dynamisch mitgeben und das in Klammern setzen.
Meine spontane Lösung würde grob so aussehen:

Code: Alles auswählen.

FORM get_values USING fieldname
                 CHANGING lt_bseg.

  DATA: wa_fieldtab TYPE char72,
        it_fieldtab TYPE STANDARD TABLE OF char72.

  wa_fieldtab = 'GJAHR'.
  APPEND wa_fieldtab TO it_fieldtab.

  CONCATENATE 'SUM(' fieldname ')' INTO wa_fieldtab SEPARATED BY space.
  APPEND wa_fieldtab TO it_fieldtab.

  SELECT (it_fieldtab) FROM bseg
         INTO TABLE lt_bseg
         GROUP BY gjahr.
ENDFORM.                    "get_values
Gruß, Frank

Beitrag von ralf.wenzel (Top Expert / 4011 / 209 / 283 ) »
Stimmt auffallend ;)

Danke, Ralf
Bild
Ralf Wenzel Heuristika SAP-Development -- 25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Über diesen Beitrag


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

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.