Code: Alles auswählen.
Select ...
FROM marc AS v
FOR ALL ENTRIES IN lt_matnr
WHERE
v~matnr = lt_matnr-matnr
AND v~werks = lt_matnr-werks
Code: Alles auswählen.
Select ...
FROM marc AS v
FOR ALL ENTRIES IN lt_matnr
WHERE
v~matnr = lt_matnr-matnr
AND v~werks = lt_matnr-werks
AND ( ( v~werks = lt_matnr-werks ) OR ( ' ' = lt_matnr-werks ) )
Code: Alles auswählen.
lt_matnr-werks = ' '
Code: Alles auswählen.
select ' ' as dummy
Wolfgangs Vorschlag war ansich schon ein möglicher Weg, nur muss man die lt_matnr vorher aufteilen muss:Murdock hat geschrieben:lt_matnr hat eine Menge Zeilen, da ist mal lt_matnr-werks gefüllt und mal nicht...
Code: Alles auswählen.
DATA: lt_mats TYPE TABLE ts_matnr,
lt_werks TYPE TABLE ts_matnr.
* Temp Tabellen aufbauen:
lt_mats = lt_matnr.
DELETE TABLE lt_mats WHERE werks IS INITIAL.
SORT lt_mats BY matnr werks.
DELETE ADJACENT DUPLICATES FROM lt_mats COMPARING matnr werks.
lt_werks = lt_matnr.
DELETE TABLE lt_mats WHERE werks IS NOT INITAL.
SORT lt_werks BY matnr.
DELETE ADJACENT DUPLICATES FROM lt_werks COMPARING matnr.
* Daten lesen
IF lt_mats IS NOT INITIAL.
SELECT * INTO TABLE lt_result FROM marc FOR ALL ENTRIES OF lt_mats WHERE matnr =lt_mats-matnr AND werk = lt_mats-werk.
ENDIF.
IF lt_werks IS NOT INITIAL.
SELECT * APPENDING TABLE lt_result FROM marc FOR ALL ENTRIES OF lt_werks WHERE matnr = lt_werks-matnr. "Hier auf das APPENDING TABLE achten, damit die Daten aus dem ersten Select nicht gelöscht werden.
ENDIF.
JA, das siehst du richtig, weil alle Einträge aus der "for all entries" nur mit EQ (=) verknüpft werden dürfen.Murdock hat geschrieben:Sehe ich das demnach richtig, dass es in einem Select mit "for all entries" eher nicht funktioniert?
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Murdock