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.