‎2022 Aug 04 2:19 PM
hi,
help abap begginer
I found program for my project, except it returns a Dump, (Time-out), the DO iteration never ends, i think i have to add a stop condition but i don't know where exactly and how stop it. plz correct me plz. thanks
l_date = ls_new_p2001-begda - 1.
DO.
LOOP AT lt_persw INTO ls_persw WHERE datum = l_date
AND ftkla = 0
AND stdaz <> 0.
ENDLOOP.
IF sy-subrc = 0.
SELECT SINGLE * FROM pa2001 INTO pa2001 WHERE pernr = ls_new_p2001-pernr
AND subty = 'CE'
AND begda <= l_date
AND endda >= l_date.
IF sy-subrc = 0.
l_date = l_date - 1.
ELSE.
EXIT.
ENDIF.
ELSE.
l_date = l_date - 1.
ENDIF.
ENDDO.
‎2022 Aug 05 8:29 AM
‎2022 Aug 05 8:38 AM
For clarity and efficiency use something like this.
l_date = ls_new_p2001-begda - 1.
DO.
IF entry_exists( l_date ).
SELECT SINGLE * FROM pa2001 INTO pa2001 WHERE pernr = ls_new_p2001-pernr
AND subty = 'CE'
AND begda <= l_date
AND endda >= l_date.
IF sy-subrc = 0.
l_date = l_date - 1.
ELSE.
EXIT.
ENDIF.
ELSE.
l_date = l_date - 1.
ENDIF.
ENDDO.
...
METHOD entry_exists. " Returning parameter r_result type abap_bool
LOOP AT lt_persw INTO ls_persw WHERE datum = l_date
AND ftkla = 0
AND stdaz <> 0.
r_result = abap_true.
RETURN.
ENDLOOP.
ENDMETHOD.But that's not the cause of your error.
There is one place I can see where you'll get an eternal loop. In your LOOP AT - if there are no entries that match from the start date down, then the loop will never end.
Try running it in debug.
‎2022 Aug 05 9:02 AM
matthew.billingham thanks for your answer,