‎2006 Sep 18 12:44 PM
Hi All ,
I have a select join st. like below , for this i need to add email id field into this table 'ITAB_DISPLAY' AND this can be obtained from table ADR6-smtp_addr and i the code no .'2' indictes tht , the requirment is to show all customers thought the email field is not filled . at the moment its displaying all customers who have e-mail id.part of this code is working correctly thought there r some missing email id for customers which r present in the table adr6.
1. select kna1~kunnr
kna1~land1
kna1~adrnr
knvv~vkorg
knvv~vkbur
INTO corresponding fields of table ITAB_DISPLAY
FROM kna1INNER JOIN
knvv ON knvvkunnr = kna1kunnr
where kna1~kunnr IN s_kunnr
AND kna1~land1 IN s_land1
AND kna1~name1 IN s_name1
2. LOOP at itab_display.
CLEAR itab_data.
SELECT smtp_addr FROM adr6 INTO corresponding fields of table
itab_data where addrnumber = itab_display-adrnr.
append itab_data.
DELETE adjacent duplicates from itab_data.
LOOP at itab_data.
MOVE itab_data-smtp_addr TO itab_display-email.
MODIFY itab_display.
ENDLOOP.
ENDLOOP.
Any suggestions on this plss.....
Thxs,
Vind.
‎2006 Sep 18 12:53 PM
hi,
with 1 join query u can solve this.
data : begin og ITAB_DISPLAY occurs 0,
land1 .. ,
adrnr .. ,
vkorg .. ,
vkbur ..,
email .. ,
end of itab_display.
1. select kna1~kunnr
kna1~land1
kna1~adrnr
knvv~vkorg
knvv~vkbur
adr6~smtp_addr
INTO table ITAB_DISPLAY
FROM kna1
INNER JOIN
knvv
ON knvvkunnr = kna1kunnr
INNER JOIN
adr6
on adr6addrnumber = kna1adrnr
where kna1~kunnr IN s_kunnr
AND kna1~land1 IN s_land1
AND kna1~name1 IN s_name1.
rgds
anver
if hlped mark points
‎2006 Sep 18 12:53 PM
hi,
with 1 join query u can solve this.
data : begin og ITAB_DISPLAY occurs 0,
land1 .. ,
adrnr .. ,
vkorg .. ,
vkbur ..,
email .. ,
end of itab_display.
1. select kna1~kunnr
kna1~land1
kna1~adrnr
knvv~vkorg
knvv~vkbur
adr6~smtp_addr
INTO table ITAB_DISPLAY
FROM kna1
INNER JOIN
knvv
ON knvvkunnr = kna1kunnr
INNER JOIN
adr6
on adr6addrnumber = kna1adrnr
where kna1~kunnr IN s_kunnr
AND kna1~land1 IN s_land1
AND kna1~name1 IN s_name1.
rgds
anver
if hlped mark points
‎2006 Sep 18 1:00 PM
Hi Anversha,
I already tried with the join st. as u told , its displaying only the customers who have an e-mail id , for customers who does have an e-mail id are been ignored which should be displayed as well in the grid ....
Thxs,
Vind.
‎2006 Sep 18 12:53 PM
Select ADDRNUMBER, SMTP_ADDR into IT itab_Data.
loop at itab_display.
read table itab_data with key addrnumber = itab_display-adrnr.
if sy-subrc <> 0.
itab_dispaly header will have customer details with no email id
endif.
endloop.
Message was edited by: Anupama Reddy
‎2006 Sep 18 12:55 PM
Hello,
The first thing I tell is never use select statment inside a loop.
U can use select for all entries for selecting data from second table based on the first internal table.
Other thing is not clear,please explain once again.
Regards
‎2006 Sep 18 12:56 PM
Hi Vind,
data : v_index like sy-index.
select kna1~kunnr
kna1~land1
kna1~adrnr
knvv~vkorg
knvv~vkbur
INTO corresponding fields of table ITAB_DISPLAY
FROM kna1INNER JOIN
knvv ON knvvkunnr = kna1kunnr
where kna1~kunnr IN s_kunnr
AND kna1~land1 IN s_land1
AND kna1~name1 IN s_name1
2. LOOP at itab_display.
CLEAR itab_data.
SELECT smtp_addr FROM adr6 INTO corresponding fields of table
itab_data where addrnumber = itab_display-adrnr.
append itab_data.
DELETE adjacent duplicates from itab_data.
ENDLOOP.
v_index = 1.
LOOP at itab_display.
read table itab_data with key <give field name which is common in both the tables>.I think it should be customer(kunnr).
if sy-subrc eq 0.
MOVE itab_data-smtp_addr TO itab_display-email.
MODIFY itab_display index v_index.
v_index = v_index + 1.
ENDLOOP.
try like this
Regards,
nagaraj
‎2006 Sep 18 1:02 PM
Hi ,
change ur code as below
. select kna1~kunnr
kna1~land1
kna1~adrnr
knvv~vkorg
knvv~vkbur
INTO corresponding fields of table ITAB_DISPLAY
FROM kna1INNER JOIN
knvv ON knvvkunnr = kna1kunnr
where kna1~kunnr IN s_kunnr
AND kna1~land1 IN s_land1
AND kna1~name1 IN s_name1
if not ITAB_DISPLAY[] is not initial.
2. LOOP at itab_display.
CLEAR itab_data.
SELECT single smtp_addr FROM adr6 INTO lv_address where addrnumber = itab_display-adrnr.
if sy-subrc eq 0.
itab_display-address = lv_address.
modify itab_display transporting address.
endif.
endloop.
DELETE adjacent duplicates from itab_data.
Regards
amole