Code: Alles auswählen.
do hv_anzahl times varying.
select gsv01 gsv02 gsv03 gsv04 gsv05 gsv06 gsv07 gsv08 gsv09 gsv10
gsv11 gsv12 gsv12
into
(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)
from mver
where
matnr = zzmatnr and
werks = zzwerks and
gjahr = year_begin.
gv = v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 +
v12 + v13.
* Das muss noch dynamisch werden
alv_ou-(year_begin) = gv.
year_begin = year_begin + 1.
endselect.
enddo.
Das ganze ist mit Field-Symbols zulösen:LittleT hat geschrieben: year_begin ist mit 2005 gefüllt. Jetzt müsste ich also die interne Tabelle füllen.
Code: Alles auswählen.
* Zeiger auf das Feld in der Struktur
FIELD-SYMBOLS: <fs> TYPE any. "besser Type von alv_ou-year.
* Nimmt Feldnamen auf
DATA: g_fieldname type string.
* Feldnamen zusammenbasteln
CONCATENATE 'ALV_OU-'
year_begin
INTO g_fieldname.
* Zeiger auf Feld ausrichten
ASSIGN g_fieldnamen TO <fs> .
* Wert zuweisen
<fs> = gv.
Code: Alles auswählen.
ASSIGN COMPONENT <index> OF STRUCTURE alv_ou TO <fs>.
Code: Alles auswählen.
<fs> = gv.
Code: Alles auswählen.
do hv_anzahl times.
* Feldnamen zusammenbasteln
CONCATENATE 'ALV_OU-' year_begin INTO g_fieldname.
* Zeiger auf Feld ausrichten
ASSIGN g_fieldname TO <fs> .
select gsv01 gsv02 gsv03 gsv04 gsv05 gsv06 gsv07 gsv08 gsv09 gsv10
gsv11 gsv12 gsv12
into
(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)
from mver
where
matnr = zzmatnr and
werks = zzwerks and
gjahr = year_begin.
gv = v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 +
v12 + v13.
* Das muss noch dynamisch werden
<fs> = gv.
* alv_ou-(year_begin) = gv.
endselect.
year_begin = year_begin + 1.
enddo.
alv_ou-mtart = zzmtart.
alv_ou-maktx = zzmaktx.
alv_ou-werks = zzwerks.
alv_ou-beskz = zzbeskz.
alv_ou-sobsl = zzsobsl.
alv_ou-herkl = zzherkl.
alv_ou-matnr = zzmatnr.
alv_ou-stawn = zzstawn.
APPEND alv_ou.
Code: Alles auswählen.
do hv_anzahl times.
* Feldnamen zusammenbasteln
CONCATENATE 'ALV_OU-' year_begin INTO g_fieldname.
* Zeiger auf Feld ausrichten
ASSIGN g_fieldname TO <fs> .
select gsv01 gsv02 gsv03 gsv04 gsv05 gsv06 gsv07 gsv08 gsv09 gsv10
gsv11 gsv12 gsv12
into
(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)
from mver
where
matnr = zzmatnr and
werks = zzwerks and
gjahr = year_begin.
gv = v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 +
v12 + v13.
* Das muss noch dynamisch werden
<fs> = gv.
* alv_ou-(year_begin) = gv.
alv_ou-mtart = zzmtart.
alv_ou-maktx = zzmaktx.
alv_ou-werks = zzwerks.
alv_ou-beskz = zzbeskz.
alv_ou-sobsl = zzsobsl.
alv_ou-herkl = zzherkl.
alv_ou-matnr = zzmatnr.
alv_ou-stawn = zzstawn.
collect <fs> into alv_ou.
append alv_ou.
endselect.
year_begin = year_begin + 1.
enddo.
Thomas hat schon etwas dazu geschrieben. Du mußt den COLLECT mit der ganzen Zeile machen (alv_ou). <fs> "zeigt" nur auf das FELD alv_ou-jahr_begin (Verändert sich also mit jedem Schleifendurchlauf.)LittleT hat geschrieben: jetzt bekomm ich einen Kurzdump!
In g_fieldname steht der Name des Feldes auf den das field-sysmbole <fs> "zeigen" soll. Im ersten Durchlauf auf alv_ou-2005, im zweiten Durchlauf auf alv_ou-2006 und so weiter.LittleT hat geschrieben: Mit Feldsymbolen kenn ich mich überhaupt nicht aus. Wozu brauch ich eigentlich das g_fieldname?
Code: Alles auswählen.
do hv_anzahl times.
* Feldnamen zusammenbasteln
CONCATENATE 'ALV_OU-' year_begin INTO g_fieldname.
* Zeiger auf Feld ausrichten
ASSIGN g_fieldname TO <fs> .
select gsv01 gsv02 gsv03 gsv04 gsv05 gsv06 gsv07 gsv08 gsv09 gsv10
gsv11 gsv12 gsv13
into
(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)
from mver
where
matnr = zzmatnr and
werks = zzwerks and
gjahr = year_begin.
gv = v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 +
v12 + v13.
* Das muss noch dynamisch werden
* alv_ou-<fs> = gv.
<fs> = gv.
* alv_ou-(year_begin) = gv.
* collect <fs> into alv_ou.
alv_ou-mtart = zzmtart.
alv_ou-maktx = zzmaktx.
alv_ou-werks = zzwerks.
alv_ou-beskz = zzbeskz.
alv_ou-sobsl = zzsobsl.
alv_ou-herkl = zzherkl.
alv_ou-matnr = zzmatnr.
alv_ou-stawn = zzstawn.
collect alv_ou.
* append alv_ou.
endselect.
year_begin = year_begin + 1.
enddo.
Code: Alles auswählen.
append gv to alv_ou-<fs>.
Code: Alles auswählen.
append gv to <fs>.
Code: Alles auswählen.
ASSIGN COMPONENT year_begin OF STRUCTURE alv_ou TO <fs>.