ZMM_WERE1 – Analyseprogramm für WERE Konto

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.