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

general

Former Member
0 Likes
660

Hi folks,

LOOP AT IT_EKPO INTO WA_EKPO.

SELECT single kunnr

ADRNR

FROM KNA1

INTO CORRESPONDING FIELDS OF wa_KNA1 WHERE KUNNR = wa_EKPO-KUNNR.

IF SY-SUBRC = 0.

SELECT SINGLE ADDRNUMBER

NAME1

STREET

HOUSE_NUM1

MC_CITY1

POST_CODE1

REGION

COUNTRY

FROM ADRC INTO CORRESPONDING FIELDS OF WA_ADRC1

WHERE ADDRNUMBER = WA_KNA1-ADRNR.

ENDIF.

ENDLOOP.

how can i make this code more efficient.

regards

jana

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
643

hi

<b>read table IT_EKPO INTO WA_EKPO .</b>

SELECT single kunnr

ADRNR

FROM KNA1

INTO CORRESPONDING FIELDS OF wa_KNA1 WHERE KUNNR = wa_EKPO-KUNNR

IF SY-SUBRC = 0.

SELECT SINGLE ADDRNUMBER

NAME1

STREET

HOUSE_NUM1

MC_CITY1

POST_CODE1

REGION

COUNTRY

FROM ADRC INTO CORRESPONDING FIELDS OF WA_ADRC1

regards

ravish

<b>plz dont forget to reward points if helpful</b>

5 REPLIES 5
Read only

Former Member
0 Likes
644

hi

<b>read table IT_EKPO INTO WA_EKPO .</b>

SELECT single kunnr

ADRNR

FROM KNA1

INTO CORRESPONDING FIELDS OF wa_KNA1 WHERE KUNNR = wa_EKPO-KUNNR

IF SY-SUBRC = 0.

SELECT SINGLE ADDRNUMBER

NAME1

STREET

HOUSE_NUM1

MC_CITY1

POST_CODE1

REGION

COUNTRY

FROM ADRC INTO CORRESPONDING FIELDS OF WA_ADRC1

regards

ravish

<b>plz dont forget to reward points if helpful</b>

Read only

Former Member
0 Likes
643

Hi Janapathi,

<b>Try this out,</b> Avoiding <b>'CORRESPONDING FIELDS OF'</b> would definitely improve the performance.

LOOP AT IT_EKPO INTO WA_EKPO.

SELECT single kunnr

ADRNR

FROM KNA1

INTO (wa_kna1-kunnr, wa_kna1-adrnr) WHERE KUNNR = wa_EKPO-KUNNR.

IF SY-SUBRC = 0.

SELECT SINGLE ADDRNUMBER

NAME1

STREET

HOUSE_NUM1

MC_CITY1

POST_CODE1

REGION

COUNTRY

FROM ADRC INTO

(WA_ADRC1-ADDRNUMBER,

WA_ADRC1-NAME1,

WA_ADRC1-STREET,

WA_ADRC1-HOUSE_NUM1,

WA_ADRC1-MC_CITY1,

WA_ADRC1-POST_CODE1,

WA_ADRC1-REGION,

WA_ADRC1-COUNTRY)

WHERE ADDRNUMBER = WA_KNA1-ADRNR.

ENDIF.

ENDLOOP.

<b>Reward points if this helps,</b>

Kiran

Read only

Former Member
0 Likes
643

Hi Jana,

A solution is maybe the creation of an internal table for KNA1 table


SELECT kunnr
ADRNR
FROM KNA1
INTO CORRESPONDING FIELDS OF table it_KNA1
for all entries in it_ekpo WHERE KUNNR = wa_EKPO-KUNNR.

loop at it_kna1 into wa_kna1.

SELECT SINGLE ADDRNUMBER
NAME1
STREET
HOUSE_NUM1
MC_CITY1
POST_CODE1
REGION
COUNTRY
FROM ADRC INTO CORRESPONDING FIELDS OF WA_ADRC1
WHERE ADDRNUMBER = WA_KNA1-ADRNR.

ENDLOOP.

This way the selection to kna1 is much faster. Afterward you only have to loop your kna1 internal table and get the address.

Hope this helps.

Regards,

Marcelo Moreira

Read only

Former Member
0 Likes
643

HI,

1) LOOP AT IT_EKPO INTO WA_EKPO.

SELECT single kunnr

ADRNR

FROM KNA1

INTO ( wa_KNA1-kunnr , wa_kna1-adrnr )WHERE KUNNR = wa_EKPO-KUNNR.

IF SY-SUBRC = 0.

SELECT SINGLE ADDRNUMBER

NAME1

STREET

HOUSE_NUM1

MC_CITY1

POST_CODE1

REGION

COUNTRY

FROM ADRC (WA_ADRC1-addrnumber,wa_adrc1-name1......)

WHERE ADDRNUMBER = WA_KNA1-ADRNR.

ENDIF.

ENDLOOP

2)Using For All entries and read.

take an internal table same as IT_EKPO

it_ekpo_temp[] = it_ekpo.

sort it_ekpo_temp by kunnr.

delete adjcent duplidated form it_ekpo-temp comparing kunnr.

if not it_ekpo_temp[] is initial.

SELECT single kunnr

ADRNR

FROM KNA1

for all entries in it_ekpo_temp

INTO table it_KNA1

WHERE KUNNR = it_EKPO_temp-KUNNR

endif.

if not it_kna1[] is initial.

SELECT SINGLE ADDRNUMBER

NAME1

STREET

HOUSE_NUM1

MC_CITY1

POST_CODE1

REGION

COUNTRY

FROM ADRC

for all entries in it_kna1

into table it_ADRC1

WHERE ADDRNUMBER = it_kna1-ADRNR.

ENDIF.

endif.

sort it_kna1 by kunnr.

sort it_adrc1 by adrnr.

loop at it_ekpo.

read table it_kna1 with key kunnr = it_ekpo-kunnr.

if sy-subrc eq 0.

read table it_adrc1 with key adrnr = it_kna1-adrnr.

endif.

endif.

Thansk

Mahesh

Read only

Former Member
0 Likes
643

Hi Janapathi,

There are two flaws in your code:

SAP dose not appreciate:

1. using corresponding fields in select

2. and using select in loop!. (you can check how much performance is decreased if you are using this. use this if you have already tried 99 ways).

first of all take into a separate inernal table for addrnumber and values against addrnumber, then read it. your program will smile.

regards,

Krishnendu