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
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 .
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |