‎2008 Apr 28 5:27 PM
Hi Gurus,
i need some help with a nested loop and how i can save some performance.
the following coding is in place right now:
DATA: lref_demand TYPE REF TO /mrss/if_sge_single_demand.
DATA: lref_assignment TYPE REF TO /mrss/cl_sge_assignment.
DATA: lt_assignments TYPE TABLE OF /mrss/t_assignment.
DATA: ls_assignments TYPE /MRSS/T_ASSIGNMENT.
DATA: ls_ass2 TYPE /mrss/t_assignment.
DATA: ls_assignment_data_detail TYPE /mrss/t_assignment_wfm_det,
ls_ass_data_detail TYPE /mrss/t_assignment_wfm_det.
lref_demand = ls_demands-object.
lref_assignment = ls_ass2-object.
IF NOT lref_assignment IS INITIAL.
ls_assignments = ls_ass2.
APPEND ls_assignments TO lt_assignments.
ELSE.
Get Assignments
CALL METHOD lref_demand->assignments_get
RECEIVING
rt_assignments = lt_assignments.
ENDIF.
sort lt_assignments.
LOOP AT lt_assignments INTO ls_assignments.
lref_assignment = ls_assignments-object.
ls_assignment_data_detail = lref_assignment->data_detail_get( ).
LOOP AT lt_assignments INTO ls_ass2.
lref_assignment = ls_ass2-object.
ls_ass_data_detail = lref_assignment->data_detail_get( ).
Compare if overlapped assignment exists
IF ls_assignment_data_detail-beg_tstmp >=
ls_ass_data_detail-beg_tstmp AND
ls_assignment_data_detail-beg_tstmp <=
ls_ass_data_detail-end_tstmp AND
ls_assignment_data_detail-assignment_key <>
ls_ass_data_detail-assignment_key.
Call Alert Monitor
CALL METHOD me->alert_update
EXPORTING
lt_ass = ls_assignments
lt_demands = ls_demands
wa_alert = '1'
ls_szena = 'ANV'.
ENDIF.
ENDLOOP. "lt_assignmetns 2
ENDLOOP. " lt_assignments
The performance is very poor due to the nested loops. Anyone have an idea how i can save some performance here?
Thanks alot for you help
‎2008 Apr 28 5:43 PM
If your requirement satifies then replace the second loop by Read Table.
Regards,
Amit
‎2008 Apr 28 5:50 PM
to clear up the requirement i will describe it.
I need to loop over lt_assignments.
lt_assignments has a field with a object which i need to select the a full set of data which i then need to compare against each other.
Example:
lt_assignment has field "object"
using this code i select the full details
"lref_assignment = ls_assignments-object.
ls_assignment_data_detail = lref_assignment->data_detail_get( )."
Now i need to compare these details which each other to like you can see in the IF clause.
I hope i could clear up my requirement.
Edited by: Rene Portz on Apr 28, 2008 6:50 PM
‎2008 Apr 29 8:02 AM
Hi Rene,
I think there is no need to loop yout lt_assignments into ls_ass2 ..
take two variables of type ref of /mrss/cl_sge_assignment
Then Your Problem could solve..
regards,
sg