05-10-2006 11:04 AM
Hi Experts
I have itabs like this
T_JEST
OBJNR STAT
<b>IEEE9000-04 I0099
IEEE9000-04 I0320</b>
IEEE9000-05 I0100
IEEE9000-05 I0320
IEEE9000-07 I0100
IEEE9000-07 I0320
T_ET
EQUNR OBJNR VKBUR STAT
9AA IEEE9000-04 9001 I0320
9BB IEEE9000-05 9001 I0100
9CC IEEE9000-07 9001 I0100
since T_JEST having double values i want to fill T_ET like this.
EQUNR OBJNR VKBUR STAT
9AA <b>IEEE9000-04</b> 9001 <b>I0099</b>
9AA <b>IEEE9000-04</b> 9001 <b>I0320</b>
9BB IEEE9000-05 9001 I0100
9BB IEEE9000-05 9001 I0320
9CC IEEE9000-07 9001 I0100
9CC IEEE9000-07 9001 I0320
I have written select statements to get above values.
SELECT EQUNR EQTYP EQART INBDT OBJNR VKBUR
INTO CORRESPONDING FIELDS OF TABLE T_ET
FROM V_EQUI
WHERE EQTYP IN S_EQTYP AND
VKBUR IN S_VKBUR AND
INBDT LE P_INBDT.
SELECT * FROM JEST INTO TABLE T_JEST
FOR ALL ENTRIES IN T_ET
WHERE OBJNR = T_ET-OBJNR AND
INACT NE 'X'.
SORT T_JEST BY OBJNR INACT.
LOOP AT T_ET.
READ TABLE T_JEST WITH KEY OBJNR = T_ET-OBJNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_ET-STAT = T_JEST-STAT.
MODIFY T_ET TRANSPORTING STAT.
ENDIF.
ENDLOOP.
Why iam not able to get T_JEST values into T_ET completely?
thanks
kaki
05-10-2006 11:10 AM
LOOP AT T_ET.
READ TABLE T_JEST WITH KEY OBJNR = T_ET-OBJNR
<b> stat = t_et-stat</b> BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_ET-STAT = T_JEST-STAT.
MODIFY T_ET TRANSPORTING STAT.
ENDIF.
ENDLOOP.
Do the high lighted change.
Regards,
Ravi
05-10-2006 11:12 AM
instead of using read use loop within a loop to get the result as u want
Hope this solves the prob
LOOP AT T_ET.
loop at TABLE T_JEST WITH KEY OBJNR = T_ET-OBJNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_ET-STAT = T_JEST-STAT.
MODIFY T_ET TRANSPORTING STAT.
ENDIF.
ENDLOOP.
<b>Award point if found helpful</b>
Message was edited by: Rahul Kavuri
05-10-2006 11:13 AM
Hi Kaki,
use Delete Duplicate Entries syntax after populating the onternal table
DELETE ADJACENT DUPLICATE ENTRIES FROM <itab>
[COMPARING <f1> <f 2> ...
|ALL FIELDS].
Regards,
Ranjit Thakur.
Please Mark The Helpful Answer.
05-10-2006 11:15 AM
make a internal table t_et1 like t_et.
loop at t_jest.
READ TABLE T_et WITH KEY OBJNR = T_jest-OBJNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_ET1-equnr = t_et-EQUNR
T_ET1-objnr = t_jest-OBJNR
T_ET1-vkbur = t_et-VKBUR
T_ET1-STAT = T_JEST-STAT.
append T_ET1 TRANSPORTING STAT.
ENDIF.
ENDLOOP.
05-10-2006 11:20 AM
Hi Kaki,
Since you want to modify table contents of T_ET while looping at the same table.
It would not be a good practice.
Instead create another table T_ET_TEMP and append the contents to that.
DATA T_ET_TEMP LIKE TABLE OF T_ET WITH HEADER LINE.
LOOP AT T_ET.
MOVE-CORRESPONDING T_ET INTO T_ET_TEMP.
LOOP AT T_JEST WHERE OBJNR EQ T_ET-OBJNR.
T_ET_TEMP-STAT = T_JEST-STAT.
APPEND T_ET_TEMP.
ENDLOOP.
ENDLOOP.
Regards,
Wenceslaus.
05-10-2006 11:26 AM
try this way:
LOOP AT T_JEST.
READ TABLE T_ET WITH KEY OBJNR = T_JEST-OBJNR STAT = T_JEST-STAT BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING T_ET TO T_ET_NEW.
T_ET_NEW-EQUNR = T_JEST-EQUNR.
T_ET_NEW-VKBUR = T_JEST-VKBUR.
APPEND T_ET_NEW.
ENDIF.
ENDLOOP.
Regards,
Ravi
05-10-2006 3:21 PM
Hello Kaki,
Try this :
SELECT AEQUNR AEQTYP AEQART AINBDT AOBJNR AVKBUR
B~stat
INTO CORRESPONDING FIELDS OF TABLE T_ET
FROM V_EQUI as A
LEFT JOIN JEST AS B
ON AOBJNR EQ BOBJNR
AND B~INACT NE 'X'
WHERE EQTYP IN S_EQTYP AND
VKBUR IN S_VKBUR AND
INBDT LE P_INBDT.
This select stament is much simpler and faster.
Cheers,
Nilesh