2014 Dec 15 8:17 AM
*&---------------------------------------------------------------------*
*& Report ZIT_3TABLESR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zit_3tablesr.
DATA : vbeln TYPE vbeln_va,
audat TYPE audat,
kunnr TYPE kunag,
matnr TYPE matnr,
netwr TYPE netwr.
TYPES : BEGIN OF st_table,
vbeln TYPE vbeln_va,
audat TYPE audat,
kunnr TYPE kunag,
matnr TYPE matnr,
netwr TYPE netwr,
END OF st_table.
DATA : w_area TYPE st_table.
TYPES : tt_vbak TYPE TABLE OF st_table,
tt_vbap TYPE TABLE OF st_table.
DATA : tm_vbak TYPE tt_vbak,
tm_vbap TYPE tt_vbap.
PARAMETERS : my_vbeln TYPE vbeln.
START-OF-SELECTION.
SELECT vbeln audat kunnr FROM vbak INTO TABLE tm_vbak WHERE vbeln = my_vbeln.
SELECT vbeln matnr netwr FROM vbap INTO TABLE tm_vbap for all entries in tm_vbak WHERE vbap~vbeln = tm_vbak-vbeln.
END-OF-SELECTION.
WHILE ( sy-subrc = 0 ).
READ TABLE tm_vbak INTO w_area INDEX sy-index.
READ TABLE tm_vbap INTO w_area INDEX sy-index.
WRITE : / w_area-vbeln,
w_area-audat,
w_area-kunnr,
w_area-matnr,
w_area-netwr.
ENDWHILE.
2014 Dec 15 8:21 AM
Hi,
your fields are not matching the structures of the tables. Please try
INTO CORRESPONDING FIELDS OF TABLE
instead OF INTO TABLE.
Regards,
Klaus
2014 Dec 15 8:21 AM
Hi,
your fields are not matching the structures of the tables. Please try
INTO CORRESPONDING FIELDS OF TABLE
instead OF INTO TABLE.
Regards,
Klaus
2014 Dec 15 9:19 AM
2014 Dec 15 8:21 AM
2014 Dec 15 8:25 AM
Hi Rajesh,
you can do inner join as these example method....
SELECT-OPTIONS: s_vbeln FOR vbap-vbeln no intervals
DATA:BEGIN OF x_vbakvbap,
vbeln TYPE vbak-vbeln,
kunnr TYPE vbak-kunnr,
netwr TYPE vbak-netwr,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
kwmeng TYPE vbap-kwmeng,
arktx TYPE vbap-arktx,
netpr TYPE vbap-netpr,
END OF x_vbakvbap,
it_vbakvbap LIKE TABLE OF x_vbakvbap.
SELECT vbak~vbeln vbak~kunnr vbak~netwr
vbap~posnr vbap~matnr vbap~kwmeng
vbap~arktx vbap~netpr
INTO TABLE it_vbakvbap
FROM vbak
INNER JOIN vbap
ON vbak~vbeln = vbap~vbeln
WHERE vbak~vbeln IN s_vbeln
AND vbap~matnr IN s_matnr.
LOOP AT it_vbakvbap INTO x_vbakvbap.
WRITE:/ x_vbakvbap-vbeln, x_vbakvbap-posnr,
x_vbakvbap-matnr, x_vbakvbap-kwmeng,
x_vbakvbap-arktx, x_vbakvbap-kunnr,
x_vbakvbap-netpr, x_vbakvbap-netwr.
ENDLOOP.
Regards,
Kabil
2014 Dec 15 8:25 AM
Hi Rajesh,
You are writing second select query incorrectly.
SELECT vbeln matnr netwr FROM vbap INTO TABLE tm_vbap for all entries in tm_vbak WHEREvbap~vbeln = tm_vbak-vbeln.
change this query to
SELECT vbeln matnr netwr FROM vbap INTO TABLE tm_vbap for all entries in tm_vbak WHERE vbeln = tm_vbak-vbeln.
Also, you need to define types for tm_vbap with required fields.
2014 Dec 15 8:41 AM
2014 Dec 15 8:49 AM
Hi Rajesh,
Try below code. It will work.
SELECT vbeln
audat
kunnr
FROM vbak
INTO TABLE tm_vbak
WHERE vbeln = my_vbeln.
IF tm_vbak[] IS NOT INITIAL.
SELECT vbeln
matnr
netwr
FROM vbap
INTO TABLE tm_vbap
FOR ALL ENTRIES IN tm_vbak
WHERE vbeln = tm_vbak-vbeln.
ENDIF.
Regards,
Pravin
2014 Dec 15 9:23 AM
yeah i got executed but its showing the document created (audat) all columns as 00.00.0000 what i have you do
I am new to abap prgraminng.
thanks in advance
2014 Dec 15 12:17 PM
Hi Rajesh,
Try these below code do innerjoin as i did below
TABLES:vbap.
DATA:BEGIN OF x_vbakvbap,
vbeln TYPE vbak-vbeln,
audat TYPE vbak-audat,
kunnr TYPE vbak-kunnr,
matnr TYPE vbap-matnr,
netwr TYPE vbak-netwr,
END OF x_vbakvbap,
it_vbakvbap LIKE TABLE OF x_vbakvbap.
SELECT-OPTIONS: s_vbeln FOR vbap-vbeln no intervals.
SELECT vbak~vbeln vbak~audat vbak~kunnr vbap~matnr vbak~netwr
INTO TABLE it_vbakvbap
FROM vbak
INNER JOIN vbap
ON vbak~vbeln = vbap~vbeln
WHERE vbak~vbeln IN s_vbeln.
LOOP AT it_vbakvbap INTO x_vbakvbap.
WRITE:/ x_vbakvbap-vbeln,
x_vbakvbap-audat,
x_vbakvbap-matnr,
x_vbakvbap-kunnr,
x_vbakvbap-netwr.
ENDLOOP.