Unterschiedliche Einträge

Aufgabe: Suchen Sie aus der Partnertabelle des Kundenstamms (KNVP) alle Kunden heraus, denen Partner der Partnerrolle „Z1“ UND „Z2“ zugeordnet sind. Eventuell würde man die Partner Z1 und Z2 aller in Frage kommenden Kunden in jeweils eine Tabelle lesen und dann mittels LOOP und READ einen Abgleich programmieren. Dies ist aber sehr aufwändig. Es geht auch mit einer „Subskalaren Query“.

*** Datendefinition
DATA:
  BEGIN OF itab OCCURS 0,
    kunnr TYPE kunnr,
    vkorg type vkorg,
    vtweg type vtweg,
    spart type spart,
  END   OF itab.

*** Eingabeoptionen
SELECT-OPTIONS s_kunnr FOR  itab-kunnr.
PARAMETERS     p_vkorg TYPE vkorg.

*** Datenselektion
SELECT distinct kunnr vkorg vtweg spart
  FROM knvp as knvp1
  INTO TABLE itab
 WHERE vkorg = p_vkorg
   AND kunnr in s_kunnr
   AND parvw = 'Z1'
   AND EXISTS
     ( SELECT kunnr from knvp as knvp2
        WHERE vkorg = knvp1~vkorg
          AND vtweg = knvp1~vtweg
          AND spart = knvp1~spart
          AND kunnr = knvp1~kunnr
          AND parvw = 'Z2'  ).
*** Ausgabe der Ergebnisse
LOOP AT ITAB.
  WRITE: / itab-kunnr, 
           itab-vkorg, 
           itab-vtweg, 
           itab-spart.
ENDLOOP.

 

Enno Wulff
follow me