Code: Alles auswählen.
* deklaration
TABLES: zdpv_gkgpnr,kna1,jkpa,jkap,jkak.
DATA: BEGIN OF wa_tab,
drerz LIKE jkap-drerz,
vbeln LIKE jkap-vbeln,
auart LIKE jkak-auart,
gueltigbis LIKE jkap-gueltigbis,
poart LIKE jkap-poart,
posnr LIKE jkap-posnr,
jparvw LIKE jkpa-jparvw,
gpnr LIKE jkpa-gpnr,
END OF wa_tab.
DATA: it_tab LIKE wa_tab OCCURS 0.
DATA: BEGIN OF wa_tab2,
jparvw LIKE jkpa-jparvw,
gpnr LIKE jkpa-gpnr,
drerz LIKE jkap-drerz,
vbeln LIKE jkap-vbeln,
auart LIKE jkak-auart,
name1 LIKE kna1-name1,
name2 LIKE kna1-name2,
name3 LIKE kna1-name3,
name4 LIKE kna1-name4,
ort01 LIKE kna1-ort01,
ort02 LIKE kna1-ort02,
pfach LIKE kna1-pfach,
pstlz LIKE kna1-pstlz,
pstl2 LIKE kna1-pstl2,
stras LIKE kna1-stras,
pfort LIKE kna1-pfort,
END OF wa_tab2.
DATA: it_tab2 LIKE wa_tab2 OCCURS 0.
DATA: anz_ges TYPE i.
DATA: anz_aktiv TYPE i.
DATA: anz_inaktiv TYPE i.
* selektionsbild
SELECT-OPTIONS: s_drerz FOR jkap-drerz.
SELECT-OPTIONS: s_auart FOR jkak-auart.
PARAMETERS p_sttag LIKE jkpa-gueltigbis.
**********************************************************************
**********************************************************************
START-OF-SELECTION.
SELECT vbeln gueltigbis poart drerz posnr FROM jkap INTO
CORRESPONDING FIELDS OF TABLE it_tab
WHERE drerz IN s_drerz
AND poart IN ('PP','NP')
AND gueltigbis GE p_sttag.
LOOP AT it_tab INTO wa_tab.
*CLEAR JKAK.
SELECT * FROM jkak
WHERE vbeln = wa_tab-vbeln
AND auart IN s_auart.
ENDSELECT.
IF sy-subrc = '0'.
SELECT * FROM jkpa APPENDING CORRESPONDING FIELDS
OF TABLE it_tab
WHERE vbeln = wa_tab-vbeln
AND posnr = wa_tab-posnr
AND jparvw = 'RE'.
* ENDSELECT.
ENDIF.
ENDLOOP.
SORT it_tab.
DELETE ADJACENT DUPLICATES FROM it_tab.
LOOP AT it_tab INTO wa_tab.
SELECT * FROM jkpa
WHERE vbeln = wa_tab-vbeln
AND posnr = wa_tab-posnr
AND jparvw = 'WE'.
IF jkpa-gpnr NE wa_tab-gpnr.
APPEND wa_tab TO it_tab2.
ENDIF.
ENDSELECT.
ENDLOOP.
LOOP AT it_tab2 INTO wa_tab2.
SELECT name1 name2 name3 name4 ort01 ort02 pfach pstlz pstl2
stras pfort FROM kna1 INTO CORRESPONDING FIELDS OF TABLE it_tab2
WHERE kunnr = wa_tab2-gpnr.
IF p_sttag GE jkpa-gueltigbis.
anz_aktiv = anz_aktiv + 1.
ELSE.
anz_inaktiv = anz_inaktiv + 1.
ENDIF.
anz_ges = anz_aktiv + anz_inaktiv.
ENDLOOP.
*Ausgabe
WRITE:/ 'Adresse',
'Anzahl Aktive Auftraege',
'Anzahl Auftraege gesamt'.
LOOP AT it_tab2 INTO wa_tab2.
WRITE:/ wa_tab2-name1,
wa_tab2-name2,
wa_tab2-name3,
wa_tab2-name4,
wa_tab2-ort01,
wa_tab2-ort02,
wa_tab2-pfach,
wa_tab2-pstlz,
wa_tab2-pstl2,
wa_tab2-stras,
wa_tab2-pfort.
ENDLOOP.
WRITE:/ anz_ges,
anz_aktiv.
Code: Alles auswählen.
CLEAR jkpa.
LOOP AT it_tab INTO wa_tab.
SELECT * FROM jkpa
WHERE vbeln = wa_tab-vbeln
AND posnr = wa_tab-posnr
AND jparvw = 'WE'.
IF jkpa-gpnr NE wa_tab-gpnr.
SELECT gpag FROM zdpv_gkgpnr INTO wa_tab
WHERE gpag = wa_tab-gpnr.
IF sy-subrc = 0.
DELETE TABLE it_tab FROM wa_tab.
ENDIF.
ELSE.
DELETE TABLE it_tab FROM wa_tab.
ENDIF.
ENDSELECT.
ENDLOOP.