Code: Alles auswählen.
IF ( i_iban IS INITIAL OR NOT p_bupa IS INITIAL )
AND p_up IS INITIAL.
SELECT * FROM (i_table) AS b
UP TO p_maxl ROWS
INTO TABLE <table>
FOR ALL ENTRIES IN gt_cntry
WHERE (l_where)
AND NOT EXISTS ( SELECT iban FROM tiban
WHERE (l_wher2) ).
Code: Alles auswählen.
TYPES: BEGIN OF t_knbk,
kunnr LIKE knbk-kunnr,
banks LIKE knbk-banks,
bankl LIKE knbk-bankl,
bankn LIKE knbk-bankn,
END OF t_knbk.
DATA: gt_knbk TYPE STANDARD TABLE OF t_knbk,
wa_knbk LIKE LINE OF gt_knbk.
"der Join liest auch Kunden ohne Bankverbindung. Falls nicht geünscht --> Inner Join anwenden
SELECT kna1~kunnr knbk~banks knbk~bankl knbk~bankn
FROM kna1 LEFT OUTER JOIN knbk ON kna1~kunnr = knbk~kunnr
APPENDING TABLE gt_knbk
WHERE kna1~loevm = ''.
Folgende Benutzer bedankten sich beim Autor Alexander D. für den Beitrag:
Leonidas
Leonidas hat geschrieben:Mal angenommen, ich möchte vorerst nur alle Kundennummern (kunnr) aus knbk selektieren, die in kna1 keinen Löschvermerk haben: wie fasse ich das im Join in eine Bedinung?
Code: Alles auswählen.
SELECT knbk~kunnr
FROM kna1 JOIN knbk ON kna1~kunnr = knbk~kunnr
APPENDING TABLE gt_knbk
WHERE kna1~loevm = ''
GROUP BY knbk~kunnr.
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
Leonidas
Code: Alles auswählen.
CASE p_table. " Festlegen der Hilfsvariablen
WHEN 'KNBK'.
lw_htab = 'kna1'.
lw_hval = 'kunnr'.
WHEN 'LFBK'.
lw_htab = 'lfa1'.
lw_hval = 'liefnr'.
WHEN OTHERS.
ENDCASE.
* And now... SELECT
IF ( i_iban IS INITIAL OR NOT p_bupa IS INITIAL )
AND p_up IS INITIAL.
SELECT * FROM (i_table) AS b
UP TO p_maxl ROWS
INTO TABLE <table>
FOR ALL ENTRIES IN gt_cntry
WHERE lw_hval IN ( SELECT lw_hval
FROM (lw_htab)
WHERE LOEVM = '' )
AND (l_where)
AND NOT EXISTS ( SELECT iban
FROM tiban
WHERE (l_wher2) ).
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
Leonidas
Code: Alles auswählen.
SELECT * FROM (i_table) AS b
UP TO p_maxl ROWS
INTO TABLE <table>
FOR ALL ENTRIES IN gt_cntry
WHERE lw_hval IN ( SELECT lw_hval
FROM (lw_htab)
WHERE LOEVM = '' )
AND (l_where)
AND NOT EXISTS ( SELECT iban
FROM tiban
WHERE (l_wher2) ).
LW_HVAL ist eine Variable für die dynamische Selektion. In dem ersten Unterselect ist es nicht geklammert und wird als Feldname interpretiert. Daher auch die Fehlermeldung "Feldname "LW_HVAL" kommt in keiner der Datenbanktabellen aus der FROM-Klausel vor"Leonidas hat geschrieben: Trotzdem noch der Dump:
Die Fehlermeldung bezieht sich auf das erste Auftreten (zwischen WHERE und IN im ersten / äußeren SELECT).Alexander D. hat geschrieben:LW_HVAL ist eine Variable für die dynamische Selektion. In dem ersten Unterselect ist es nicht geklammert und wird als Feldname interpretiert. Daher auch die Fehlermeldung "Feldname "LW_HVAL" kommt in keiner der Datenbanktabellen aus der FROM-Klausel vor"
Code: Alles auswählen.
concatenate lw_hval 'IN ( select' lw_hval 'FROM' lw_htab 'WHERE LOEVM eq space )'
into l_where
separated by space.
Code: Alles auswählen.
concatenate lw_hval 'IN ( select' lw_hval 'FROM (lw_htab) WHERE LOEVM eq space )'
into l_where
separated by space.
Code: Alles auswählen.
concatenate l_where {bish. dyn. WHERE-Clause} into l_where by space.