Application Development 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: 

performance issue

Former Member
0 Kudos

Hi,

Pls check this piece of code .

My focus is on performance.

Pls help me to improve effeciency of this code.

Moving all the respective internal tables to i_customermaster.

LOOP AT I_KNA1 .

READ TABLE I_ADRC WITH KEY ADDRNUMBER = I_KNA1-ADRNR.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_KNA1 TO I_CUSTOMERMASTER.

MOVE-CORRESPONDING I_ADRC TO I_CUSTOMERMASTER.

ENDIF.

READ TABLE I_ADR2 WITH KEY ADDRNUMBER = I_KNA1-ADRNR.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_ADR2 TO I_CUSTOMERMASTER.

ENDIF.

READ TABLE I_ADR6 WITH KEY ADDRNUMBER = I_KNA1-ADRNR.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_ADR6 TO I_CUSTOMERMASTER.

ENDIF.

READ TABLE I_KNVV WITH KEY KUNNR = I_KNA1-KUNNR.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_KNVV TO I_CUSTOMERMASTER.

ENDIF.

READ TABLE I_J1IMOCUST WITH KEY KUNNR = I_KNA1-KUNNR.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_J1IMOCUST TO I_CUSTOMERMASTER.

ENDIF.

READ TABLE I_KNBK WITH KEY KUNNR = I_KNA1-KUNNR.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_KNBK TO I_CUSTOMERMASTER.

ENDIF.

READ TABLE I_KNB1 WITH KEY KUNNR = I_KNA1-KUNNR.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_KNB1 TO I_CUSTOMERMASTER.

ENDIF.

READ TABLE I_KNVK WITH KEY KUNNR = I_KNA1-KUNNR.

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_KNVK TO I_CUSTOMERMASTER.

ENDIF.

READ TABLE I_BNKA WITH KEY BANKS = I_KNBK-BANKS .

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_BNKA TO I_CUSTOMERMASTER.

ENDIF.

READ TABLE I_TSAD3T WITH KEY TITLE = I_ADRC-TITLE .

IF SY-SUBRC = 0.

MOVE-CORRESPONDING I_TSAD3T TO I_CUSTOMERMASTER.

ENDIF.

APPEND I_CUSTOMERMASTER.

ENDLOOP.

LOOP AT I_CUSTOMERMASTER.

WRITE : / I_CUSTOMERMASTER.

I_CUSTOMERMASTER-ZDATE = SY-DATUM.

I_CUSTOMERMASTER-ZTIME = SY-UZEIT.

I_CUSTOMERMASTER-FLAG = 'X'.

"To indicate the records to be transferred.

ZCUSTOMER_MASTER = I_CUSTOMERMASTER. "To update the Z-Table.

MODIFY ZCUSTOMER_MASTER.

MODIFY I_CUSTOMERMASTER.

ENDLOOP.

4 REPLIES 4

Former Member
0 Kudos

In palce of Move corresponding just transfer the data in the corresponding fields filed by field .

When records a and b have the exact same structure, it is more efficient to MOVE a TO b than to

MOVE-CORRESPONDING a TO b.

MOVE BSEG TO *BSEG.

Is better than

MOVE-CORRESPONDING BSEG TO *BSEG.

<REMOVED BY MODERATOR>

Edited by: Ashish Paliwal on Apr 16, 2008 8:31 PM

Edited by: Alvaro Tejada Galindo on Apr 16, 2008 1:36 PM

Former Member
0 Kudos

When ever u use READ TABLE add BINARY SEARCH clause at the end.Prior to read statement sort itab.

Former Member
0 Kudos

Jaya,

It looks to me like all these internal tables are hashed tables. WIth a quick look, I don't see anything blatantly wrong with the code you have posted with the exception of the below.


LOOP AT I_CUSTOMERMASTER.
  WRITE : / I_CUSTOMERMASTER.
  I_CUSTOMERMASTER-ZDATE = SY-DATUM.
  I_CUSTOMERMASTER-ZTIME = SY-UZEIT.
  I_CUSTOMERMASTER-FLAG = 'X'.
  "To indicate the records to be transferred.
  ZCUSTOMER_MASTER = I_CUSTOMERMASTER. "To update the Z-Table.
  MODIFY ZCUSTOMER_MASTER.
  MODIFY I_CUSTOMERMASTER.

ENDLOOP.

In the above code, Z table is being updated one record at a time. Firstly, MODIFY is an expensive statement. Secondly, updating one at a time, is inefficient.

Look for help on MODIFY statement. Do something like below:


LOOP AT I_CUSTOMERMASTER.
  WRITE : / I_CUSTOMERMASTER.
  I_CUSTOMERMASTER-ZDATE = SY-DATUM.
  I_CUSTOMERMASTER-ZTIME = SY-UZEIT.
  I_CUSTOMERMASTER-FLAG = 'X'.
  "To indicate the records to be transferred.
  ZCUSTOMER_MASTER = I_CUSTOMERMASTER. "To update the Z-Table.
  MODIFY I_CUSTOMERMASTER.
ENDLOOP.

MODIFY ZCUSTOMER_MASTER FROM TABLE I_CUSTOMERMASTER.

If there are a lot of records in I_CUSTOMERMASTER table, you may see significant improvement. Otherwise, you have to look elsewhere. Run time analysis (SE30) will help you in that task.

Edited by: Sudhi Karkada on Apr 16, 2008 5:12 PM

0 Kudos

Hi sudi...

Thanks a lot.

But When I checked after making changes to my code it didnt make any diffrence...Dnt know why.

response time was agin talmost same..