Przez FM PYXX_READ_PAYROLL_RESULT dla kolejnych pernr zbieram sobie dane dotyczące kwot na wybranych składnikach płacowych.
Kod: Zaznacz cały
IF ls_result-inter-rt IS NOT INITIAL.
*SK_1000
LOOP AT ls_result-inter-rt INTO ls_rt WHERE lgart = '1000'.
wa_da23-sk_1000 = wa_da23-sk_1000 + ls_rt-betrg.
CLEAR ls_rt.
ENDLOOP.
endif.
Wydaje się to proste w przypadku, gdy badamy tylko jeden składnik płacowy, ale tych składników do sprawdzenia mam... prawie 50.
Wydaje mi się bezsensowne, by 50x tworzyć kod z loopem jak wyżej, sensowniej by było zrobić konstrukcję w stylu:
1) listę składników wrzucić do tabeli it_skladniki
2) loopnąć po tabeli it_skladniki
3) powyższy kod przemianować na coś w stylu
Kod: Zaznacz cały
loop at it_skladniki into wa_skladniki.
LOOP AT ls_result-inter-rt INTO ls_rt WHERE lgart = '<wa_skladniki-skladnik>'.
wa_da23-sk_<wa_skladniki-skladnik> = wa_da23-sk_<wa_skladniki-skladnik> + ls_rt-betrg.
CLEAR ls_rt.
ENDLOOP.
endloop.
Idąc dalej z tematem: o ile dobrze kojarzę, mógłbym wykorzystać składnię w stylu:
FIELD-SYMBOLS <fs> TYPE lgart.
Tylko jak to dalej przekuć?
Kod: Zaznacz cały
TYPES: BEGIN OF ls_lgarts,
lgart TYPE lgart,
END OF ls_lgarts.
DATA: it_lgarts TYPE TABLE OF ls_lgarts.
DATA: wa_lgarts TYPE ls_lgarts.
wa_lgarts-lgart = 1000.
APPEND wa_lgarts TO it_lgarts.
clear wa_lgarts.
wa_lgarts-lgart = 1002.
APPEND wa_lgarts TO it_lgarts.
clear wa_lgarts.
wa_lgarts-lgart = 1003.
APPEND wa_lgarts TO it_lgarts.
clear wa_lgarts.
FIELD-SYMBOLS <fs> TYPE lgart.
loop at it_lgarts into wa_lgarts.
<fs> = wa_lgarts-lgart.
LOOP AT ls_result-inter-rt INTO ls_rt WHERE lgart = <fs>.
wa_da23-sk_<fs> = wa_da23-sk_<fs> + ls_rt-betrg.
CLEAR ls_rt.
ENDLOOP.
endloop.