2012 Sep 03 11:19 AM
in below program taking more time during updating cmd in bold. please advise me what is the problem. even for a single statement it is taking 1 min.
please help.
FORM write.
LOOP AT i_zsd_serial1.
* Padding '0' infront serial number
*----------------------------------
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = i_zsd_serial1-i_serial_num
IMPORTING
output = i_zsd_serial1-i_serial_num.
***********************************
* Updating ZSD_SERIAL1 table
*----------------------------
k = STRLEN( i_zsd_serial1-i_msisdn ).
IF len = k.
SELECT COUNT(*)
FROM zsd_serial1
INTO cnt
WHERE msisdn = i_zsd_serial1-i_msisdn.
IF cnt = 0.
UPDATE zsd_serial1
SET msisdn = i_zsd_serial1-i_msisdn
WHERE serial_num = i_zsd_serial1-i_serial_num
AND msisdn EQ ' '.
IF sy-subrc EQ 0.
i = i + 1.
ENDIF.
ELSE.
d_zsd_serial1-d_serial_num = i_zsd_serial1-i_serial_num.
d_zsd_serial1-d_msisdn = i_zsd_serial1-i_msisdn.
APPEND d_zsd_serial1.
dup = 'D:\Duplicate_MSISDN.TXT'.
ENDIF.
ELSE.
iv_zsd_serial1-iv_serial_num = i_zsd_serial1-i_serial_num.
iv_zsd_serial1-iv_msisdn = i_zsd_serial1-i_msisdn.
APPEND iv_zsd_serial1.
iv = 'D:\Invalid_MSISDN.TXT'.
ENDIF.
ENDLOOP.
in below program taking more time during updating cmd in bold. please advise me what is the problem. even for a single statement it is taking 1 min.
please help.
FORM write.
LOOP AT i_zsd_serial1.
* Padding '0' infront serial number
*----------------------------------
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = i_zsd_serial1-i_serial_num
IMPORTING
output = i_zsd_serial1-i_serial_num.
***********************************
* Updating ZSD_SERIAL1 table
*----------------------------
k = STRLEN( i_zsd_serial1-i_msisdn ).
IF len = k.
SELECT COUNT(*)
FROM zsd_serial1
INTO cnt
WHERE msisdn = i_zsd_serial1-i_msisdn.
IF cnt = 0.
UPDATE zsd_serial1
SET msisdn = i_zsd_serial1-i_msisdn
WHERE serial_num = i_zsd_serial1-i_serial_num
AND msisdn EQ ' '.
IF sy-subrc EQ 0.
i = i + 1.
ENDIF.
ELSE.
d_zsd_serial1-d_serial_num = i_zsd_serial1-i_serial_num.
d_zsd_serial1-d_msisdn = i_zsd_serial1-i_msisdn.
APPEND d_zsd_serial1.
dup = 'D:\Duplicate_MSISDN.TXT'.
ENDIF.
ELSE.
iv_zsd_serial1-iv_serial_num = i_zsd_serial1-i_serial_num.
iv_zsd_serial1-iv_msisdn = i_zsd_serial1-i_msisdn.
APPEND iv_zsd_serial1.
iv = 'D:\Invalid_MSISDN.TXT'.
ENDIF.
ENDLOOP.
2012 Sep 03 6:16 PM
Hi,
what DB-type is this?
How big is table zsd_serial1? (In MB, in # rows?)
What indexes do you have on this table?
You might need at least an Index with filed serial_num in the first position
(or in second if table is clientdependent and client (MANDT,...) is the first).
Depending on how selective serial_num is, you might need msisdn in additon.
Is the update a unique one, or is serial_num hitting more than one row?
An EXPLAIN from ST05 would be helpful!
Volker