Bei Nichtpflege des WERE Kontos kommt es zu entsprechenden Problemen.
Dieses Tool hilft die Qualität des WERE Kontos zu analysieren.
REPORT zmm_were1.
SELECTION-SCREEN COMMENT 01(80) text-002.
SELECTION-SCREEN SKIP.
TABLES: bsis.
SELECT-OPTIONS ps_hkont FOR bsis-hkont DEFAULT '2910'.
PARAMETERS p_date TYPE sy-datum DEFAULT sy-datum.
DATA:
lv_text(30) TYPE c,
lv_text2(30) TYPE c,
lv_shkzg LIKE bsis-shkzg,
lv_budat LIKE bsis-budat,
lv_soll LIKE bsis-dmbtr,
lv_haben LIKE bsis-dmbtr,
lv_saldo LIKE bsis-dmbtr,
lv_summe LIKE bsis-dmbtr,
lv_sollanz TYPE integer,
lv_habenanz TYPE integer,
lv_summeanz TYPE integer,
lv_sollanzvor TYPE integer,
lv_habenanzvor TYPE integer,
lv_summeanzvor TYPE integer,
lv_sollanznach TYPE integer,
lv_habenanznach TYPE integer,
lv_summeanznach TYPE integer.
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
p_date = sy-datum - 60.
AT SELECTION-SCREEN.
ps_hkont-sign = 'I'.
ps_hkont-option = 'EQ'.
ps_hkont-low = '0000002910'.
START-OF-SELECTION.
"Maximales Detail
SELECT dmbtr, shkzg, budat FROM bsis INTO TABLE
@DATA(gt_bsisdetail)
WHERE hkont IN @ps_hkont.
"Soll Haben pro Budat
SELECT SUM( dmbtr ) AS dmbtr, shkzg, budat FROM bsis INTO TABLE
@DATA(gt_bsisbudat)
WHERE hkont IN @ps_hkont GROUP BY shkzg, budat.
"Soll Haben über Gesamt
SELECT SUM( dmbtr ) AS dmbtr, shkzg FROM bsis INTO TABLE
@DATA(gt_bsisges)
WHERE hkont IN @ps_hkont GROUP BY shkzg.
"Soll Haben vor Datum
SELECT SUM( dmbtr ) AS dmbtr, shkzg FROM bsis INTO TABLE
@DATA(gt_bsisvor)
WHERE hkont IN @ps_hkont AND budat < @p_date GROUP BY shkzg.
"Soll Haben nach Datum
SELECT SUM( dmbtr ) AS dmbtr, shkzg FROM bsis INTO TABLE
@DATA(gt_bsisnach)
WHERE hkont IN @ps_hkont AND budat >= @p_date GROUP BY shkzg.
* SELECT SUM( dmbtr ) AS dmbtr, shkzg, @p_date as budat FROM bsis appending TABLE gt_bsisvor
* WHERE hkont IN @ps_hkont and budat >= p_date GROUP BY shkzg.
IF sy-subrc <> 0.
BREAK-POINT.
ENDIF.
WRITE: / 'Zum Stichtag' ,p_date.
ULINE.
lv_text2 = 'Anzahl'.
WRITE: / ' | Soll | Haben | Saldo | Summe |'.
ULINE.
**********Anzahl
CLEAR: lv_sollanz, lv_habenanz, lv_summeanz.
CLEAR: lv_sollanzvor, lv_habenanzvor, lv_summeanzvor.
CLEAR: lv_sollanznach, lv_habenanznach, lv_summeanznach.
lv_text2 = 'Anzahl Fälle'.
SORT gt_bsisdetail BY budat.
LOOP AT gt_bsisdetail INTO DATA(gs_bsisdetail).
IF gs_bsisdetail-shkzg = 'S'.
lv_sollanz = lv_sollanz + 1.
IF gs_bsisdetail-budat LT p_date.
lv_sollanzvor = lv_sollanzvor + 1.
ELSE.
lv_sollanznach = lv_sollanznach + 1.
ENDIF.
ELSE.
lv_habenanz = lv_habenanz + 1.
IF gs_bsisdetail-budat LT p_date.
lv_habenanzvor = lv_habenanzvor + 1.
ELSE.
lv_habenanznach = lv_habenanznach + 1.
ENDIF.
ENDIF.
ENDLOOP.
lv_summeanz = lv_sollanz + lv_habenanz.
lv_summeanzvor = lv_sollanzvor + lv_habenanzvor.
lv_summeanznach = lv_sollanznach + lv_habenanznach.
**********Gesamt
CLEAR: lv_text, lv_budat, lv_soll, lv_haben, lv_saldo, lv_summe.
lv_text = 'Summe'.
SORT gt_bsisges BY shkzg.
LOOP AT gt_bsisges INTO DATA(gs_bsisges).
IF gs_bsisges-shkzg = 'S'.
lv_soll = lv_soll + gs_bsisges-dmbtr.
ELSE.
lv_haben = lv_haben + gs_bsisges-dmbtr.
ENDIF.
ENDLOOP.
lv_haben = - lv_haben.
lv_saldo = lv_soll + lv_haben.
lv_summe = lv_soll - lv_haben.
WRITE: / lv_text, '|', lv_soll, '|', lv_haben, '|', lv_saldo, '|', lv_summe, '|'.
WRITE: / lv_text2, '| ', lv_sollanz, '| ', lv_habenanz, '| | ', lv_summeanz, '|'.
ULINE.
**********Vor Stichtag
CLEAR: lv_text, lv_budat, lv_soll, lv_haben, lv_saldo, lv_summe.
lv_text = 'Vor Stichtag'.
SORT gt_bsisvor BY shkzg.
LOOP AT gt_bsisvor INTO DATA(gs_bsisvor).
IF gs_bsisvor-shkzg = 'S'.
lv_soll = lv_soll + gs_bsisvor-dmbtr.
ELSE.
lv_haben = lv_haben + gs_bsisvor-dmbtr.
ENDIF.
ENDLOOP.
lv_haben = - lv_haben.
lv_saldo = lv_soll + lv_haben.
lv_summe = lv_soll - lv_haben.
WRITE: / lv_text, '|', lv_soll, '|', lv_haben, '|', lv_saldo, '|', lv_summe, '|'.
WRITE: / lv_text2, '| ', lv_sollanzvor, '| ', lv_habenanzvor, '| | ', lv_summeanzvor, '|'.
WRITE: / ' | Kritisch | Kritisch | | Kritisch |'.
WRITE: / ' | Retouren | WE ohne RE | | |'.
ULINE.
**********Nach Stichtag
CLEAR: lv_text, lv_budat, lv_soll, lv_haben, lv_saldo, lv_summe.
lv_text = 'Nach Stichtag'.
SORT gt_bsisges BY shkzg.
LOOP AT gt_bsisnach INTO DATA(gs_bsisnach).
IF gs_bsisnach-shkzg = 'S'.
lv_soll = lv_soll + gs_bsisnach-dmbtr.
ELSE.
lv_haben = lv_haben + gs_bsisnach-dmbtr.
ENDIF.
ENDLOOP.
lv_haben = - lv_haben.
lv_saldo = lv_soll + lv_haben.
lv_summe = lv_soll - lv_haben.
WRITE: / lv_text, '|', lv_soll, '|', lv_haben, '|', lv_saldo, '|', lv_summe, '|'.
WRITE: / lv_text2, '| ', lv_sollanznach, '| ', lv_habenanznach, '| | ', lv_summeanznach, '|'.
WRITE: / ' | Kritisch | Unkritisch | | |'.
WRITE: / ' | Fraglich | WE ohne RE | | |'.
ULINE.
**********Kommentar
WRITE: / 'Soll vor Stichtag: Retouren'.
WRITE: / 'Haben vor Stichtag: WE ohne RE'.
WRITE: / 'Soll nach Stichtag: Fraglich'.
WRITE: / 'Haben nach Stichtag: WE ohne RE (unkritisch)'.
WRITE / 'Ende'.
EXIT.