Skip to Content
0
Former Member
Jun 11, 2007 at 12:58 PM

Please Improve Performance of Code

23 Views

Hi All,

How to improve performance of this following code.

Please help me.

Its too urgent.

**********************

TYPES : BEGIN OF ICUSTOMER,

KUNNR TYPE KUNNR,

NAME1 TYPE NAME1,

SORTL TYPE SORTL,

KTOKD TYPE KTOKD,

TELF1 TYPE TELF1,

TELFX TYPE TELFX,

STRAS TYPE STRAS,

REGIO TYPE REGIO,

ORT01 TYPE ORT01,

LAND1 TYPE LAND1,

PSTLZ TYPE PSTLZ,

LOEVM TYPE LOEVM,

NODEL TYPE NODEL,

ADRNR TYPE ADRNR,

SPRAS TYPE SPRAS,

ZTERM TYPE DZTERM,

TRANSPZONE TYPE LZONE,

ATINN TYPE ATINN,

ATWTB TYPE ATWTB,

STR_SUPPL1 TYPE AD_STRSPP1,

STR_SUPPL2 TYPE AD_STRSPP2,

END OF ICUSTOMER.

TYPES : BEGIN OF ICAWN ,

ATINN TYPE CAWN-ATINN,

ATWTB TYPE CAWNT-ATWTB,

END OF ICAWN.

DATA : I_ICUSTOMER TYPE STANDARD TABLE OF ICUSTOMER. " OCCURS 0 WITH HEADER LINE.

DATA : WA_ICUSTOMER TYPE ICUSTOMER.

DATA : I_ICAWN TYPE STANDARD TABLE OF ICAWN. " OCCURS 0 WITH HEADER LINE.

DATA : WA_ICAWN TYPE ICAWN.

DATA: FIELD_POSITION LIKE DD03L-POSITION.

DATA: HOLD_POSITION LIKE DD03L-POSITION.

DATA: HOLD_LINE_COUNT LIKE SY-TABIX .

FIELD-SYMBOLS : <FC>.

select k1KUNNR k1NAME1 k1SORTL k1KTOKD k1TELF1 k1TELFX k1STRAS k1REGIO

k1ORT01 k1LAND1 k1PSTLZ k1LOEVM k1NODEL k1ADRNR k1~SPRAS

K2~ZTERM

ATRANSPZONE ASTR_SUPPL1 A~STR_SUPPL2

INTO corresponding fields of TABLE I_ICUSTOMER FROM

KNA1 AS K1

INNER JOIN KNB1 AS K2 ON K2KUNNR = K1KUNNR

INNER JOIN ADRC AS A ON AADDRNUMBER = K1ADRNR

WHERE ( k1~KTOKD = 'Z001' OR

k1~KTOKD = 'Z002' OR

k1~KTOKD = 'Z003' OR

k1~KTOKD = 'Z004' OR

k1~KTOKD = 'ZSAI' ) and

k2~bukrs = '0100'. " To Avoid duplicate records.

IF SY-SUBRC NE 0.

RAISE NO_DATA_FOUND.

ENDIF.

LOOP AT I_ICUSTOMER INTO WA_ICUSTOMER WHERE KTOKD = 'Z001'.

SELECT T2ATINN T3ATWTB INTO WA_ICAWN UP TO 1 ROWS

FROM AUSP AS T1

INNER JOIN CAWN AS T2

ON T2ATINN = T1ATINN AND

T2ATWRT = T1ATWRT

INNER JOIN CAWNT AS T3

ON T3ATINN = T1ATINN AND

T3ATZHL = T2ATZHL

WHERE T1~OBJEK = WA_ICUSTOMER-KUNNR AND

T3~SPRAS = 'EN' AND

T3~ADZHL = '0' .

CHECK SY-SUBRC EQ 0.

WA_ICUSTOMER-atinn = wa_ICAWN-atinn.

WA_ICUSTOMER-atwtb = wa_ICAWN-atwtb.

MODIFY I_ICUSTOMER FROM WA_ICUSTOMER INDEX SY-TABIX.

ENDSELECT.

ENDLOOP.

LOOP AT I_ICUSTOMER INTO WA_ICUSTOMER.

CUSTOMER-KUNNR = WA_ICUSTOMER-KUNNR.

CUSTOMER-NAME1 = WA_ICUSTOMER-NAME1.

CUSTOMER-SORTL = WA_ICUSTOMER-SORTL.

CUSTOMER-TELF1 = WA_ICUSTOMER-TELF1.

CUSTOMER-TELFX = WA_ICUSTOMER-TELFX.

CUSTOMER-STRAS = WA_ICUSTOMER-STRAS.

CUSTOMER-STR_SUPPL1 = WA_ICUSTOMER-STR_SUPPL1.

CUSTOMER-STR_SUPPL2 = WA_ICUSTOMER-STR_SUPPL2.

CUSTOMER-REGIO = WA_ICUSTOMER-REGIO.

CUSTOMER-ORT01 = WA_ICUSTOMER-ORT01.

CUSTOMER-LAND1 = WA_ICUSTOMER-LAND1.

CUSTOMER-PSTLZ = WA_ICUSTOMER-PSTLZ.

if WA_icustomer-ktokd = 'Z002'.

CUSTOMER-TRANSPZONE = WA_ICUSTOMER-TRANSPZONE.

ELSE.

CUSTOMER-TRANSPZONE = ''.

endif.

if WA_icustomer-ktokd = 'Z001' or WA_icustomer-ktokd = 'Z004'.

CUSTOMER-ZTERM = WA_ICUSTOMER-ZTERM.

ELSE.

CUSTOMER-ZTERM = ''.

endif.

CUSTOMER-LOEVM = WA_ICUSTOMER-LOEVM.

CUSTOMER-NODEL = WA_ICUSTOMER-NODEL.

  • if WA_ICUSTOMER-KTOKD = 'Z001'.

CUSTOMER-ATINN = WA_ICUSTOMER-ATINN.

CUSTOMER-ATWTB = WA_ICUSTOMER-ATWTB.

  • ELSE.

IF WA_ICUSTOMER-KTOKD = 'Z001'.

CUSTOMER-KTOKD = 'SP'.

ELSEIF WA_ICUSTOMER-KTOKD = 'Z002'.

CUSTOMER-KTOKD = 'SH'.

ELSEIF WA_ICUSTOMER-KTOKD = 'Z003'.

CUSTOMER-KTOKD = 'PY'.

ELSEIF WA_ICUSTOMER-KTOKD = 'Z004'.

CUSTOMER-KTOKD = 'BP'.

ELSEIF WA_ICUSTOMER-KTOKD = 'ZSAI'.

CUSTOMER-KTOKD = 'IC'.

ENDIF.

append CUSTOMER.

ENDLOOP.

Thanks,

Subu.