Code: Alles auswählen.
FORM read_data.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE itab01
FROM mara
JOIN makt
ON makt~matnr = mara~matnr
AND makt~spras = s_spras
JOIN marc
ON marc~matnr = mara~matnr
AND marc~werks = s_werks
JOIN mbew
ON mbew~matnr = mara~matnr
WHERE mara~matnr IN s_matnr
AND mara~mtart IN s_mtart
AND mara~matkl IN s_matkl
AND mara~mstae IN s_mstae
AND marc~mmsta IN s_mmsta
AND marc~dispo IN s_dispo
AND marc~ekgrp IN s_ekgrp
AND marc~ncost IN s_ncost
AND marc~beskz IN s_beskz
AND mbew~vprsv IN s_vprsv
AND mbew~hrkft IN s_hrkft.
ENDFORM.
Code: Alles auswählen.
LEFT OUTER JOIN eord
ON eord~matnr = marc~matnr
Code: Alles auswählen.
FORM read_data.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE itab01
FROM mara
JOIN makt
ON makt~matnr = mara~matnr
AND makt~spras = s_spras
JOIN marc
ON marc~matnr = mara~matnr
AND marc~werks = s_werks
JOIN mbew
ON mbew~matnr = mara~matnr
JOIN mvke
ON mvke~matnr = mara~matnr
LEFT OUTER JOIN eord
ON eord~matnr = marc~matnr
WHERE mara~matnr IN s_matnr
AND mara~mtart IN s_mtart
AND mara~matkl IN s_matkl
AND mara~mstae IN s_mstae
AND marc~mmsta IN s_mmsta
AND marc~dispo IN s_dispo
AND marc~ekgrp IN s_ekgrp
AND marc~ncost IN s_ncost
AND marc~beskz IN s_beskz
AND mbew~vprsv IN s_vprsv
AND mbew~hrkft IN s_hrkft.
ENDFORM. "read_data
Das Problem ist das INTO CORRESPONDING FIELDS OF TABLE und der SELECT *. Durch den SELECT * ist die Matnr mehrfach in der Ergbnistabelle des Selects (MARA~MATNR, MARC~MATNR, MBEW~MATNR,.....EORD~MATNR), da INTO CORRESPONDING geht dabei aber nur über die Namensgleichheit unabhängig ob das Feld Initial ist. Das Feld MATNR wird also mehrfach in die ITAB übertragen, wobei die letzte Übertragung EORD~MATNR einen initialien Wert übergibt.christof hat geschrieben:Aber nun wird das Feld Mara~Matnr nur angezeigt wenn ein Eintrag in der EORD Tabelle vorhanden ist
Code: Alles auswählen.
SELECT mara~matnr
makt~maktx
....
EORD~feld1
INTO TABLE itab01
FROM.....
Code: Alles auswählen.
FORM read_data.
SELECT
mara~matnr
makt~maktx
makt~spras
marc~basmg
mara~meins
....
....
INTO TABLE itab01
FROM mara
WHERE mara~matnr IN s_matnr
AND mara~mtart IN s_mtart
AND mara~matkl IN s_matkl
AND mara~mstae IN s_mstae
AND marc~mmsta IN s_mmsta
AND marc~dispo IN s_dispo
AND marc~ekgrp IN s_ekgrp
AND marc~ncost IN s_ncost
AND marc~beskz IN s_beskz
AND mbew~vprsv IN s_vprsv
AND mbew~hrkft IN s_hrkft.