Application Development 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: 

itab problem

Former Member
0 Kudos

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

7 REPLIES 7

former_member181962
Active Contributor
0 Kudos

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

rahulkavuri
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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.

Former Member
0 Kudos

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.

Former Member
0 Kudos

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.

former_member181962
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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