04-18-2008 6:52 AM
I VE WRITTEN A PROGRAMME FOR RETRIEVING DATA FROM 3 TABLES ,, KNA1 , VBAK N LIPS USING ALL ENTRIES ,, I AM NOT GETTING THE DATA FROM THE LAST TABLE ... I WILL SEND MY CODE ... PLEASE TELL ME WHERE I WENT WRONG N GIVE ME THE CORRECTED PROGRAMME .
DATA : BEGIN OF ITAB OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF ITAB.
data : begin of itab1 occurs 1 ,
VBELN LIKE VBAK-VBELN, " sales document
AUART LIKE VBAK-AUART, " sales document type
KNUMV LIKE VBAK-KNUMV, " number of the document condition
ERDAT LIKE VBAK-ERDAT, " date on which record was created
kunnr like vbak-kunnr, " customer number ( sold to party )
end of itab1 .
data : begin of itab2 occurs 1 ,
VBELN LIKE LIPS-VBELN, " deliver no
LFIMG LIKE LIPS-LFIMG, " actual quantity delivered
end of itab2 .
SELECT KUNNR NAME1 FROM KNA1 INTO CORRESPONDING FIELDS OF TABLE ITAB .
SELECT VBELN AUART KNUMV ERDAT KUNNR FROM VBAK INTO CORRESPONDING FIELDS OF TABLE ITAB1
FOR ALL ENTRIES IN ITAB
WHERE KUNNR = ITAB-KUNNR .
SELECT VBELN LFIMG FROM LIPS INTO CORRESPONDING FIELDS OF TABLE ITAB2
FOR ALL ENTRIES IN ITAB1
WHERE VBELN = ITAB1-VBELN .
LOOP AT ITAB2 .
READ TABLE ITAB1 WITH KEY VBELN = ITAB2-VBELN .
READ TABLE ITAB WITH KEY KUNNR = ITAB1-KUNNR .
WRITE : / ITAB-KUNNR , ITAB-NAME1 , ITAB1-VBELN , ITAB1-AUART , ITAB1-KNUMV,90 ITAB1-ERDAT , ITAB2-LFIMG .
ENDLOOP .
THANK U IN ADVANCE ....
04-18-2008 6:56 AM
hi,
before the next select statment check whether prevoius internal table has the records or not and then select...
sy-subrc check is for select is also important....
when u read the table also check for sy-subrc and proceed
Regards,
priya
04-18-2008 7:07 AM
Hi Usha,
The most important this while you use "FOR ALL ENTRIES" is , you must check that the table is not INITIAL.
Ex:
&----
*& Report ZSB_TEST05
*&
&----
*&
*&
&----
REPORT zsb_test05.
DATA : BEGIN OF itab OCCURS 0,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
END OF itab.
DATA : BEGIN OF itab1 OCCURS 1 ,
vbeln LIKE vbak-vbeln, " sales document
auart LIKE vbak-auart, " sales document type
knumv LIKE vbak-knumv, " number of the document condition
erdat LIKE vbak-erdat, " date on which record was created
kunnr LIKE vbak-kunnr, " customer number ( sold to party )
END OF itab1 .
DATA : BEGIN OF itab2 OCCURS 1 ,
vbeln LIKE lips-vbeln, " deliver no
lfimg LIKE lips-lfimg, " actual quantity delivered
END OF itab2 .
SELECT kunnr name1
FROM kna1
INTO CORRESPONDING FIELDS OF TABLE itab .
CHECK sy-subrc EQ 0.
SELECT vbeln auart knumv erdat kunnr
FROM vbak
INTO CORRESPONDING FIELDS OF TABLE itab1
FOR ALL ENTRIES IN itab
WHERE kunnr = itab-kunnr .
CHECK sy-subrc EQ 0.
SELECT vbeln lfimg
FROM lips
INTO CORRESPONDING FIELDS OF TABLE itab2
FOR ALL ENTRIES IN itab1
WHERE vbeln = itab1-vbeln .
CHECK sy-subrc EQ 0.
LOOP AT itab2 .
READ TABLE itab1 WITH KEY vbeln = itab2-vbeln .
READ TABLE itab WITH KEY kunnr = itab1-kunnr .
WRITE : / itab-kunnr , itab-name1 , itab1-vbeln , itab1-auart , itab1-knumv,90 itab1-erdat , itab2-lfimg .
ENDLOOP .
-
But thats not the reason why you are not getting any data in the output.
The reason is there is no corresponding document in LIPS and VBAK table.
Please award points if helpful
04-18-2008 7:12 AM
Hi usha sap
may be u r LIPS table does'nt contains any suitable VBELN
records that exhist in VBAK check u r LIPS table first and then proceed.
Hope this may solve u r problem.
reward points if found helpful.
Thanks and regards,
Rajesh.
04-18-2008 7:15 AM
Hi Usha,
There is no relation b/w VBAK and LIPS.You have directly link with the 2 tables.First you get the relation b/w vbak & vbap by vbak-vbeln = vbap-vbeln
Then you get relation b/w vbap & lips by LIPS-VGBEL = VBAP-VBELN.
Now you can retrive the data.
Regards
Kiran Sure
04-18-2008 7:21 AM
Hi ,
The last select should be as follows,
SELECT VBELN LFIMG FROM LIPS INTO CORRESPONDING FIELDS OF TABLE ITAB2
FOR ALL ENTRIES IN ITAB1
WHERE VGBEL = ITAB1-VBELN.
the relation is.
LIPS-VGBEL = VBAK-VBELN
thanks,
Ahasan