Ohne das Programm zu sehen? Gar nicht.Nun ist die Frage, wie könnte man so etwas lösen?
Felder des Typs P haben eine Länge, die man größer wählen kann.Es wird in dem Programm in eine Variable die Beträge zusammengezählt, welcher als P deklariert ist. Es läuft leider über die mögliche Speicherkapazität.
Code: Alles auswählen.
while sy-subrc = 0 and
fxvbfa-vbelv = us_vbeln.
* Wenn Fakturen über die Fakturaschnittstelle zu einem externen Beleg
* (mit gleicher Belegnummer, wie US_VBELN) angelegt wurden, gibt es
* Belegflußeinträge, die als VBTYP_V nicht den zu US_VBELN gehörenden
* Belegtyp haben.
* Diese müssen aussortiert werden, da sie evtl. gar nicht zu US_VBELN
* gehören und ansonsten der externe Belegttyp für US_VBELN verwendet
* wird, falls der letzte Eintrag in FXVBFA ein externer ist.
if fxvbfa-vbtyp_v ca vbtyp_extern.
da_tabix = sy-tabix + 1.
read table fxvbfa index da_tabix.
continue.
endif.
* Tabix für nächsten Read merken
da_tabix = sy-tabix + 1.
vbfa = fxvbfa.
clear da_anzwap_exchange.
if vbfa-wbsta eq charc and not vbfa-logsys is initial.
da_anzwap_exchange = da_zaehler.
endif.
if vbfa-vbelv ne *vbfa-vbelv or
vbfa-posnv ne *vbfa-posnv.
if vbfa-vbtyp_v ca vbtyp_lp and not
*vbfa-posnv is initial.
* erledigte Menge bei Lieferplänen für Zulieferer
perform rv_erlmenge_l_ermitteln using *vbfa
i_rmenge_needed_lp
us_call_from_del
changing fxvbapf-erlmenge_l
fxvbapf-erlmengelv
fxvbapf-rmenge
fxvbapf-rmengev
fxvbapf-pzmng_sa
fxvbapf-pzmng_sav
fxvbapf-erlmenge_p
fxvbapf-erlmengepv
fxvbapf-erlmenge
fxvbapf-erlmengev.
append fxvbapf.
clear fxvbapf.
else.
if not *vbfa-vbelv is initial or
not *vbfa-posnv is initial.
append fxvbapf.
clear fxvbapf.
endif.
endif.
endif.
*vbfa = vbfa.
fxvbapf-vbeln = vbfa-vbelv.
fxvbapf-posnr = vbfa-posnv.
fxvbapf-vbtyp = vbfa-vbtyp_v.
perform rv_xvbapf_mengen_ermitteln using da_null
da_null
da_null
da_zaehler
da_anzwap_exchange
da_taq.
read table fxvbfa index da_tabix.
endwhile.