Moin,
sowas in der Art habe ich vor kurzem auch programmiert.
Als erstes stellt sich die Frage welche Partnerrollen du meinst? Warenempfänger, Regulierer, ... Ich benötigte wirklich nur die Warenempfänger. Dann schaut das ganze so aus:
Als Tabelle KNVP (Partnerrollen), KNA1 (Kundenstammdaten), LIKP (Kopfdaten Lieferungen)
Als Selektions-Option habe ich die Partnerrolle als default "WE", Kundennummer, Verkaufsorganisation, Vertriebsweg, Land, Zeitraum Belieferung.
select a~kunnr
a~vkorg
a~vtweg
a~spart
a~parvw
a~parza
a~kunn2
a~lifnr
a~pernr
a~parnr
a~knref
a~defpa
b~name1
b~name2
b~stras
b~pstlz
b~ort01
b~land1
b~telfx
from knvp as a
inner join kna1 as b
on a~kunnr = b~kunnr
into corresponding fields of wa_kd_all
where a~parvw in so_parvw "default 'WE' ...alle die als Partnerrolle WarenEmpfänge haben
and a~kunnr in so_kunnr
and a~vkorg in so_vkorg
and a~vtweg in so_vtweg
and b~land1 in so_land1.
select single lfdat "wenn der Kunde im angegebenen Zeitraum beliefert wurde...
into wa_kd_all-lfdat
from likp
where kunnr = wa_kd_all-kunnr
and lfdat in so_lfdat.
if sy-subrc = 0.
append wa_kd_all to gt_kd_all. "... wird der Satz hinzugefügt
endif.
clear: wa_kd_all.
endselect.
Gruß nikibert