Code: Alles auswählen.
SELECT kunnr from znr_kun_tab INTO (a_kunnr).
SELECT * FROM bkpf INTO w_bkpf
WHERE bukrs = pbukrs
AND gjahr = a_gjahr
AND blart = a_blart
AND cpudt BETWEEN a_cpudt AND b_cpudt.
SELECT * FROM bseg INTO w_bseg
WHERE bukrs = pbukrs
AND belnr = w_bkpf-belnr
AND gjahr = a_gjahr
AND buzei = '1'.
* and kunnr = a_kunnr.
wa_beleg-belnr = w_bkpf-belnr.
wa_beleg-cpudt = w_bkpf-cpudt.
wa_beleg-xblnr = w_bkpf-xblnr.
wa_beleg-zlspr = w_bseg-zlspr.
wa_beleg-kunnr = w_bseg-kunnr.
if wa_beleg-kunnr IS INITIAL.
SELECT SINGLE lifnr FROM bseg INTO wa_beleg-kunnr
WHERE bukrs = pbukrs
AND belnr = w_bkpf-belnr
AND gjahr = a_gjahr
AND buzei = '1'.
else.
wa_beleg-kunnr = w_bseg-kunnr.
ENDIF.
ENDSELECT.
APPEND wa_beleg TO t_beleg.
CLEAR wa_beleg.
ENDSELECT.
ENDSELECT.
LOOP AT t_beleg INTO wa_beleg.
Die Schachtelung ist nicht korrekt.jeyloeso hat geschrieben:Was ist hier falsch bitte?
Code: Alles auswählen.
ENDSELECT. "BSEG
APPEND wa_beleg TO t_beleg.
CLEAR wa_beleg.
ENDSELECT. "BKPF
ENDSELECT. "ZNR_KUN_TAB
jeyloeso selektiert die BSEG mit BUZEI = 1, somit kriegt er pro BKPF-Eintrag genau einen BSEG-Eintrag und damit auch nur eine Zeile in seiner Belegtabelle. Trotzdem ist die Schachtelung nicht sinnvoll.Für jeden Kunden, suchst du jeden Buchhaltungsbeleg und dann jede Zeile des Buchhaltungsbeleg. Für jede Buchhaltungsbelegposition machst du einen APPEND.