‎2008 Oct 22 11:26 PM
Dear all,
I am getting performance problem in following code.
Can any one guide how to improve the performance problem?
SELECT werks matnr lgort labst FROM mard INTO TABLE gt_mardstk
WHERE labst GT u20190u2019.
LOOP AT gt_mardstk .
gt_transfer-matnr = gt_mardstk-matnr .
gt_transfer-werks = gt_mardstk-werks .
gt_transfer-labst = gt_mardstk-labst .
SHIFT gt_transfer-labst RIGHT UP TO '.'.
SHIFT gt_transfer-labst RIGHT.
SHIFT gt_transfer-labst LEFT DELETING LEADING space.
APPEND gt_transfer .
DELETE gt_mardstk WHERE matnr = gt_transfer-matnr
AND werks = gt_transfer-werks
AND labst = gt_transfer-labst.
CLEAR gt_transfer .
ENDLOOP .
DESCRIBE TABLE gt_transfer LINES lv_cnt .
IF lv_cnt > 0 .
PERFORM open_file USING p_file.
LOOP AT gt_transfer .
CONDENSE gt_transfer-labst.
MOVE-CORRESPONDING gt_transfer TO ls_transfer .
MOVE ls_transfer TO lv_string.
TRANSFER lv_string TO p_file .
ENDLOOP .
CLOSE DATASET p_file
Thanks
‎2008 Oct 22 11:27 PM
Did you check Code Inspector and SE30 yourself to figure out potential issues yourself?
‎2008 Oct 22 11:46 PM
In SE30
Evaluate option saying:
ABAP 55.1%
Database 10%
System 34.9%
Do you see any kind of program improvement possibility?
This program is taking more then 10 Hr run and still running,
But total records selected from MARD is 600000.
Thanks
‎2008 Oct 23 12:10 AM
Why are you specifying where condition in trhe Delete command below, it is already in the same loop , so just put delete.
LOOP AT gt_mardstk .
gt_transfer-matnr = gt_mardstk-matnr .
gt_transfer-werks = gt_mardstk-werks .
gt_transfer-labst = gt_mardstk-labst .
SHIFT gt_transfer-labst RIGHT UP TO '.'.
SHIFT gt_transfer-labst RIGHT.
SHIFT gt_transfer-labst LEFT DELETING LEADING space.
APPEND gt_transfer .
DELETE gt_mardstk WHERE matnr = gt_transfer-matnr <-------------------
AND werks = gt_transfer-werks <-----------------
AND labst = gt_transfer-labst. <--------------
CLEAR gt_transfer .
ENDLOOP .
‎2008 Oct 23 6:00 PM
No Solution I think, other then I have to run report for small stores variant, not for bulk run.
I still appreciate if any other solution.
Regards
‎2008 Oct 23 6:28 PM
Did you see the post by MxG? I think that's where your problem lies.
Rob
‎2008 Oct 24 1:49 AM
Thanks for reply, I just combined both loop like follows,
and program takes only 205 sec compared to 44359 with old code.
SELECT werks matnr lgort labst FROM mard
INTO TABLE gt_mardstk
WHERE labst GT v_labst.
DESCRIBE TABLE gt_mardstk LINES lv_cnt .
IF lv_cnt > 0 .
PERFORM open_file USING p_file.
LOOP AT gt_mardstk .
gt_transfer-matnr = gt_mardstk-matnr .
gt_transfer-werks = gt_mardstk-werks .
gt_transfer-labst = gt_mardstk-labst .
SHIFT gt_transfer-labst RIGHT UP TO '.'.
SHIFT gt_transfer-labst RIGHT.
SHIFT gt_transfer-labst LEFT DELETING LEADING space.
IF gt_transfer-labst NE 0.
CONDENSE gt_transfer-labst.
MOVE-CORRESPONDING gt_transfer TO ls_transfer .
MOVE ls_transfer TO lv_string.
TRANSFER lv_string TO p_file .
ENDIF.
CLEAR gt_transfer .
ENDLOOP .