Du sagst, mit "eintragen" meinst du in FB50...dann ist Dir doch beim Prüfen diese Logik völlig egal, oder? Willst du nun eine solche Logik in der Validierung verbauen oder nicht?Aber es gibt 3 Möglichkeit, z.B. wenn Profitcenter leer ist.
1)Nur bei einem Posten Profitcenter 1 eingetragen:
Bei der Buchung werden bei anderen nicht eingetragenen Posten Segment auch als 1 automatisch eintragen.
2) Nur bei einem Posten Profitcenter 99 eingetragen:
Bei der Buchung werden bei anderen nicht eingetragenen Posten Segment auch als 99 automatisch eintragen.
3) bei einem Posten Profitcenter 1 und einem anderen Posten Profitcenter 99 eingetragen:
Die Segmente der anderen nicht eingetragenen Posten werden als 99 eingetragen.
Code: Alles auswählen.
data: lf_segment 1 type flag,
lf_segment99 type flag.
field-symbols: <ls_bseg> type bseg.
bseg_t = bool_data-bseg.
sort bseg_t by bschl ascending.
* herausfinden, ob wir nur segment 1 oder 99 oder beides haben
Loop at bseg_t assigning <ls_bseg>.
case <ls_bseg>-segment.
when '0000000001'.
lf_segment1 = 'X'.
when '00000000099'.
lf_segment99 = 'X'
endcase.
Endloop.
Code: Alles auswählen.
loop at bseg_t into bseg.
if tabix eq 0.
bschl_m = bseg-bschl.
endif.
if bschl_m ne bseg-bschl.
if lf_segment1 EQ 'X' and lf_segment99 NE 'X'.
* wenn nur Segment 1 existiert, sollen alle leeren Segmente auch als 1 betrachtet werden
if bseg-segment eq '0000000001' or bseg-segment is initial.
ges_seg_1_haben = ges_seg_1_haben + bseg-wrbtr.
elseif bseg-segment eq '0000000099' .
ges_seg_99_haben = ges_seg_99_haben + bseg-wrbtr.
endif.
if lf_segment1 NE 'X' and lf_segment99 EQ 'X'.
* wenn nur Segment 99 existiert, sollen alle leeren Segmente auch als 99 betrachtet werden
if bseg-segment eq '0000000001'.
ges_seg_1_haben = ges_seg_1_haben + bseg-wrbtr.
elseif bseg-segment eq '0000000099' or bseg-segment is initial.
ges_seg_99_haben = ges_seg_99_haben + bseg-wrbtr.
endif.
if lf_segment1 EQ 'X' and lf_segment99 EQ 'X'.
* wenn beide Segmente existiert, sollen alle leeren Segmente auch als 99 betrachtet werden
if bseg-segment eq '0000000001'.
ges_seg_1_haben = ges_seg_1_haben + bseg-wrbtr.
elseif bseg-segment eq '0000000099' or bseg-segment is initial.
ges_seg_99_haben = ges_seg_99_haben + bseg-wrbtr.
endif.
endif.
else.
--> hier gleiches wie oben, nur für SOLL