Когато анализирах проблем с производителността в скрипт за експортиране на SAP (SAP R/3, 4.06b), открих следния код, който се изпълнява около 10 минути в тестовата система. Може да е малко по-бърз в производството, но не мога да го тествам там.
LOOP AT ZMARD.
LOOP AT ZCOMB.
IF ZCOMB-MATNR = ZMARD-MATNR.
IF ZCOMB-LGORT = ZMARD-LGORT.
IF ZCOMB-IND = ' '.
IF ZCOMB-PLUMI = '+'.
ZMARD-LABST = ZMARD-LABST + ZCOMB-MNG01.
ELSEIF ZCOMB-PLUMI = '-'.
ZMARD-LABST = ZMARD-LABST - ZCOMB-MNG01.
ENDIF. "PLUMI
ENDIF. "IND
ENDIF. "LGORT
ENDIF. "MATNR
ENDLOOP.
IF ZMARD-LABST < 0.
ZMARD-LABST = 0.
ENDIF.
WRITE ZMARD-LABST DECIMALS 0 TO ZMARD-ZLABST.
MODIFY ZMARD.
ENDLOOP.
Имате ли съвет как тези цикли могат да бъдат оптимизирани/сглобени в един единствен цикъл?