Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

taking long time during update ztable

Arif1
Active Participant
0 Likes
371

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.

1 REPLY 1
Read only

volker_borowski2
Active Contributor
0 Likes
339

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