Code: Alles auswählen.
SELECT a~<feldname> b~<feldname> b~<feldname>
INTO CORRESPONDING FIELDS OF TABLE itab
FROM vbak as a
INNER JOIN vbap as b
ON b~<keyfield> = a~<keyfield>
WHERE a~<feldname> IN <Sel-opt>
AND a~<feldname> = <feldwert>.
if sy-subrc = 0.
read table itab with...<index>...
endif.
Code: Alles auswählen.
tables: vbap, vbak.
*interne Tabelle deklarieren
data: begin of itab occurs 0,
vbeln like vbap-vbeln, "feld aus vbap Belegnummer
posnr like vbap-posnr, "feld aus vbap Belegposition
matnr like vbap-matnr, "feld aus vbap Materialnummer
netwr like vbak-netwr, "feld aus vbak Nettowert aus Belegkopfdaten
end of itab.
select-options: so_matnr for vbap-matnr.
*einfacher select mit Bedingung nur Datensätze aus VBAP für
*Materialnummern aus der selektion
select vbeln posnr matnr from vbap
into (itab-vbeln, itab-posnr, itab-matnr )
where matnr in so_matnr.
*interne Tabelle füllen
append itab.
endselect.
*Ausgabe der internen Tabelle
loop at itab.
write:/ itab-vbeln,
itab-posnr,
itab-matnr.
endloop.
*ineterne Tabelle löschen für 2. beispiel
refresh: itab.
*select mit join auf VBAK und Bedingung nur Matrialnummern
*aus Selektion
select vbap~vbeln vbap~posnr vbap~matnr vbak~netwr
into (itab-vbeln, itab-posnr, itab-matnr, itab-netwr )
from vbap inner join vbak
on vbap~vbeln = vbak~vbeln
where vbap~matnr in so_matnr.
*interne Tabelle füllen
append itab.
endselect.
*Ausgabe der internen Tabelle mit Nettowert aus der VBAK
loop at itab.
write:/ itab-vbeln,
itab-posnr,
itab-matnr,
itab-netwr.
endloop.