2008 Apr 05 6:33 AM
TABLES:MARA,VBAK,VBAP.
DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
LIFNR LIKE VBAK-LIFNR,
END OF ITAB.
DATA:BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
END OF ITAB1.
DATA:BEGIN OF ITAB2 OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MARA-MAKTX,
END OF ITAB2.
SELECT VBELN LIFNR FROM TABLE VBAK INTO TABLE ITAB WHERE VBELN = S-VBELN
LOOP AT ITAB.
SELECT VBELN POSNR MATNR INTO TABLE ITAB1 WHERE VBELN = ITAB-VBELN.
IF ITAB1[] IS NOT INITIAL.
SELECT MATNR MAKTX FROM MARA INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE MATNR = ITAB1-MATNR.
ENDIF.
ENDLOOP.
LOOP AT ITAB.
WRITE:/ ITAB-VBELN,ITAB-LIFNR,ITAB1-POSNR,ITAB2-MATNR,ITAB2-MAKTX.
ENDLOOP.
2008 Apr 05 6:52 AM
Try the below code.
TABLES:MARA,VBAK,VBAP.
DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
LIFNR LIKE VBAK-LIFNR,
END OF ITAB.
DATA:BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR
END OF ITAB1.
DATA:BEGIN OF ITAB2 OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MARA-MAKTX,
END OF ITAB2.
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.
START-OF-SELECTION.
SELECT VBELN LIFNR FROM TABLE VBAK
INTO TABLE ITAB
WHERE VBELN IN S_VBELN.
IF SY-SUBRC = 0.
SELECT VBELN POSNR MATNR INTO TABLE ITAB1
FOR ALL ENTRIES IN ITAB
WHERE VBELN = ITAB-VBELN.
IF SY-SUBRC = 0.
SELECT MATNR MAKTX FROM MARA
INTO TABLE ITAB2
FOR ALL ENTRIES IN ITAB1
WHERE MATNR = ITAB1-MATNR
AND SPRAS = SY-LANGU.
ENDIF.
ENDIF.
SORT ITAB1 BY VBELN.
SORT ITAB2 BY MATNR.
LOOP AT ITAB.
CLEAR: ITAB1.
READ TABLE ITAB1 WITH KEY VBELN = IT_ITAB-VBELN
BINARY SEARCH.
IF SY-SUBRC = 0.
LV_INDX = SY-TABIX.
LOOP AT ITAB1 FROM LV_INDX.
IF ITAB1-VBELN = ITAB-VBELN.
CLEAR: ITAB2.
READ TABLE ITAB2 WITH KEY
MATNR = ITAB1-MATNR BINARY SEARCH.
IF SY-SUBRC = 0.
WRITE:/ ITAB-VBELN,
ITAB-LIFNR,
ITAB1-POSNR,
ITAB2-MATNR,
ITAB2-MAKTX.
ENDIF.
ELSE.
CLEAR: LV_INDX.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
HOpe this helps.
Thanks,
Balaji
2008 Apr 05 6:40 AM
TABLES:MARA,VBAK,VBAP.
DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
LIFNR LIKE VBAK-LIFNR,
END OF ITAB.
DATA:BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
END OF ITAB1.
DATA:BEGIN OF ITAB2 OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MARA-MAKTX,
END OF ITAB2.
SELECT VBELN LIFNR FROM VBAK INTO TABLE ITAB WHERE VBELN = S-VBELN
LOOP AT ITAB.
SELECT VBELN POSNR MATNR from vbap INTO TABLE ITAB1 WHERE VBELN = ITAB-VBELN.
IF ITAB1[] IS NOT INITIAL.
SELECT MATNR MAKTX FROM MARA INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE MATNR = ITAB1-MATNR.
ENDIF.
ENDLOOP.
LOOP AT ITAB.
WRITE:/ ITAB-VBELN,ITAB-LIFNR,ITAB1-POSNR,ITAB2-MATNR,ITAB2-MAKTX.
ENDLOOP.
2008 Apr 05 6:43 AM
2008 Apr 05 6:48 AM
There are mistakes in first two select statements before which i corrected them is it working now?
2008 Apr 05 6:51 AM
Hi,
Thanks so much..
its working.
Othere than this any logic error
2008 Apr 05 6:50 AM
As VBAK doesn't contain LIFNR the error says...
The Object VBAK does not have compenent LIFNR...
TABLES:MARA,VBAK,VBAP.
DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
LIFNR LIKE VBAK-LIFNR, " here is the problem LIFNR you will get in LFA1 table its vendor account no...END OF ITAB.
DATA:BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
END OF ITAB1.
DATA:BEGIN OF ITAB2 OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MARA-MAKTX,
END OF ITAB2.
SELECT VBELN LIFNR FROM TABLE VBAK INTO TABLE ITAB WHERE VBELN = S-VBELN
LOOP AT ITAB.
SELECT VBELN POSNR MATNR INTO TABLE ITAB1 WHERE VBELN = ITAB-VBELN.
IF ITAB1[] IS NOT INITIAL.
SELECT MATNR MAKTX FROM MARA INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE MATNR = ITAB1-MATNR.
ENDIF.
ENDLOOP.
LOOP AT ITAB.
WRITE:/ ITAB-VBELN,ITAB-LIFNR,ITAB1-POSNR,ITAB2-MATNR,ITAB2-MAKTX.
ENDLOOP.
I would suggest you to first identify from where u need to fetch data ...
Reward points if useful..
Thanks & Regards
ilesh 24x7
2008 Apr 05 6:54 AM
Hi,
I need to get document item in the report.
Sorry i will take off 'LIFNR' field from this report.
Thanks.
Other than this any error.
?
2008 Apr 05 6:51 AM
are u using an Underscore in S_VBELN??
check it out.
and moreover if u cud tell whts the error being shown on ur screen, we cud help u better..
pk
2008 Apr 05 6:52 AM
Try the below code.
TABLES:MARA,VBAK,VBAP.
DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
LIFNR LIKE VBAK-LIFNR,
END OF ITAB.
DATA:BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR
END OF ITAB1.
DATA:BEGIN OF ITAB2 OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MARA-MAKTX,
END OF ITAB2.
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.
START-OF-SELECTION.
SELECT VBELN LIFNR FROM TABLE VBAK
INTO TABLE ITAB
WHERE VBELN IN S_VBELN.
IF SY-SUBRC = 0.
SELECT VBELN POSNR MATNR INTO TABLE ITAB1
FOR ALL ENTRIES IN ITAB
WHERE VBELN = ITAB-VBELN.
IF SY-SUBRC = 0.
SELECT MATNR MAKTX FROM MARA
INTO TABLE ITAB2
FOR ALL ENTRIES IN ITAB1
WHERE MATNR = ITAB1-MATNR
AND SPRAS = SY-LANGU.
ENDIF.
ENDIF.
SORT ITAB1 BY VBELN.
SORT ITAB2 BY MATNR.
LOOP AT ITAB.
CLEAR: ITAB1.
READ TABLE ITAB1 WITH KEY VBELN = IT_ITAB-VBELN
BINARY SEARCH.
IF SY-SUBRC = 0.
LV_INDX = SY-TABIX.
LOOP AT ITAB1 FROM LV_INDX.
IF ITAB1-VBELN = ITAB-VBELN.
CLEAR: ITAB2.
READ TABLE ITAB2 WITH KEY
MATNR = ITAB1-MATNR BINARY SEARCH.
IF SY-SUBRC = 0.
WRITE:/ ITAB-VBELN,
ITAB-LIFNR,
ITAB1-POSNR,
ITAB2-MATNR,
ITAB2-MAKTX.
ENDIF.
ELSE.
CLEAR: LV_INDX.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
HOpe this helps.
Thanks,
Balaji
2008 Apr 05 6:59 AM
Hi Balaji,
I am not clear with this part.
Please expalin me.
LOOP AT ITAB.
CLEAR: ITAB1.
READ TABLE ITAB1 WITH KEY VBELN = IT_ITAB-VBELN
BINARY SEARCH.
IF SY-SUBRC = 0.
LV_INDX = SY-TABIX.
LOOP AT ITAB1 FROM LV_INDX.
IF ITAB1-VBELN = ITAB-VBELN.
CLEAR: ITAB2.
READ TABLE ITAB2 WITH KEY
MATNR = ITAB1-MATNR BINARY SEARCH.
IF SY-SUBRC = 0.
WRITE:/ ITAB-VBELN,
ITAB-LIFNR,
ITAB1-POSNR,
ITAB2-MATNR,
ITAB2-MAKTX.
ENDIF.
ELSE.
CLEAR: LV_INDX.
EXIT.
ENDIF.
2008 Apr 05 1:25 PM
Since your input for sales order is a SELECT option there could be multiple sales orders that could be inputted.
And for each sales order there could be multiple sales order items.
Thats why you would see when you are looping the sales order header table (in your case ITAB), you would also would like to get all the items of the sales order from ITAB1 table. Thats why you would see looping the item table ITAB1 to get all the line items for the sales order.
Hope this helps.
Thanks,
Balaji
2008 Apr 06 8:07 AM
Hi Balaji,
Thanks a lot for ur reply..
Have u done anything regarding User Exit .
Sincerely
jayalaksmy