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: 

Fetch records from internal table

Former Member
0 Kudos

HI

I HAVE ONE INTERNAL TABLE ITAB_ERR. THIS HAS RECORDS AND I AM FETCHING DATA FROM ISEG AS WELL.

WHAT I WANT IS I NEED TO FETCH THE RECORDS FROM

ITAB_ERR WHOSE RECORDS DO NOT MATCH WITH ISEG TABLE RECORDS.

I HAVE WRITTEN FOLLOWING CODE BUT IT DOES NOT FETCH THE RECORDS FROM ITAB_ERR THAT DOES NOT MATCH WITH ISEG RECORDS i.e. ITAB_ERR HAS SOME RECORDS WHICH ARE NOT THERE IN ISEG AND I NEED TO FETCH THOSE RECORDS FROM ITAB_ERR.

PLEASE LOOK AT MY CODE AND CORRECT OR SUGGEST CORRECTIONS.

ITAB_ERR[] = ITAB_UPD[]. (ITAB_ERR HAS RECORDS)

SELECT *

FROM ISEG INTO CORRESPONDING FIELDS OF TABLE WA_ITAB_ISEG

where werks eq zptf_phyinv_hed-zwerks and zldat eq itab-zldat and budat eq itab-zbldat.

  • WA_ITAB_ISEG HAS RECORDS.

clear sy-subrc.

sort itab_err by zmatnr1.

LOOP AT WA_ITAB_ISEG.

loop at itab_err INTO ITAB_DEL

where ZWERKS <> WA_ITAB_ISEG-WERKS

and ZLDAT <> WA_ITAB_ISEG-ZLDAT

and ZBLDAT <> WA_ITAB_ISEG-BUDAT

and ZMATNR1 <> WA_ITAB_ISEG-MATNR

and ZCHARG1 <> WA_ITAB_ISEG-CHARG

and ZLGORT <> WA_ITAB_ISEG-LGORT.

IF SY-subrc = 0.

move-corresponding ITAB_err to itab_del2.

append itab_del2.

CLEAR SY-SUBRC.

ENDIF.

ENDLOOP.

ENDLOOP.

THANX

ROCKY

Edited by: Alvaro Tejada Galindo on Mar 19, 2008 7:04 PM

4 REPLIES 4

Former Member
0 Kudos

Hi,

during selection in where condition u have compared using internal table. Compare using work Area Fields.

Secondly, You have looped at work-area but i think loop is possible on internal table to workarea.

Thirdly, Dont' use loop within a loop.(performance Issue)

regards

Sandipan ghosh

Former Member
0 Kudos

Write the coding as :

LOOP AT ITAB_ERR.

READ TABLE WA_ITAB_ISEG with key

ZWERKS = ITAB_ERR-WERKS.

If sy-subrc <> 0.

itab_err1 = ITAB_ERR.

append itab_err1.

Endif.

ENDLOOP.

Former Member
0 Kudos

Try This,

LOOP AT WA_ITAB_ISEG.

loop at itab_err INTO ITAB_DEL

where ZWERKS WA_ITAB_ISEG-WERKS

and ZLDAT WA_ITAB_ISEG-ZLDAT

and ZBLDAT WA_ITAB_ISEG-BUDAT

and ZMATNR1 WA_ITAB_ISEG-MATNR

and ZCHARG1 WA_ITAB_ISEG-CHARG

and ZLGORT WA_ITAB_ISEG-LGORT.

DELETE itab_err FROM ITAB_DEL.

ENDLOOP.

ENDLOOP.

Now the itab_err will contains only the records which you required.

Former Member
0 Kudos

Hi,

LOOP AT WA_ITAB_ISEG.

loop at itab_err INTO ITAB_DEL

where ZWERKS WA_ITAB_ISEG-WERKS

and ZLDAT WA_ITAB_ISEG-ZLDAT

and ZBLDAT WA_ITAB_ISEG-BUDAT

and ZMATNR1 WA_ITAB_ISEG-MATNR

and ZCHARG1 WA_ITAB_ISEG-CHARG

and ZLGORT WA_ITAB_ISEG-LGORT.

move-corresponding ITAB_DEL to itab_del2.

append itab_del2.

ENDIF.

ENDLOOP.

ENDLOOP.

No need of SY-SUBRC if condition satisfies then only cursor enter into loop.