Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Add more fields in RFKOPR10 .

former_member220286
Participant
0 Kudos

Dear All,

I have a requirement to add one more filed : PRCTR : profit center in the report : RFKOPR10 .

I have made a Zcopy of this report .

As this report using LDB ,KDF, there  is also a dynamic selection in this report where I can filter out the profit center there after selecting profit center from there .

But instead I want to have a selection screen field for PRCTR  in my below selection screen instead of using Dynamic selection .

select-options : S_center  for BSIK-PRCTR .   

Can you suggest how to declare and filter out that field value in my report so that only selected profit centres output will come in the report .

Regards

Deep

21 REPLIES 21

rajkumarnarasimman
Active Contributor
0 Kudos

Hi Deep,

For this report program RFKOPR10, we can't add the custom field(S_PRCTR) in selection screen without using key.

Most of the standard programs have separate include program for selection screen declaration, but this report(RFKOPR10) don't have such include,  and there is no implicit enhancement point also.

It is recommendable to use standard report with dynamic selection, else using key you can add the custom field(S_PRCTR) in standard report.

Regards

Rajkumar Narasimman

0 Kudos

Hi Rajkumar ,

Can you explain using key how can we add custom selection screen filed .

S_PRCTR .

Suggest some work around .

Regards

Deep

0 Kudos

Hi Deep,

The standard report, we can't do the change directly, system will ask the access key which will be generated by BASIS.

When you click change button in report(RFKOPR10), the following screen will be displayed. Share the same to BASIS, they will generate the access key.

Once the access key is received, insert the same in above dialog box and click continue button, then you can insert the custom code in standard report(RFKOPR10) using toolbar options(INSERT).

Regards

Rajkumar Narasimman

0 Kudos

Thanks ,

But I have made a zcopy of this report and I am doing the modifications in that zcopy ..

So if I have the zcopy of the report can it be done and where .

Regards

Deep

0 Kudos

Hi Deep,


Deep B wrote:

But I have made a zcopy of this report and I am doing the modifications in that zcopy ..

Taking Zcopy for standard report is not recommendable.


So if I have the zcopy of the report can it be done and where .

Yes, we can add the selection screen field(S_PRCTR) at where the selection screen declaration done.

Regards

Rajkumar Narasimman

0 Kudos

Actually what I have done is that:-

Since in the report the values of profit centres are  getting picked from the BSIK table but some documents do not have the corresponding profit centres values in BSIK table so  for all those documents which do not have profit centres values or where there is  a blank profit centre value .So if there is  a blank Profit center values I have fetched  the values from the Table FAGLFLEXA wherever the profit centre value is blank and updating the same HBSIK table .

Sample code lines :-

  IF HBSIK-PRCTR EQ '  '.

      SELECT  DOCNR
             RBUKRS
             PRCTR
             GJAHR
             BELNR
             BUZEI
             FROM FAGLFLEXA INTO CORRESPONDING FIELDS OF TABLE  IT_FAGLFLEXA  FOR ALL ENTRIES IN HBSIK
                                                            WHERE  DOCNR = HBSIK-BELNR
                                                            AND  GJAHR = HBSIK-GJAHR
                                                            AND  BUZEI = HBSIK-BUZEI.

   LOOP AT HBSIK .
     READ TABLE IT_FAGLFLEXA INTO WA_FAGLFLEXA WITH KEY  DOCNR = HBSIK-BELNR
                                                         GJAHR = HBSIK-GJAHR
                                                         BUZEI = HBSIK-BUZEI.
     IF SY-SUBRC EQ 0.
          HBSIK-PRCTR  =  WA_FAGLFLEXA-PRCTR.
          MODIFY HBSIK .
     ENDIF.

  ENDLOOP.
  ENDIF.




   MOVE-CORRESPONDING bsik  TO refbl.


   MOVE ntage TO refbl-ntage.
   MOVE stage TO refbl-stage.
   MOVE ztage TO refbl-ztage.
   MOVE utage TO refbl-utage.
   APPEND refbl.

   IF REFBL-PRCTR EQ ' '.

     SELECT  DOCNR
             RBUKRS
             PRCTR
             GJAHR
             BELNR
             BUZEI
             FROM FAGLFLEXA INTO CORRESPONDING FIELDS OF TABLE  IT1_FAGLFLEXA FOR ALL ENTRIES IN REFBL WHERE  DOCNR = REFBL-BELNR
                                                            AND  GJAHR = REFBL-GJAHR
                                                            AND  BUZEI = REFBL-BUZEI.

   LOOP AT REFBL.
     READ TABLE IT1_FAGLFLEXA INTO WA_FAGLFLEXA1 WITH KEY DOCNR = REFBL-BELNR
                                                          GJAHR = REFBL-GJAHR
                                                          BUZEI = REFBL-BUZEI.

     IF SY-SUBRC EQ 0.
          REFBL-PRCTR  =  WA_FAGLFLEXA1-PRCTR.
          MODIFY REFBL.
     ENDIF.
   ENDLOOP.

   ENDIF.

But I am unable to filter my screen field S_prctr so that only selected Profit centres output will come .Suggest some ideas .


Regards

Deep

0 Kudos

Hi Deep,

In the above sample code which you are using, you can restrict the selection from FAGLFLEXA by using S_PRCTR in where clause for field PRCTR. or

Secondly, If required you can also provide the logic after GET bsik to restrict the value of PRCTR . But, as you mentioned there are certain records for which PRCTR value is not present in BSIK and you want those records also by fetching data from FAGLFLEXA. So, you restrict the selection as mentioned in sample code by providing where clause for PRCTR .

Do let me know if i might not got your issue correctly...

0 Kudos

Dear Praphul ,

Can you suggest how to do that ??

How to link my screen field s_prctr so that Profit centres values can be restricted in the internal tables .

Regards

Deep

0 Kudos

Hi Deep,

First, After the GET bsik, provide logic to restrict the value of PRCTR.

check whether BSIK-PRCTR is in S_PRCTR or  BSIK-PRCTR  = SPACE, then proceed.

This will let those PRCTR records which are present in S_PRCTR to proceed further along with those PRCTR which are blank in BSIK table.

Then, In the sample select from FAGLFLEXA which you are using as mentioned in your post, provide one more where clause for field PRCTR in S_PRCTR.

0 Kudos

Dear Praphul,

I have made a zcopy of the  standard report :RFKOPR10 .

How to restrict the value of PRCTR .

I have one selection screen field :-

select-options : S_PRCTR or  BSIK-PRCTR .

Since in the report the values of profit centres are  getting picked from the BSIK table but some documents do not have the corresponding profit centres values in BSIK table so  for all those documents which do not have profit centres values .So if there is  a blank Profit center values in BSIK table for that I have fetched  the values from the Table FAGLFLEXA wherever the profit centre value is blank and updating the same in HBSIK table .

Below are code lines I have used.

IF HBSIK-PRCTR EQ '  '.

      SELECT  DOCNR
             RBUKRS
             PRCTR
             GJAHR
             BELNR
             BUZEI
             FROM FAGLFLEXA INTO  TABLE  IT_FAGLFLEXA  FOR ALL ENTRIES IN HBSIK
                                                            WHERE  DOCNR = HBSIK-BELNR
                                                            AND  GJAHR = HBSIK-GJAHR
                                                            AND  BUZEI = HBSIK-BUZEI.

   LOOP AT HBSIK .
     READ TABLE IT_FAGLFLEXA INTO WA_FAGLFLEXA WITH KEY 

                                                         DOCNR = HBSIK-BELNR
                                                         GJAHR = HBSIK-GJAHR
                                                         BUZEI = HBSIK-BUZEI.
     IF SY-SUBRC EQ 0.
          HBSIK-PRCTR  =  WA_FAGLFLEXA-PRCTR.
          MODIFY HBSIK .
     ENDIF.

  ENDLOOP.
  ENDIF.

Also this query taking a lot of time to execute .selecting data from FAGLFLEXA.

There is a short dump max time exceed runtime .

can you suggest exactly where to do that as this report is also using the ldb : kdf

Regards

Deep

0 Kudos

Hi Deep,

Do let me know where you are putting your custom logic . Just provide the Context of code.

Also, Just looking at your sample code , you are checking a work area "IF HBSIK-PRCTR EQ '  '."

and using for all entries for whole table HBSIK while selecting. And Where clause fields you are using is wrong. Check the table FAGLFLEXA for the primary key fields which you can provide and also you are not using the profit centre in where clause ( S_PRCTR) .

Did you provided the following check after GET BSIK ?

CHECK bsik-prctr IN s_prctr OR bsik-prctr = space.

0 Kudos

Hi Praphul,

Please find the code lines .

REPORT ZSAMPLED50

       MESSAGE-ID fr

       LINE-SIZE  250

       NO STANDARD PAGE HEADING.

TABLES:   b0sg,

          lfa1,                        "Daten auf Mandantenebene

*           lfKA,

            lfb1,                      "Daten auf Buchungskreisebene

*              lfB4,                    "Zahlungsverhalten

              lfb5,                    "Mahndaten

*             lfKK,    "Kreditkontrolle

              lfc1,                    "Verkehrszahlen

              lfc3,                    "Sonderumsätze

              bsik,                    "Offene Posten

*               BKPF,

*                 BSEG,

              T005U ,                  "  Taxes: Region Key: Texts

                       bsega.

TABLES:

          bhdgd,

          t001,

          t001s,

          *t001s,

          t074t,

          t074u,

          tbsl,

          tbslt,

          tcurx,

          adrs,

          rfpdo,

          rfpdo1,

          rfpdo3,

          rfsdo,

          faede.

FIELD-SYMBOLS: <f1>, <f2>.

TYPES : BEGIN OF TY_T005U ,

                   SPRAS TYPE T005U-SPRAS,

                   LAND1 TYPE T005U-LAND1,

                   BLAND TYPE T005U-BLAND,

                   BEZEI TYPE T005U-BEZEI,

        END OF TY_T005U.

        DATA : IT_T005U  TYPE STANDARD TABLE OF TY_T005U ,

               WA_T005U   TYPE TY_T005U.

        DATA : idx type sy-tabix.    " Index

TYPES : BEGIN OF TY_FAGLFLEXA,

                             DOCNR   TYPE FAGLFLEXA-DOCNR,

                             RBUKRS  TYPE FAGLFLEXA-RBUKRS,

                             PRCTR TYPE FAGLFLEXA-PRCTR,

                             GJAHR   TYPE FAGLFLEXA-GJAHR,

                             BELNR   TYPE FAGLFLEXA-BELNR,

                             BUZEI   TYPE FAGLFLEXA-BUZEI,

       END OF TY_FAGLFLEXA.

       DATA : IT_FAGLFLEXA  TYPE STANDARD TABLE OF  TY_FAGLFLEXA,

              IT1_FAGLFLEXA TYPE STANDARD TABLE OF TY_FAGLFLEXA ,

              IT2_FAGLFLEXA TYPE STANDARD TABLE OF TY_FAGLFLEXA,

              WA_FAGLFLEXA  TYPE TY_FAGLFLEXA,

              WA_FAGLFLEXA1 TYPE TY_FAGLFLEXA,

              WA_FAGLFLEXA2 TYPE TY_FAGLFLEXA.

      DATA : PRCTR_TEMP TYPE BSIK-PRCTR.

DATA: lo_writer TYPE REF TO cl_dopr_writer,

      l_title_1 TYPE string,

      l_title_part1 TYPE string,

      l_title_part2 TYPE string,

      l_hlp_txt TYPE c LENGTH 130,

      l_hlp_txt1 TYPE c LENGTH 15,

      l_hlp_string TYPE string,

      l_raster  TYPE p,

      l_hlp_lines TYPE i,

      l_hlp_i TYPE i.

*Hilfsfelder

*---Prüfung ob mehrere Hauswährungen verarbeitet werden.

DATA:    cfakt(3)      TYPE p,

         checksaldo(8) TYPE p,

         checksald1(8) TYPE p,

         checksald2(8) TYPE p,

         checksald3(8) TYPE p,

         checksald4(8) TYPE p,

         checkagobl(8) TYPE p,

         PRCTR TYPE BSIK-PRCTR,

         waers LIKE t001-waers,

         wflag(1) TYPE p VALUE '0',

         waers2        LIKE t001-waers,

         wflag2(1)     TYPE p VALUE '0',

         ph-line(132)  TYPE c.

*---Ermittlung aktuelles Geschäftsjahr über Funktionsbaustein.

DATA: curry LIKE bsik-gjahr.

*---Ermittlung Zahlungseingang bei Zahlungen mit Skontoabzug---------*

*DATA: ZVTAGE LIKE lfB4-VZS01,          "Verzugstage

*     ZVSKONTO(8) TYPE P,     "Zahlungsvolumen bei Zahlung mit Skonto

*     ZVNETTO(8)  TYPE P,              "Zahlungsvolumen bei Nettozahlung

*     ZVVERZUG(8) TYPE P,              "Verzugstage

*     ZVMALVZ(10) TYPE P,              "Zahlungvolumen * Verzugstage

"lfB4-VZSxx)

*     ZVTYP(1)    TYPE C,              "Skonto oder Nettozahler

*     ZVPER(4)    TYPE C.     "Periode letze Zahlung

*     ZVPER(6)    TYPE C.              "Periode letze Zahlung

*---Zeilenanzahl fü Adressausgabe -----------------------------------*

DATA: zeilenanzahl LIKE adrs-anzzl VALUE 7.

*ATA: KSALDO(6)  TYPE P,                   "Saldovortrag

*     BEABZUG(6) TYPE P,                   "Berechtigte Abzüge

*     UBABZUG(6) TYPE P,                   "Unberechtigte Abzüge

*     JAHRAUG(6) TYPE P,                   "Kumulierter Jahresausgleich

*     KUMZINS(6) TYPE P.                   "Kumulierter Zins

* Ausgabe der Mahndaten pro Buchungskreis.

* ----------------------------------------

DATA: index(2) TYPE p VALUE 0.

* Hilfsfelder

* -----------------------------------------------------------

DATA: hf(1)    TYPE c.

DATA: txt_1(78) TYPE c,                "Mahnbereich

      txt_2(78) TYPE c,                "Mahnart

      txt_3(78) TYPE c,                "Mahnempfänger

      txt_4(78) TYPE c,                "Mahndatum

      txt_5(78) TYPE c,                "Mahnstufe

      txt_6(78) TYPE c,                "Mahnsperre

      txt_7(78) TYPE c,                "Mahnverfahren

      txt_8(78) TYPE c.                "Sachbearbeiter

DATA: BEGIN OF xmahn OCCURS 10.

        INCLUDE STRUCTURE lfb5.

DATA: END OF xmahn.

* Hilfsfeld für Sicherung der lfka Felder

* -----------------------------------------------------------

*ATA: SAVE_KLIMG LIKE lfKA-KLIMG,   "Gesamtlimit

*     SAVE_KLIME LIKE lfKA-KLIME,   "Einzellimit

*     SAVE_WAERS LIKE lfKA-WAERS,   "Währung

*     SAVE_DLAUS LIKE lfKA-DLAUS.   "letzte Auskunft

* Hilfsfelder

* -----------------------------------------------------------

DATA: char1(1)   TYPE c.

DATA: flag1(1)   TYPE c.

DATA: flag2(1)   TYPE c.

DATA: intens(1)  TYPE c.

DATA: rastza(1)  TYPE c.

DATA: fltop(1)   TYPE c.

DATA: count TYPE p.

DATA: coun1 TYPE i.

*--------------------------------------------------------------------*

*---- K o n s t a n t e n -------------------------------------------*

*--------------------------------------------------------------------*

*---- DNULL zum Vergleich mit Datumsfeldern -------------------------*

DATA: dnull(8) TYPE c VALUE '00000000'.

*---- DECKBLATT = 'N' ==> Kein Deckblatt bei NEW-SECTION ------------*

DATA: deckblatt TYPE c VALUE 'N'.

*--------------------------------------------------------------------*

*---- 'H' =   Hilfsfelder, die jederzeit fuer Berechnungen ver-  ----*

*---- wendet werden koennen. ----------------------------------------*

*--------------------------------------------------------------------*

DATA: BEGIN OF h,

        stichtag(8),

        offset(2) TYPE p,

        offse1(2) TYPE p,

        soll      LIKE lfc1-um01s,

        haben     LIKE lfc1-um01h,

        saldo     LIKE lfc1-umsav,

        sald2     LIKE lfc1-umsav,

        shbkz     LIKE lfc3-shbkz,     "Sonderhauptbuchkennzeichen

        saldv     LIKE lfc3-saldv,     "Sonderhauptbuch-Saldovortrag

        shbls     LIKE lfc3-solll,     "Sonderhauptbuch-Lfd.-Saldo

        shbsl     LIKE lfc3-solll,     "Sonderhauptbuch-Lfd.-SOLL

        shbhb     LIKE lfc3-habnl,     "Sonderhauptbuch-Lfd.-HABEN

*       GBNUM     LIKE lfC1-GBN01,    "Geschaeftsber. Nummer ECKERT

*       GBUMS     LIKE lfC1-GBU01,    "Geschaeftsber. Umsatz

        text(15),

        umlow     LIKE bsik-umskz,     "Umsatzkennzeichen

        umhig     LIKE bsik-umskz,     "Umsatzkennzeichen

      END   OF h.

*--------------------------------------------------------------------*

*---- 'C' =   Zwischenergebnisse, die aus Feldern des C-Segmentes ---*

*---- berechnet werden. ---------------------------------------------*

*--------------------------------------------------------------------*

DATA: BEGIN OF c,

        saldo     TYPE p,              "Saldo

*       WEXOB     TYPE P,         "Wechsel-Obligo        W,S,B

*       ANZOB     TYPE P,         "Anzahlungs-Obligo     A

*       ZANFB     TYPE P,         "Zahlungs-Anforderung  F

        umkz1     LIKE lfc3-shbkz,                          "SHBKZ 1

        sums1     TYPE p,              "Sonderumsatz 1

        umkz2     LIKE lfc3-shbkz,                          "SHBKZ 2

        sums2     TYPE p,              "Sonderumsatz 2

        umkz3     LIKE lfc3-shbkz,                          "SHBKZ 3

        sums3     TYPE p,              "Sonderumsatz 3

        umkz4     LIKE lfc3-shbkz,                          "SHBKZ 4

        sums4     TYPE p,              "Sonderumsatz 4

        umkz5     LIKE lfc3-shbkz,                          "SHBKZ 5

        sums5     TYPE p,              "Sonderumsatz 5

        umkz6     LIKE lfc3-shbkz,                          "SHBKZ 6

        sums6     TYPE p,              "Sonderumsatz 6

        umkz7     LIKE lfc3-shbkz,                          "SHBKZ 7

        sums7     TYPE p,              "Sonderumsatz 7

        umkz8     LIKE lfc3-shbkz,                          "SHBKZ 8

        sums8     TYPE p,              "Sonderumsatz 8

        umkz9     LIKE lfc3-shbkz,                          "SHBKZ 9

        sums9     TYPE p,              "Sonderumsatz 9

        umkz10    LIKE lfc3-shbkz,                          "SHBKZ 10

        sums10    TYPE p,              "Sonderumsatz 10

        sonob     TYPE p,              "Sonstige Umsatz-Kz

        babzg     TYPE p,              "Berechtigte Abzuege

        uabzg     TYPE p,              "Unberechtigte Abzuege

        kzins     TYPE p,              "Zinszahlungen

        kumum     TYPE p,              "Umsatz

        kumag     TYPE p,              "Kum. Jahresausgleich

*       KREUEB    TYPE P,         "Kreditueberschreitung

*       AGOBLI    TYPE P,         "Gesamt-Obligo (absolut)

        agobli LIKE lfc1-umsav,        "Gesamt-Obligo (absolut)

*       RGOBLI    TYPE P,         "Gesamt-Obligo (relativ)

        lftage(3) TYPE p,              "Langfristige Überzugstage

        mftage(3) TYPE p,              "Mittelfristige Überzugstage

        kftage(3) TYPE p,              "Kurzfristige Überzugstage

        zvtyp(1)    TYPE c,            "Flag Skonto oder Nettozahler

        zvper(6)    TYPE c,            "letze Zahlungsperiode

        zvverzug(8) TYPE p,            "Durchschittliche Verzugst

      END   OF c.

*--------------------------------------------------------------------*

*---- 'C2'=   Zwischenergebnisse, die aus Feldern des C-Segmentes ---*

*---- berechnet werden. ---------------------------------------------*

*--------------------------------------------------------------------*

DATA: BEGIN OF c2 OCCURS 0,

        bukrs     LIKE lfc1-bukrs,

        saldo     TYPE p,              "Saldo

*       WEXOB     TYPE P,         "Wechsel-Obligo        W,S,B

*       ANZOB     TYPE P,         "Anzahlungs-Obligo     A

*       ZANFB     TYPE P,         "Zahlungs-Anforderung  F

        umkz1     LIKE lfc3-shbkz,                          "SHBKZ 1

        sums1     TYPE p,              "Sonderumsatz 1

        umkz2     LIKE lfc3-shbkz,                          "SHBKZ 2

        sums2     TYPE p,              "Sonderumsatz 2

        umkz3     LIKE lfc3-shbkz,                          "SHBKZ 3

        sums3     TYPE p,              "Sonderumsatz 3

        umkz4     LIKE lfc3-shbkz,                          "SHBKZ 4

        sums4     TYPE p,              "Sonderumsatz 4

        umkz5     LIKE lfc3-shbkz,                          "SHBKZ 5

        sums5     TYPE p,              "Sonderumsatz 5

        umkz6     LIKE lfc3-shbkz,                          "SHBKZ 6

        sums6     TYPE p,              "Sonderumsatz 6

        umkz7     LIKE lfc3-shbkz,                          "SHBKZ 7

        sums7     TYPE p,              "Sonderumsatz 7

        umkz8     LIKE lfc3-shbkz,                          "SHBKZ 8

        sums8     TYPE p,              "Sonderumsatz 8

        umkz9     LIKE lfc3-shbkz,                          "SHBKZ 9

        sums9     TYPE p,              "Sonderumsatz 9

        umkz10    LIKE lfc3-shbkz,                          "SHBKZ 10

        sums10    TYPE p,              "Sonderumsatz 10

        sonob     TYPE p,              "Sonstige Umsatz-Kz

        babzg     TYPE p,              "Berechtigte Abzuege

        uabzg     TYPE p,              "Unberechtigte Abzuege

        kzins     TYPE p,              "Zinszahlungen

        kumum     TYPE p,              "Umsatz

        kumag     TYPE p,              "Kum. Jahresausgleich

*       KREUEB    TYPE P,         "Kreditueberschreitung

*       AGOBLI    TYPE P,         "Gesamt-Obligo (absolut)

        agobli LIKE lfc1-umsav,        "Gesamt-Obligo (absolut)

*       RGOBLI    TYPE P,         "Gesamt-Obligo (relativ)

        lftage(3) TYPE p,              "Langfristige Überzugstage

        mftage(3) TYPE p,              "Mittelfristige Überzugstage

        kftage(3) TYPE p,              "Kurzfristige Überzugstage

        zvtyp(1)    TYPE c,            "Flag Skonto oder Nettozahler

        zvper(6)    TYPE c,            "letze Zahlungsperiode

        zvverzug(8) TYPE p,            "Durchschittliche Verzugst

      END   OF c2.

*--------------------------------------------------------------------*

*---- 'C3'=   Zwischenergebnisse, die aus Feldern des C-Segmentes ---*

*---- berechnet werden. ---------------------------------------------*

*--------------------------------------------------------------------*

DATA: BEGIN OF c3,

        saldo     TYPE p,              "Saldo

*       WEXOB     TYPE P,         "Wechsel-Obligo        W,S,B

*       ANZOB     TYPE P,         "Anzahlungs-Obligo     A

*       ZANFB     TYPE P,         "Zahlungs-Anforderung  F

        umkz1     LIKE lfc3-shbkz,                          "SHBKZ 1

        sums1     TYPE p,              "Sonderumsatz 1

        umkz2     LIKE lfc3-shbkz,                          "SHBKZ 2

        sums2     TYPE p,              "Sonderumsatz 2

        umkz3     LIKE lfc3-shbkz,                          "SHBKZ 3

        sums3     TYPE p,              "Sonderumsatz 3

        umkz4     LIKE lfc3-shbkz,                          "SHBKZ 4

        sums4     TYPE p,              "Sonderumsatz 4

        umkz5     LIKE lfc3-shbkz,                          "SHBKZ 5

        sums5     TYPE p,              "Sonderumsatz 5

        umkz6     LIKE lfc3-shbkz,                          "SHBKZ 6

        sums6     TYPE p,              "Sonderumsatz 6

        umkz7     LIKE lfc3-shbkz,                          "SHBKZ 7

        sums7     TYPE p,              "Sonderumsatz 7

        umkz8     LIKE lfc3-shbkz,                          "SHBKZ 8

        sums8     TYPE p,              "Sonderumsatz 8

        umkz9     LIKE lfc3-shbkz,                          "SHBKZ 9

        sums9     TYPE p,              "Sonderumsatz 9

        umkz10    LIKE lfc3-shbkz,                          "SHBKZ 10

        sums10    TYPE p,              "Sonderumsatz 10

        sonob     TYPE p,              "Sonstige Umsatz-Kz

        babzg     TYPE p,              "Berechtigte Abzuege

        uabzg     TYPE p,              "Unberechtigte Abzuege

        kzins     TYPE p,              "Zinszahlungen

        kumum     TYPE p,              "Umsatz

        kumag     TYPE p,              "Kum. Jahresausgleich

*       KREUEB    TYPE P,         "Kreditueberschreitung

*       AGOBLI    TYPE P,         "Gesamt-Obligo (absolut)

        agobli LIKE lfc1-umsav,        "Gesamt-Obligo (absolut)

*       RGOBLI    TYPE P,         "Gesamt-Obligo (relativ)

*       LFTAGE(3) TYPE P,         "Langfristige Überzugstage

*       MFTAGE(3) TYPE P,         "Mittelfristige Überzugstage

*       KFTAGE(3) TYPE P,         "Kurzfristige Überzugstage

*       ZVTYP(1)    TYPE C,       "Flag Skonto oder Nettozahler

*       ZVPER(6)    TYPE C,       "letze Zahlungsperiode

*       ZVVERZUG(8) TYPE P,       "Durchschittliche Verzugst

      END   OF c3.

DATA: shbetrag LIKE bsega-dmshb.       "TYPE P.

*--------------------------------------------------------------------*

*---- 'RTAB' = Rastertabelle fuer offene Posten ---------------------*

*--------------------------------------------------------------------*

DATA: BEGIN OF rtab OCCURS 30,

        sortk(1)   TYPE c,             "0 = Summe Gesber

                                       "1 = Summe aller Gesber

                                       "2 = Umsatzdaten

        bukrs LIKE bsik-bukrs,

        gsber LIKE bsik-gsber,

        waers LIKE bsik-waers,

        PRCTR LIKE BSIK-PRCTR,       " Profit Center

        raart TYPE c,                  "Rasterart

                                       "1 = Netto-Faelligkeit

                                       "2 = Skonto1-Faelligkeit

                                       "3 = Zahlungseingang

                                       "4 = Ueber-Faelligkeit

        xguts TYPE c,                  "Gutschrift

        kumum TYPE p,                  "Umsatz

        anzah TYPE p,                  "Anzahlungen

        opsum TYPE p,                  "Offene Posten Summe

        rast1 TYPE p,                  "Rasterfeld 1

        rast2 TYPE p,                  "Rasterfeld 2

        rast3 TYPE p,                  "Rasterfeld 3

        rast4 TYPE p,                  "Rasterfeld 4

        rast5 TYPE p,                  "Rasterfeld 5

        rast6 TYPE p,                  "Rasterfeld 6

        lifnr LIKE lfa1-lifnr,

        name1 like lfa1-name1,

        sortl LIKE lfa1-sortl,

        land1 LIKE lfa1-land1,

        akont TYPE LFB1-AKONT,          " Reconcillation account : 04.01.2015

        ORT01 TYPE LFA1-ORT01,          " CITY : 07.01.2016

        SPRAS  TYPE T005U-SPRAS,     " Language Key  " T005U : Taxes: Region Key: Texts

        LAND11  TYPE T005U-LAND1,     " Country Key

        BLAND  TYPE T005U-BLAND,      " Region (State, Province, County)

        BEZEI  TYPE T005U-BEZEI,      " Description

        regio  TYPE lfa1-regio  ,     " Region : 11.01.2016

      END   OF rtab.

      DATA : regio_temp TYPE T005U-BEZEI .

*--------------------------------------------------------------------*

*---- 'RBUS' = Rastertabelle fuer Summen pro Sachbearbeiter ---------*

*--------------------------------------------------------------------*

DATA: BEGIN OF rbus OCCURS 30,

        sortk(1)   TYPE c,             "0 = Summe Gesber

                                       "1 = Summe aller Gesber

                                       "2 = Umsatzdaten

        bukrs LIKE bsik-bukrs,

        gsber LIKE bsik-gsber,

        waers LIKE bsik-waers,

        PRCTR LIKE BSIK-PRCTR,         " Profit Center :

        raart TYPE c,                  "Rasterart

                                       "1 = Netto-Faelligkeit

                                       "2 = Skonto1-Faelligkeit

                                       "3 = Zahlungseingang

                                       "4 = Ueber-Faelligkeit

        xguts TYPE c,                  "Gutschrift

        kumum TYPE p,                  "Umsatz

        anzah TYPE p,                  "Anzahlungen

        opsum TYPE p,                  "Offene Posten Summe

        rast1 TYPE p,                  "Rasterfeld 1

        rast2 TYPE p,                  "Rasterfeld 2

        rast3 TYPE p,                  "Rasterfeld 3

        rast4 TYPE p,                  "Rasterfeld 4

        rast5 TYPE p,                  "Rasterfeld 5

        rast6 TYPE p,                  "Rasterfeld 6

*        akont TYPE LFB1-AKONT,         " Reconcillation account : 04.01.2015

      END   OF rbus.

*--------------------------------------------------------------------*

*---- 'RBUK' = Rastertabelle fuer Summen pro Buchungskreis  ---------*

*--------------------------------------------------------------------*

DATA: BEGIN OF rbuk OCCURS 30,

        sortk(1)   TYPE c,             "0 = Summe Gesber

                                       "1 = Summe aller Gesber

                                       "2 = Umsatzdaten

        bukrs LIKE bsik-bukrs,

        gsber LIKE bsik-gsber,

        waers LIKE bsik-waers,

        PRCTR LIKE BSIK-PRCTR,

        raart TYPE c,                  "Rasterart

                                       "1 = Netto-Faelligkeit

                                       "2 = Skonto1-Faelligkeit

                                       "3 = Zahlungseingang

                                       "4 = Ueber-Faelligkeit

        xguts TYPE c,                  "Gutschrift

        kumum TYPE p,                  "Umsatz

        anzah TYPE p,                  "Anzahlungen

        opsum TYPE p,                  "Offene Posten Summe

        rast1 TYPE p,                  "Rasterfeld 1

        rast2 TYPE p,                  "Rasterfeld 2

        rast3 TYPE p,                  "Rasterfeld 3

        rast4 TYPE p,                  "Rasterfeld 4

        rast5 TYPE p,                  "Rasterfeld 5

        rast6 TYPE p,                  "Rasterfeld 6

*        akont TYPE LFB1-AKONT,          " Reconcillation account : 04.01.2015

      END   OF rbuk.

*--------------------------------------------------------------------*

*---- 'RSUM' = Rastertabelle pro Währung über alle Buchungskreise ---*

*--------------------------------------------------------------------*

DATA: BEGIN OF rsum OCCURS 30,

        sortk(1)   TYPE c,             "0 = Summe Gesber

                                       "1 = Summe aller Gesber

*       BUKRS LIKE bsik-BUKRS,

*       GSBER LIKE bsik-GSBER,

        waers LIKE bsik-waers,

        raart TYPE c,                  "Rasterart

                                       "1 = Netto-Faelligkeit

                                       "2 = Skonto1-Faelligkeit

                                       "3 = Zahlungseingang

                                       "4 = Ueber-Faelligkeit

        xguts TYPE c,                  "Gutschrift

        kumum TYPE p,                  "Umsatz

        anzah TYPE p,                  "Anzahlungen

        opsum TYPE p,                  "Offene Posten Summe

        rast1 TYPE p,                  "Rasterfeld 1

        rast2 TYPE p,                  "Rasterfeld 2

        rast3 TYPE p,                  "Rasterfeld 3

        rast4 TYPE p,                  "Rasterfeld 4

        rast5 TYPE p,                  "Rasterfeld 5

        rast6 TYPE p,                  "Rasterfeld 6

      END   OF rsum.

*--------------------------------------------------------------------*

*---- interne Tabelle für Periodenabgrenzung-------------------------*

*--------------------------------------------------------------------*

RANGES: bmonat FOR rfpdo-doprbmon.

*--------------------------------------------------------------------*

*---- In die Felder RP01 bis RP05 werden dynamisch die von aussen ---*

*---- eingegebenen Rasterpunkte uebertragen -------------------------*

*--------------------------------------------------------------------*

DATA:

*      rp01(2)   TYPE p,                                     "   0

*      rp02(2)   TYPE p,                                     "  20

*      rp03(2)   TYPE p,                                     "  40

*      rp04(2)   TYPE p,                                     "  80

*      rp05(2)   TYPE p,                                     " 100

       rp01(4)   TYPE p,                                     "   0

       rp02(4)   TYPE p,                                     "  20

       rp03(4)   TYPE p,                                     "  40

       rp04(4)   TYPE p,                                     "  80

       rp05(4)   TYPE p,                                     " 100

*      RP06(3)   TYPE P,                "   1

*      RP07(3)   TYPE P,                "  21

*      RP08(3)   TYPE P,                "  41

*      RP09(3)   TYPE P,                "  81

*      RP10(3)   TYPE P.                " 101

       RP06(4)   TYPE P,                "   1

       RP07(4)   TYPE P,                "  21

       RP08(4)   TYPE P,                "  41

       RP09(4)   TYPE P,                "  81

       RP10(4)   TYPE P,                " 101

       RP11(4)   TYPE P .               " LOCATION

*--------------------------------------------------------------------*

*---- In die Felder RC01 bis RC10 werden die Rasterpunkte in --------*

*---- charakterform abgestellt. (fuer REPLACE-Funktion in Variabler -*

*---- Ueberschrift) -------------------------------------------------*

*--------------------------------------------------------------------*

DATA: rc01(4)   TYPE c,                                     "  0

      rc02(4)   TYPE c,                                     "  20

      rc03(4)   TYPE c,                                     "  40

      rc04(4)   TYPE c,                                     "  80

      rc05(4)   TYPE c,                                     " 100

      rc06(4)   TYPE c,                                     "   1

      rc07(4)   TYPE c,                                     "  21

      rc08(4)   TYPE c,                                     "  41

      rc09(4)   TYPE c,                                     "  81

      rc10(4)   TYPE c.                                     " 101

*--------------------------------------------------------------------*

*---- Felder für Umsatzkennzeichen ----------------------------------*

*---- für Ausweis der Sonderumsätze----------------------------------*

*--------------------------------------------------------------------*

DATA: humkz1    LIKE lfc3-shbkz,

      humkz2    LIKE lfc3-shbkz,

      humkz3    LIKE lfc3-shbkz,

      humkz4    LIKE lfc3-shbkz,

      humkz5    LIKE lfc3-shbkz,

      humkz6    LIKE lfc3-shbkz,

      humkz7    LIKE lfc3-shbkz,

      humkz8    LIKE lfc3-shbkz,

      humkz9    LIKE lfc3-shbkz,

      humkz10   LIKE lfc3-shbkz.

*--------------------------------------------------------------------*

*---- 'GAG' = Hilfsfelder für die Berechnung der Gauss'chen  --------*

*---- Ausgleichsgeraden. ( Trend ) ----------------------------------*

*--------------------------------------------------------------------*

DATA:BEGIN OF gag OCCURS 5,

              f     TYPE c,            "1 = langfristig

                                       "2 = mittelfristig

                                       "3 = kurzfristig

                                       "4 = letzter Vorgang

              d(4)  TYPE p,            "Mitteldatum

              t(4)  TYPE p,            "MW Überzgustage

              u(8)  TYPE p,            "MW Umsatz

              ut(8) TYPE p,            "MW Umsatz * Tage

              dt(8) TYPE p,            "MW Datum  * Tage

              dd(8) TYPE p,            "MW Datum  * Datum

     END OF gag.

*--------------------------------------------------------------------*

*---- Weitere Hilfsfelder für die Berechnung der Gauss'chen  --------*

*---- Ausgleichsgeraden. ( Trend ) ----------------------------------*

*--------------------------------------------------------------------*

DATA:         lz(4)  TYPE p,           "Letzte Zahlung

              dm(8)  TYPE p,           "Rechenfeld

              vw(16) TYPE p,           "Rechenfeld

              vw1(16) TYPE p,          "Rechenfeld

              vw2(16) TYPE p.          "Rechenfeld

DATA: BEGIN OF trend,

        text(7)     TYPE c,

        trendda(4)  TYPE c,

        trenddb(4)  TYPE c,

        trenddc(4)  TYPE c VALUE '/100',

      END OF trend.

DATA: BEGIN OF s,

        m(4)     TYPE p,               "Anzahl akzeptierter Mittelwerte

        d(4)     TYPE p,               "Summe (Datum)

        t(5)     TYPE p,               "Summe (Tage)

        dt(8)    TYPE p,               "Summe (Datum * Tage)

        dd(8)    TYPE p,               "Summe (Datum * Datum)

        aw(4)    TYPE p,               "Schätzwert f. akt. Überzugstage

        ae(9)    TYPE p,               "dto. aufbereitet.

        bw(4)    TYPE p,               "Tendenz Tage /100 Tage

        be(9)    TYPE p,               "dto. aufbereitet

      END OF s.

*--------------------------------------------------------------------*

*---- E N D E der Hilfsfelder für Berechnung der Gauss'chen  --------*

*---- Ausgleichsgeraden. ( Trend ) ----------------------------------*

*--------------------------------------------------------------------*

*---- GBZAEHL - In diesem Feld wird vermerkt, fuer wieviele Ge- ------*

*----           schaeftsbereiche ein OP-Raster ausgegeben wird. ------*

*----           Wird das Raster nur fuer einen Geschaeftsbereich ge- -*

*----           druckt, so entfaellt das Summen-Raster. --------------*

DATA: gbzaehl(3) TYPE p.

DATA: top-flag(1) TYPE c.

*---- TOP-FLA2 ' ' = bei TOP-OF-PAGE Summenüberschrift ---------------*

*----          'X' = bei TOP-OF-PAGE Ueberschrift fuer Raster ausgeb. *

DATA: top-fla2(1) TYPE c.

DATA: g_ex_print_sel  TYPE BOOLEAN.                            "1021583

DATA: batch_op_header TYPE BOOLEAN.

DATA: BEGIN OF sel,

        stamm(1) TYPE c,

        postn(1) TYPE c,

        post2(1) TYPE c,

      END   OF sel.

*---- SATZART  '1' = Stammdaten --------------------------------------*

*----          '2' = Faelligkeitsraster ------------------------------*

*----          '3' = Einzelposten ------------------------------------*

DATA: satzart(1) TYPE c.

*---- RART  =  Erste ausgewaehlte Rasterart --------------------------*

DATA: rart(1)    TYPE c.

*---- TAGE  =  Tage nach denen die Posten sortiert sind --------------*

DATA: tage(4)    TYPE p,

*---- NTAGE =  Tage fuer Netto-Faelligkeit ---------------------------*

      ntage(4)   TYPE p,

*---- STAGE =  Tage fuer Skonto1-Faelligkeit -------------------------*

      stage(4)   TYPE p,

*---- ZTAGE =  Tage fuer voraussichtlichen Zahlungseingang -----------*

      ztage(4)   TYPE p,

*---- UTAGE =  Tage fuer Ueber-Faelligkeit ---------------------------*

      utage(4)   TYPE p.

DATA : T_PRCTR TYPE BSIK-PRCTR.

*---- RASTERUU dient zur Sortierung der Einzelposten. Die Posten -----*

*----          gemaess ihrer Rasterung die Werte '1' bis '6' ---------*

DATA: rasteruu(1) TYPE c.

*---- RAART  Rasterart -----------------------------------------------*

*---- Die einzelnen Felder der Feldleiste werden bei SART-OF-SELECTION*

*---- mit 1 oder 0 bestueckt. ----------------------------------------*

*ATA: BEGIN OF RAART,

*       NET(1)   TYPE C,      "X = ausgewaehlt, ' ' = nicht ausgewaehlt

*       SKT(1)   TYPE C,      "X = ausgewaehlt, ' ' = nicht ausgewaehlt

*       UEB(1)   TYPE C,      "X = ausgewaehlt, ' ' = nicht ausgewaehlt

*     END   OF RAART.

DATA: BEGIN OF gb,

        gsber  LIKE bsik-gsber,

        waers  LIKE bsik-waers,

      END   OF gb.

*---------------------------------------------------------------------*

*---- SAVE_FELDER ---------------------------------------------------*

*---------------------------------------------------------------------*

DATA: save_gsber LIKE bsik-gsber.

DATA: save_waers LIKE bsik-gsber.

*---------------------------------------------------------------------*

*---- Variable Ueberschriften ----------------------------------------*

*---------------------------------------------------------------------*

*ATA: VARUEB1(132),

*     VARUEB2(132),

DATA: BEGIN OF varueb1,

        feld1(40)   TYPE c,

        feld2(14)   TYPE c,

        feld3(14)   TYPE c,

        feld4(14)   TYPE c,

        feld5(14)   TYPE c,

        feld6(14)   TYPE c,

        feld7(14)   TYPE c,

      END   OF varueb1.

DATA: BEGIN OF varueb2,

        feld1(40)   TYPE c,

        feld2(14)   TYPE c,

        feld3(14)   TYPE c,

        feld4(14)   TYPE c,

        feld5(14)   TYPE c,

        feld6(14)   TYPE c,

        feld7(14)   TYPE c,

      END   OF varueb2.

DATA: varueb3(132),

      varueb4(132),

      varueb5(132),

      vartxt1(40),

      vartxt(40)  TYPE c.

*---------------------------------------------------------------------*

*---- Variable für Ausgabe der Sonderumsätze--------------------------*

*---------------------------------------------------------------------*

DATA: shbbez LIKE t074t-ltext.

DATA: asums  TYPE p.                                        "

*---------------------------------------------------------------------*

*---- Interne Tabelle für Bezeichnungen der SHBKZ---------------------*

*---------------------------------------------------------------------*

DATA: BEGIN OF bezshb OCCURS 10,

        shbkz LIKE t074t-shbkz,

        ltext LIKE t074t-ltext,

      END OF bezshb.

*---------------------------------------------------------------------*

*---- Interne Tabelle für Zwischenspeicherung ------------------------*

*---------------------------------------------------------------------*

DATA: BEGIN OF blkey,

        bukrs LIKE bsik-bukrs,

        belnr LIKE bsik-belnr,

        gjahr LIKE bsik-gjahr,

        buzei LIKE bsik-buzei,

        PRCTR LIKE BSIK-PRCTR,

      END   OF blkey.

DATA: BEGIN OF rtage,

        ntage LIKE ntage,

        stage LIKE stage,

        ztage LIKE ztage,

        utage LIKE utage,

     END   OF rtage.

DATA: BEGIN OF hbsik OCCURS 10.

        INCLUDE STRUCTURE bsik.

        INCLUDE STRUCTURE bsega.

        INCLUDE STRUCTURE rtage.

DATA: END   OF hbsik.

DATA : BEGIN OF HBSIK1 OCCURS 10.

         INCLUDE STRUCTURE BSIK.

         INCLUDE STRUCTURE BSEGA.

         INCLUDE STRUCTURE RTAGE.

DATA : END OF HBSIK1.

DATA: BEGIN OF refbl OCCURS 10.

        INCLUDE STRUCTURE blkey.

        INCLUDE STRUCTURE rtage.

DATA: END   OF refbl.

DATA: BEGIN OF hlfb1 OCCURS 10.

        INCLUDE STRUCTURE lfb1.

DATA: END   OF hlfb1.

DATA: BEGIN OF ht001 OCCURS 10.

        INCLUDE STRUCTURE t001.

DATA: END   OF ht001.

*---Saldo der Überfälligen Posten in Hauswährung --------------------*

*ATA: UEBSALD    LIKE RFSDO-DOPRUEBS.      "Saldo überfällige Posten

DATA: uebsaldo(8) TYPE p.              "Saldo überfällige Posten

*---------------------------------------------------------------------*

*---- Interne Tabelle für Ausgabe der Obligos ------------------------*

*---------------------------------------------------------------------*

DATA: BEGIN OF aobligo OCCURS 12,

        obart TYPE c,             "Flag für Obligoart 1 = Kontokorrent

                                       "                   2 = SHBKZ

                                  "                   3 = sonstige SHB

        shbkz LIKE t074t-shbkz,        "SHB-Kennzeichen

        ltext LIKE t074t-ltext,        "Bezeichnung

        oblig TYPE p,                  "Obligobetrag

      END OF aobligo.

*---------------------------------------------------------------------*

*---- Declarationen für Accessibility /ALV GRID ----------------------*

*---------------------------------------------------------------------*

DATA: acc_mode TYPE c.

DATA: uebtext(22) TYPE c.

DATA: uektext(15)  TYPE c.

DATA: tittext(100) TYPE c.

DATA: dattext(10) TYPE c.

DATA: BEGIN OF rtab_alv OCCURS 30,

*       SORTK(1)   TYPE C,             "0 = Summe Gesber

*                                      "1 = Summe aller Gesber

*                                      "2 = Umsatzdaten

        bukrs LIKE bsid-bukrs,

        lifnr LIKE lfa1-lifnr,

        busab LIKE lfb1-busab,

        sortl LIKE lfa1-sortl,

        land1 LIKE lfa1-land1,

        gsber LIKE bsik-gsber,

        waers LIKE bsik-waers,

*       hwaer like rf140-hwaer,

        raart LIKE rf140-raart,        "Rasterart

        shkzg LIKE bsik-shkzg,

*       XGUTS TYPE C,                  "Gutschrift

        kumum LIKE rf140-kumumhw,      "Umsatz

        anzah LIKE rf140-anzbthw,      "Anzahlungen

        opsum LIKE rf140-gsaldd,       "Offene Posten Summe

        rast1 LIKE rf140-rast1,        "Rasterfeld 1

        rast2 LIKE rf140-rast2,        "Rasterfeld 2

        rast3 LIKE rf140-rast3,        "Rasterfeld 3

        rast4 LIKE rf140-rast4,        "Rasterfeld 4

        rast5 LIKE rf140-rast5,        "Rasterfeld 5

        rast6 LIKE rf140-rast6,        "Rasterfeld 6

        adrs1 like adrs-line0,                                 "1253468

        adrs2 like adrs-line0,                                 "1253468

        adrs3 like adrs-line0,                                 "1253468

        adrs4 like adrs-line0,                                 "1253468

      END   OF rtab_alv.

DATA: gd_no_anred type boolean.                                "1320031

*"General Data

TYPE-POOLS: slis.

*DATA: BEGIN OF GT_OUTTAB OCCURS 0.

*        INCLUDE STRUCTURE rtab_alv.

*DATA: END OF GT_OUTTAB.

DATA: gs_layout TYPE slis_layout_alv,

*      G_EXIT_CAUSED_BY_CALLER,

*      GS_EXIT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER,

      g_repid LIKE sy-repid,

      g_grid_title TYPE  lvc_title.

*"Callback

*Data: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

*      G_STATUS_SET   TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',

DATA: g_user_command TYPE slis_formname VALUE 'USER_COMMAND'.

*      G_TOP_OF_PAGE  TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',

*      G_TOP_OF_LIST  TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST',

*      G_END_OF_LIST  TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'.

*"Variants

DATA: gs_variant LIKE disvariant,

      g_save.

* Global structure of list

* fieldcatalog

DATA:   ls_fieldcat TYPE slis_fieldcat_alv.

DATA:   gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

* sort

*DATA:   GT_SORT     TYPE SLIS_T_SORTINFO_ALV.

* events

*DATA:   GT_EVENTS   TYPE SLIS_T_EVENT.

*----- Structure for specific color settings ---------------------------

*DATA:   COL_TAB_T TYPE SLIS_T_SPECIALCOL_ALV,

*        COL_TAB   TYPE SLIS_SPECIALCOL_ALV.

DATA:   g_tabname TYPE slis_tabname VALUE 'RTAB_ALV'.

* print

*DATA:   GS_PRINT    TYPE SLIS_PRINT_ALV.

" Declaration for interval : selection screen : to accomodate 4 digits

DATA : intv1(4) TYPE n,       "    '000'.

       intv2(4) TYPE n,       "    '020'.

       intv3(4) TYPE n,       "    '040'.

       intv4(4) TYPE n,       "    '080'.

       intv5(4) TYPE n .      "    '100'.

*---------------------------------------------------------------------*

*---- FIELD-GROUPS                            ------------------------*

*---------------------------------------------------------------------*

FIELD-GROUPS:

          header,

          stammdaten,

          op-raster,

          einzelposten.

INSERT

  lfb1-bukrs                           " Buchungskreis

  lfb1-busab                           " Sachbearbeiter

  uebsaldo                             " Saldo überfällige Posten

  lfa1-lifnr                           " Kontonummer

  satzart                              " Satzart

  rtab-sortk                           " Sortkz fuer Tabelle RTAB

                                       " '0' = normale Eintraege

                                       " '1' = Summeneintraege

  gb                                   " Geschaeftsbereich

                                       " - GB-GSBER

                                       " - GB-WAERS

  rasteruu         " Kennzeichen fuer Detailposten bzw Raster

  rtab-xguts       " Flag für Forderungen und Gutschrift

*---------------- ab hier nur fuer Einzelposten ----------------------*

  tage                                 " Rastertage  fuer Detailposten

  bsik-umskz                           " Umsatzkennzeichen

  bsik-blart                           " Belegart

* bsik-ZUONR         " Zuordnungsnummer

  bsik-belnr                           " Belegnummer

  bsik-buzei                           " Belegzeile

  BSIK-PRCTR

INTO header.

INSERT

* Addressdaten

  adrs-line0                           " 1. Zeile Adressenaufbereitung

  adrs-line1                           " 2. "     "

  adrs-line2                           " 3. "     "

  adrs-line3                           " 4. "     "

  adrs-line4                           " 5. "     "

  adrs-line5                           " 6. "     "

  adrs-line6                           " 7. "     "

* ADRS-LINE7         " 8. "     "

* ADRS-LINE8         " 9. "     "

* ADRS-LINE9         " 10."     "

* Umsatzdaten

  c-kumum                              " Umsatz

  c-babzg                              " Berechtigt. Abzuege

  c-uabzg                              " Unberechtigt. Abzuege

  c-kzins                              " Zinszahlungen

  c-kumag                              " Kum. Jahresausgleich

* Warenkreditversicherung

* lfB1-VRSNR                           " Vertragsnummer

* lfB1-VRBKZ                           " Institutsnummer

* lfB1-VLIBB                           " Versicherungssumme

* lfB1-VERDT                           " Gültig bis

* lfB1-VRSZL                           " Ziel-Monate

* lfB1-VRSPR                           " Selbstbeiteiligung in %

* Obligos

  c-saldo                              " Saldo ohne SHB-Vorgänge

* C-WEXOB          " Wechselobligo

* C-ANZOB          " Anzahlungsobligo

* C-ZANFB          " Zahlungsanforderungen

  c-umkz1                                                   "SHBKZ 1

  c-sums1                              "Sonderumsatz 1

  c-umkz2                                                   "SHBKZ 2

  c-sums2                              "Sonderumsatz 2

  c-umkz3                                                   "SHBKZ 3

  c-sums3                              "Sonderumsatz 3

  c-umkz4                                                   "SHBKZ 4

  c-sums4                              "Sonderumsatz 4

  c-umkz5                                                   "SHBKZ 5

  c-sums5                              "Sonderumsatz 5

  c-umkz6                                                   "SHBKZ 6

  c-sums6                              "Sonderumsatz 6

  c-umkz7                                                   "SHBKZ 7

  c-sums7                              "Sonderumsatz 7

  c-umkz8                                                   "SHBKZ 8

  c-sums8                              "Sonderumsatz 8

  c-umkz9                                                   "SHBKZ 9

  c-sums9                              "Sonderumsatz 9

  c-umkz10                                                  "SHBKZ 10

  c-sums10                             "Sonderumsatz 10

  c-sonob                              " Sonst. Obligen

* Limits

* lfKA-KLIMG       "Gesamtkreditlimit

* lfKA-DLAUS       "Datum letzte Auskunft

* KREDK            "Kreditkontrollbereichsdaten

  c-agobli                             " Absolutes Gesamtobligo

* C-KREUEB         " Kreditueberschr.

* C-RGOBLI         " Relatives Gesamtobligo

* Zahlungdaten

  c-zvtyp                              "Flag Skonto oder Nettozahler

  c-zvper                              "letze Zahlungsperiode

  c-zvverzug                           "Durchschittliche Verzugstage

  lfb1-zterm                           "Zahlungsbedingung

  lfb1-xverr                           "Zahlungsverrechnung

INTO stammdaten.

INSERT

  rtab-raart                           "Rasterart

  rtab-kumum                           "Umsatz

  rtab-anzah                           "Anzahlungen

  rtab-opsum                           "Offene Posten Summe

  rtab-rast1                           "Rasterfeld 1

  rtab-rast2                           "Rasterfeld 2

  rtab-rast3                           "Rasterfeld 3

  rtab-rast4                           "Rasterfeld 4

  rtab-rast5                           "Rasterfeld 5

  rtab-rast6                           "Rasterfeld 6

  rtab-lifnr

  rtab-name1                              "added to get vendor name

  rtab-sortl

  rtab-land1

  rtab-akont                          " Reconcillation Account

  RTAB-ORT01                          " City : 07.01.2016

  RTAB-BEZEI                          " Region Description : 08.01.2016

  RTAB-REGIO

  RTAB-PRCTR                          " Profit Center :

INTO op-raster.

INSERT

  bsik-budat                           " Buchungsdatum

  bsik-bldat                           " Belegdatum

  bsik-cpudt                           " CPU-Datum

* BKPF-USNAM         " User-ID

  bsik-waers                           " Wahrungsschluessel

  BSIK-PRCTR                           " Profit Center

  bsega-netdt                          " Nettofaelligkeitsdatum

* FAEDE-NETDT        " Nettofaelligkeitsdatum

  bsik-zfbdt                           " Zahlungsfristen-Basisdatum

  bsik-bschl                           " Buchungsschluessel

  bsik-zlsch                           " Zahlungsschluessel

  bsik-manst                           " Mahnstufe

  shbetrag                             " Hauswaehrungsbetrag

  bsega-dmshb                          " Hauswaehrungsbetrag

  bsega-wrshb                          " Fremwaehrungsbetrag

INTO einzelposten.

begin_of_block 1.       " Block 1

*ELECT-OPTIONS:

*      GESBER   FOR bsik-GSBER.

SELECT-OPTIONS : P_PRCTR FOR BSIK-PRCTR NO INTERVALS.    " 04.07.2016

SELECT-OPTIONS:

       uebesal2 FOR rfsdo-doprueb2.    "Summe überfällige Posten

PARAMETERS:

       xnurford  LIKE rfpdo1-doprxnfo.

SELECT-OPTIONS:

       vertage  FOR rfpdo1-doprvztg.

PARAMETERS:

       monat    LIKE rfpdo-doprbmon.

SELECT-OPTIONS:

       kksaldo2 FOR rfsdo-koprsal2,    "Saldovortrag

       agoblig2 FOR rfsdo-koprago2.    "Absolutes Obligo

*      RGOBLIGO FOR RFSDO-DOPRRGOB.          "Relatives Obligo

SELECT-OPTIONS:

*      LAND     FOR lfA1-LAND1,

*      KONTENGR FOR lfA1-KTOKD,

*      SACHBEAR FOR lfB1-BUSAB,

       akonts   FOR lfb1-akont,

       akontp   FOR bsik-hkont.

SELECT-OPTIONS:

       budat    FOR bsik-budat,

       bldat    FOR bsik-bldat,

       netdt    FOR bsega-netdt.

PARAMETERS:     n_belege    LIKE rfpdo-bpetnbel

                                   DEFAULT 'X',   "Normale Belege.

                stat_blg    LIKE rfpdo-bpetsbel.  "Statistische Belege

end_of_block 1.

begin_of_block 2.

PARAMETERS:

       sortart  LIKE rfpdo1-koprsoar DEFAULT '1',

       verdicht LIKE rfpdo2-doprver2 DEFAULT '0',

       rastverd LIKE rfpdo1-koprrast DEFAULT '0',

       konzvers LIKE rfpdo-dopokonz,   "Konzernversion

       xbukrdat LIKE rfpdo3-allgbukd DEFAULT 0, "Bukr.daten

       kausgabe LIKE rfpdo3-allgkaor.

*      SELECTION-SCREEN BEGIN OF LINE.

*      SELECTION-SCREEN COMMENT 01(30) TEXT-030.

PARAMETERS: rart-net LIKE rfpdo-doprrnet DEFAULT ' ' NO-DISPLAY.

*      SELECTION-SCREEN COMMENT 33(01) TEXT-028.

PARAMETERS: rart-skt LIKE rfpdo-doprrskt DEFAULT ' ' NO-DISPLAY.

*      SELECTION-SCREEN COMMENT 35(01) TEXT-028.

PARAMETERS: rart-zhl LIKE rfpdo-doprrzhl DEFAULT ' ' NO-DISPLAY.

*      SELECTION-SCREEN COMMENT 37(01) TEXT-028.

PARAMETERS: rart-ueb LIKE rfpdo-doprrueb DEFAULT 'X' NO-DISPLAY.

*      SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

*SELECTION-SCREEN COMMENT 01(30) text-026.                      "N740800

SELECTION-SCREEN COMMENT 01(30) TEXT-026 for field RASTBIS1.    "N740800

SELECTION-SCREEN POSITION pos_low.

PARAMETERS : rastbis1 LIKE intv1 DEFAULT '0000'.

*PARAMETERS: rastbis1 LIKE rfpdo1-allgrogr DEFAULT '000'.

*      SELECTION-SCREEN COMMENT 35(02) TEXT-027.

PARAMETERS : rastbis2 LIKE intv2 DEFAULT '0020'.

*PARAMETERS: rastbis2 LIKE rfpdo1-allgrogr DEFAULT '020'.

*      SELECTION-SCREEN COMMENT 41(02) TEXT-027.

PARAMETERS : rastbis3 LIKE intv3 DEFAULT '0040'.

*PARAMETERS: rastbis3 LIKE rfpdo1-allgrogr DEFAULT '040'.

*      SELECTION-SCREEN COMMENT 47(02) TEXT-027.

PARAMETERS : rastbis4 LIKE intv4 DEFAULT '0080' .

*PARAMETERS: rastbis4 LIKE rfpdo1-allgrogr DEFAULT '080'.

*      SELECTION-SCREEN COMMENT 53(02) TEXT-027.

PARAMETERS :  rastbis5 LIKE intv5 DEFAULT '0100'.

*PARAMETERS: rastbis5 LIKE rfpdo1-allgrogr DEFAULT '100'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

*SELECTION-SCREEN COMMENT 01(30) text-029.                      "N740800

SELECTION-SCREEN COMMENT 01(30) TEXT-029 for field faktor.      "N740800

SELECTION-SCREEN POSITION pos_low.

PARAMETERS:  faktor LIKE rfpdo-doprfakt DEFAULT '0'.

*SELECTION-SCREEN COMMENT 35(1) text-028.                      "N740800

SELECTION-SCREEN COMMENT 35(1) TEXT-028 for field stellen.      "N740800

PARAMETERS:  stellen LIKE rfpdo-doprfakt DEFAULT '0'.

SELECTION-SCREEN END OF LINE.

PARAMETERS: pzuor    LIKE rfpdo2-doprzuor DEFAULT 'X'.

PARAMETERS: xgetausw LIKE rfpdo1-doprxgaw.

PARAMETERS: umsatzkz LIKE rfpdo1-doprshbo. "DEFAULT 'WBSA'.

* ---- Select-Option für überfälligen Saldo

PARAMETERS:

       xhitlist  LIKE rfpdo1-doprhitl.

PARAMETERS:

       title       LIKE rfpdo1-allgline,

       listsep     LIKE rfpdo-allglsep,

       mikfiche    LIKE rfpdo-allgmikf.

PARAMETERS:

       p_lvar    LIKE gs_variant-variant DEFAULT space MODIF ID 508.

end_of_block 2.

AT SELECTION-SCREEN OUTPUT.

  IF acc_mode IS INITIAL.

    LOOP AT SCREEN.

      IF screen-group1 = '508'.

        screen-active    = '0'.

        MODIFY SCREEN.

      ENDIF.

    ENDLOOP.

  ENDIF.

AT SELECTION-SCREEN ON akonts.

*    Konvertierung der Kontonummer

*    -----------------------------

  LOOP AT akonts.

    PERFORM alphaformat(sapfs000)

      USING akonts-low akonts-low.

    PERFORM alphaformat(sapfs000)

      USING akonts-high akonts-high.

    MODIFY akonts.

  ENDLOOP.

AT SELECTION-SCREEN ON akontp.

*    Konvertierung der Kontonummer

*    -----------------------------

  LOOP AT akontp.

    PERFORM alphaformat(sapfs000)

      USING akontp-low akontp-low.

    PERFORM alphaformat(sapfs000)

      USING akontp-high akontp-high.

    MODIFY akontp.

  ENDLOOP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_lvar.

  gs_variant-report  = sy-repid.

  gs_variant-variant = p_lvar.

  PERFORM f4_for_s_lvar   USING gs_variant.

  p_lvar = gs_variant-variant.

AT SELECTION-SCREEN.

*  IF rastbis1 GT '998'

*  OR rastbis2 GT '998'

*  OR rastbis3 GT '998'

*  OR rastbis4 GT '998'

*  OR rastbis5 GT '998'.

*

" Added to accomodate 4 digits in interval : selection screen

  IF rastbis1 GT '9998'

  OR rastbis2 GT '9998'

  OR rastbis3 GT '9998'

  OR rastbis4 GT '9998'

  OR rastbis5 GT '9998'.

*   SET CURSOR FIELD RASTBIS5.

    MESSAGE e381.

  ENDIF.

  IF NOT rastbis5 IS INITIAL.

    IF  rastbis5 GT rastbis4

    AND rastbis4 GT rastbis3

    AND rastbis3 GT rastbis2

    AND rastbis2 GT rastbis1.

    ELSE.

      MESSAGE e379.

    ENDIF.

  ELSE.

    IF NOT rastbis4 IS INITIAL.

      IF  rastbis4 GT rastbis3

      AND rastbis3 GT rastbis2

      AND rastbis2 GT rastbis1.

      ELSE.

        MESSAGE e379.

      ENDIF.

    ELSE.

      IF NOT rastbis3 IS INITIAL.

        IF  rastbis3 GT rastbis2

        AND rastbis2 GT rastbis1.

        ELSE.

          MESSAGE e379.

        ENDIF.

      ELSE.

        IF NOT rastbis2 IS INITIAL.

          IF  rastbis2 GT rastbis1.

          ELSE.

            MESSAGE e379.

          ENDIF.

        ELSE.

*         nichts zu tun

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

  CLEAR bezshb.

  REFRESH bezshb.

  CONDENSE umsatzkz NO-GAPS.

  IF NOT umsatzkz(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT umsatzkz+1(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz+1(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT umsatzkz+2(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz+2(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT umsatzkz+3(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz+3(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT umsatzkz+4(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz+4(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT umsatzkz+5(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz+5(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT umsatzkz+6(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz+6(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT umsatzkz+7(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz+7(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT umsatzkz+8(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz+8(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT umsatzkz+9(1) IS INITIAL.

    CLEAR char1.

    MOVE umsatzkz+9(1) TO char1.

    PERFORM shbkz_pruefen.

  ENDIF.

  IF NOT acc_mode IS INITIAL.

    verdicht = '6'.

  ENDIF.

  IF verdicht = '6'.

    sortart  = '1'.

    rastverd = '1'.

    xbukrdat = '2'.

  ENDIF.

  CLEAR g_ex_print_sel.                                        "1021583

  IF SY-UCOMM = 'PRIN'.                                        "1021583

    g_ex_print_sel = 'X'.                                      "1021583

  ENDIF.                                                       "1021583

*

* SELECT * FROM T001.

*   MOVE-CORRESPONDING T001 TO KKBERGES.

*   APPEND KKBERGES.

*   IF T001-BUKRS IN DD_BUKRS.

*     MOVE T001-KKBER TO KKBERSEL-KKBER.

*     COLLECT KKBERSEL.

*   ENDIF.

* ENDSELECT.

* LOOP AT KKBERSEL.

*   LOOP AT KKBERGES

*     WHERE KKBER = KKBERSEL-KKBER.

*     IF KKBERGES-BUKRS IN DD_BUKRS.

*     ELSE.

**      message Aussagkraft kreditüberschreitung usw. gefährdet.

*     ENDIF.

*   ENDLOOP.

* ENDLOOP.

INITIALIZATION.

  get_frame_title: 1, 2.

  monat = '16'.

  CALL FUNCTION 'GET_ACCESSIBILITY_MODE'

    IMPORTING

      accessibility     = acc_mode

    EXCEPTIONS

      its_not_available = 1

      OTHERS            = 2.

  IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

  IF NOT acc_mode IS INITIAL.

    g_repid = sy-repid.

*   PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].

*   PERFORM SORT_INIT USING GT_SORT[].

*   PERFORM EVENTS_INIT USING GT_EVENTS[].

*   PERFORM PRINT_INIT.

  ENDIF.

START-OF-SELECTION.

CLEAR P_PRCTR.

  COMMIT WORK.

*- Fuellen zusätzlicher DB Sel-Opts

*  COPY: GESBER TO DD_GSBER, LAND TO DD_LAND1, SACHBEAR TO DD_BUSAB,

*        AKONTS TO DD_AKONT, AKONTP TO DD_HKONT.

  copy: akonts to kd_akont, akontp to kd_hkont.

  SELECT * FROM t001 APPENDING TABLE ht001

    WHERE bukrs IN kd_bukrs.

*- Standardseitenkopf fuellen ---------------------------------------*

  MOVE '0'      TO bhdgd-inifl.

  MOVE sy-linsz TO bhdgd-lines.

  MOVE sy-uname TO bhdgd-uname.

  MOVE sy-repid TO bhdgd-repid.

  MOVE sy-title TO bhdgd-line1.

  MOVE title    TO bhdgd-line2.

  MOVE '    '   TO bhdgd-bukrs.

  MOVE mikfiche TO bhdgd-miffl.

  MOVE listsep  TO bhdgd-separ.

  MOVE 'BUKRS'  TO bhdgd-domai.

*- OP-Raster und Ueberschriften aufbereiten -------------------------*

  PERFORM raster_aufbau.

  PERFORM shb_kennzeichen.

  IF n_belege <> space.

    n_belege = 'X'.

    b0sg-xstan = 'X'.

  ELSE.

    b0sg-xstan = ' '.

  ENDIF.

  IF stat_blg <> space.

    stat_blg = 'X'.

    b0sg-xstas = 'X'.

  ENDIF.

  IF monat IS INITIAL

  OR monat GT '16'.

    monat = '16'.

  ENDIF.

  bmonat-low    = '1'.

  bmonat-high   = monat.

  bmonat-option = 'BT'.

  bmonat-sign   = 'I'.

  APPEND bmonat.

*GET T005U .                                  "Taxes: Region Key: Texts  :

* GET BSEG .

GET lfa1.

*HECK LAND.

*HECK KONTENGR.

  CLEAR adrs.

  MOVE-CORRESPONDING lfa1 TO adrs.

  if not acc_mode IS INITIAL.                                  "1320031

    clear gd_no_anred.                                         "1320031

    if adrs-anred IS initial.                                  "1320031

      gd_no_anred = 'X'.                                       "1320031

    endif.                                                     "1320031

    clear adrs-name2.                                          "1320031

    clear adrs-name3.                                          "1320031

    clear adrs-name4.                                          "1320031

    clear adrs-pfach.                                          "1320031

    clear adrs-pstl2.                                          "1320031

    clear adrs-pfort.                                          "1320031

  endif.

  MOVE zeilenanzahl TO adrs-anzzl.

  CALL FUNCTION 'ADDRESS_INTO_PRINTFORM'

    EXPORTING

      adrswa_in  = adrs

    IMPORTING

      adrswa_out = adrs.

  if not acc_mode IS INITIAL.                                  "1320031

    if gd_no_anred = 'X'.                                      "1320031

      adrs-line3 = adrs-line2.                                 "1320031

      adrs-line2 = adrs-line1.                                 "1320031

      adrs-line1 = adrs-line0.                                 "1320031

      clear adrs-line0.                                        "1320031

    endif.                                                     "1320031

  endif.                                                       "1320031

  IF NOT konzvers IS INITIAL.

    CLEAR checksaldo.

    CLEAR checksald1.

    CLEAR checksald2.

    CLEAR checksald3.

    CLEAR checksald4.

    CLEAR checkagobl.

    CLEAR waers2.

    CLEAR wflag2.

    CLEAR   hbsik.

    REFRESH hbsik.

    CLEAR   refbl.

    REFRESH refbl.

    sel-stamm  = 'N'.

    sel-postn  = 'N'.

    sel-post2  = 'N'.

    CLEAR   rtab.

    REFRESH rtab.

    CLEAR   hlfb1.

    REFRESH hlfb1.

    CLEAR   c2.

    REFRESH c2.

    CLEAR   c3.

  ENDIF.

GET lfb1.

* Lfd. Geschaeftsjahr gemaess Stichtag besorgen ---------------------*

* CHECK SACHBEAR.

  CHECK akonts.

  IF konzvers IS INITIAL.

    CLEAR checksaldo.

    CLEAR checksald1.

    CLEAR checksald2.

    CLEAR checksald3.

    CLEAR checksald4.

    CLEAR checkagobl.

* CLEAR KREDK.

    CLEAR hbsik.

    REFRESH hbsik.

    CLEAR refbl.

    REFRESH refbl.

    sel-stamm = 'N'.

    sel-postn = 'N'.

    CLEAR   rtab.

    REFRESH rtab.

  ENDIF.

  CLEAR c.

  CLEAR h-saldo.

  CLEAR h-sald2.

* CLEAR: ZVVERZUG,ZVPER,ZVTYP.

  CLEAR: gb,

         rasteruu,

         tage.

* laufendes Geschäftsjahr ermitteln

* ---------------------------------

  CALL FUNCTION 'GET_CURRENT_YEAR'

    EXPORTING

      bukrs = lfb1-bukrs

      date  = kd_stida

    IMPORTING

      curry = curry.

* SELECT SINGLE * FROM T001 WHERE BUKRS EQ lfB1-BUKRS.

  READ TABLE ht001 WITH KEY bukrs = lfb1-bukrs.

  t001 = ht001.

  IF  NOT waers2 IS INITIAL

  AND waers2 NE t001-waers.

    wflag2 = '1'.

  ENDIF.

  waers2 = t001-waers.

* clear rfsdo-dopruebs.

GET lfc1.

  CHECK: lfc1-gjahr = curry.

  PERFORM cfaktor.

* CHECK CHECKSALD1 IN BERABZU2.

* CHECK CHECKSALD2 IN UNBABZU2.

* CHECK CHECKSALD3 IN ZINSE2.

* CHECK CHECKSALD4 IN JHRAUSG2.

* aktuellen Saldo ermitteln (fuer CHECK auf Saldo) ------------------*

  PERFORM saldo_aktuell.

  PERFORM kum_werte.

* CHECK CHECKSALDO IN KKSALDO2.

  sel-stamm = 'J'.

GET lfc3.

  CHECK lfc3-gjahr = curry.

*  CHECK CHECKSALD1 IN BERABZU2.

*  CHECK CHECKSALD2 IN UNBABZU2.

*  CHECK CHECKSALD3 IN ZINSE2.

*  CHECK CHECKSALD4 IN JHRAUSG2.

*  CHECK CHECKSALDO IN KKSALDO2.

*  Errechnen Sonderumsatz-Salden, Gesamtsaldo ------------------------*

*  Trend, Umsatz pro Gesch.Bereich -----------------------------------*

  PERFORM sonder_umsaetze.

*  CHECK: C-AGOBLI IN AGOBLIG0,

*  check: C-RGOBLI IN RGOBLIGO.

  sel-stamm = 'J'.

GET bsik.

  IF konzvers IS INITIAL.

*   CHECK CHECKSALD1 IN BERABZU2.

*   CHECK CHECKSALD2 IN UNBABZU2.

*   CHECK CHECKSALD3 IN ZINSE2.

*   CHECK CHECKSALD4 IN JHRAUSG2.

    CHECK checksaldo IN kksaldo2.

    CHECK: checkagobl IN agoblig2.

    CHECK: BSIK-PRCTR IN P_PRCTR OR BSIK-PRCTR = SPACE.

  ENDIF.

*         C-RGOBLI IN RGOBLIGO.

* CHECK GESBER.

  CHECK akontp.

  CASE bsik-bstat.

    WHEN ' '.

      CHECK n_belege EQ 'X'.

    WHEN 'S'.

      CHECK stat_blg EQ 'X'.

    WHEN OTHERS.

      EXIT.

  ENDCASE.

* CHECK SEL-STAMM = 'J'.

* Einzelposten werden nur dann weiterverarbeitet, wenn ueberhaupt ---*

* ein OP-Raster gewuenscht wird. ------------------------------------*

  CHECK rastverd < '2'.

* Bei SORTART = '2' werden nur Belege verarbeitet, welche in Fremd- -*

* waehrung gebucht sind ---------------------------------------------*

  IF sortart  = '2'.

    CHECK bsik-waers NE t001-waers.

  ENDIF.

*ET BKPF.

* CHECK SEL-STAMM = 'J'.

  CHECK bsik-budat LE kd_stida.

*ET BSEG.

* CHECK SEL-STAMM = 'J'.

  CLEAR faede.

  MOVE-CORRESPONDING bsik TO faede.

  faede-koart = 'K'.

  CALL FUNCTION 'DETERMINE_DUE_DATE'

    EXPORTING

      i_faede = faede

    IMPORTING

      e_faede = faede

    EXCEPTIONS

      OTHERS  = 1.

  bsega-netdt = faede-netdt.

* TAGE gemaess Rasterart ermitteln -----------------------------------*

* Netto-Faelligkeit --------------------------------------------------*

* NTAGE = BSEGA-NETDT - DD_STIDA.

  ntage = faede-netdt - kd_stida.

* Ueber-Faelligkeit --------------------------------------------------*

* UTAGE = DD_STIDA - BSEGA-NETDT.

  utage = kd_stida - faede-netdt.

* IF NOT bsik-ZFBDT IS INITIAL.

* Skonto1-Faelligkeit ------------------------------------------------*

* STAGE = bsik-ZFBDT + bsik-ZBD1T - DD_STIDA.

* Voraussichtlicher Zahlungseingang-----------------------------------*

* ZTAGE = bsik-ZFBDT + bsik-ZBD1T - DD_STIDA + ZVVERZUG.

* ELSE.

* Skonto1-Faelligkeit ------------------------------------------------*

* STAGE = bsik-BLDAT + bsik-ZBD1T - DD_STIDA.

* Voraussichtlicher Zahlungseingang-----------------------------------*

* ZTAGE = bsik-BLDAT + bsik-ZBD1T - DD_STIDA + ZVVERZUG.

* ENDIF.

* Skonto1-Faelligkeit ------------------------------------------------*

  stage = faede-sk1dt - kd_stida.

* Voraussichtlicher Zahlungseingang-----------------------------------*

* ZTAGE = FAEDE-SK1DT - kD_STIDA + ZVVERZUG.

  IF NOT pzuor    IS INITIAL

  OR NOT konzvers IS INITIAL.

    PERFORM einzelposten_save.

    PERFORM HBSIK_SCREEN_FILTER.

  ELSE.

* die Einzelposten werden nach den Tagen der ersten Rasterart --------*

* sortiert -----------------------------------------------------------*

    IF rart-net = 'X'.

      tage = ntage.

    ELSE.

      IF rart-skt = 'X'.

        tage = stage.

      ELSE.

        IF rart-zhl = 'X'.

          tage = ztage.

        ELSE.

          IF rart-ueb = 'X'.

            tage = utage.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

    CASE bsik-umsks.

*--------------- Anzahlungen sammeln ---------------------------------*

*--------------- auch wenn nicht von aussen abgegrenzt ---------------*

      WHEN 'A'.

        CLEAR rtab.

        IF bsik-bstat NE 'S'.

          MOVE: bsik-bukrs TO rtab-bukrs,

                '0'      TO rtab-sortk,

                bsik-gsber TO rtab-gsber,

                rart     TO rtab-raart.

          IF sortart = '2'.

            MOVE bsik-waers TO rtab-waers.

            MOVE bsega-wrshb TO rtab-anzah.

          ELSE.

            IF NOT konzvers IS INITIAL.

              MOVE t001-waers TO rtab-waers.

              MOVE bsega-dmshb TO rtab-anzah.

            ELSE.

              MOVE bsega-dmshb TO rtab-anzah.

            ENDIF.

          ENDIF.

          CLEAR rtab-xguts.

          IF NOT xgetausw IS INITIAL.

            IF bsega-dmshb LT 0.

              rtab-xguts = 'X'.

            ENDIF.

          ENDIF.

          MOVE:

          lfa1-lifnr TO rtab-lifnr,

          lfa1-sortl TO rtab-sortl,

          lfa1-land1 TO rtab-land1,

          lfa1-name1 to rtab-name1,         "added to get vendor name

          LFB1-AKONT TO RTAB-AKONT ,

          LFA1-ORT01 TO RTAB-ORT01,         " cITY : 07.01.2016

          LFA1-REGIO TO RTAB-REGIO ,        " Region : 11.01.2016

          T005U-BEZEI TO RTAB-BEZEI ,       " Region

          BSIK-PRCTR TO RTAB-PRCTR .         "

          COLLECT rtab.

*--------------- Summieren ueber alle Geschaeftsbereiche -------------*

          MOVE: '1'      TO rtab-sortk,

                '**'     TO rtab-gsber.

          COLLECT rtab.

        ENDIF.

    ENDCASE.

    CHECK: budat,

           bldat,

           netdt.

    sel-postn = 'J'.

    IF sortart = '1'.

      IF konzvers IS INITIAL .

        PERFORM posten_rastern USING space.

        MOVE space    TO gb-waers.

      ELSE.

        PERFORM posten_rastern USING t001-waers.

        MOVE t001-waers TO gb-waers.

      ENDIF.

    ELSE.

      PERFORM posten_rastern USING bsik-waers.

      MOVE bsik-waers TO gb-waers.

    ENDIF.

*----- Saldoberechnung Überfälligkeitsprüfung

    IF  utage GT '0'

    AND utage IN vertage.

      IF NOT xnurford IS INITIAL.

        IF bsega-dmshb GT '0'.         "Falls keine Habenpositionen

          h-sald2        = h-sald2        + bsega-dmshb.

        ENDIF.                         "bei der berechnung berück-

      ELSE.                            "sichtigt werden sollen

        h-sald2        = h-sald2        + bsega-dmshb.

      ENDIF.

    ENDIF.                             "hier die Sterne entfernen

*---- nur bei Verdichtungsstufe '0' werden EINZELPOSTEN extrahiert --*

    IF verdicht = '0'.

*       MOVE   '3'    TO SATZART.

*       MOVE bsik-GSBER TO GB-GSBER.

*       MOVE BSEGA-DMSHB TO SHBETRAG.

*------Der Fremdwährungsbetrag soll nur Übernommen werden, wenn sich

*----- die WÄHRUNG VON DER HAUSWÄHRUNG UNTERSCHEIDET.

*       IF bsik-WAERS EQ T001-WAERS.

*         MOVE SPACE TO BSEGA-WRSHB.

*       ENDIF.

*       EXTRACT EINZELPOSTEN.

      IF  utage GT '0'

      AND utage IN vertage.

        PERFORM einzelposten_sichern.

      ENDIF.

    ENDIF.

  ENDIF.

GET lfb1 LATE.

  IF konzvers IS INITIAL.

*   CHECK CHECKSALD1 IN BERABZU2.

*   CHECK CHECKSALD2 IN UNBABZU2.

*   CHECK CHECKSALD3 IN ZINSE2.

*   CHECK CHECKSALD4 IN JHRAUSG2.

    CHECK checksaldo IN kksaldo2.

    CHECK: checkagobl IN agoblig2.

* CHECK  SEL-STAMM = 'J'.

    IF NOT pzuor IS INITIAL.

      PERFORM einzelposten_link.

      PERFORM einzelposten_proc.

    ENDIF.

    CLEAR uebsaldo.

* Bei SORTART = '2' werden nur dann Stammsatzdaten ausgegeben, wenn -*

* auch Einzelposten gerastert wurden. -------------------------------*

    IF sortart = '2'.

      CHECK sel-postn = 'J'.

    ENDIF.

    IF NOT kausgabe IS INITIAL.

      CHECK sel-postn = 'J'.

    ENDIF.

*----- Modifikation für Überfälligkeitsprüfung

    PERFORM cfaktor.

    IF cfakt NE 0.

      checksaldo = h-sald2        / cfakt.

    ELSE.

      checksaldo = h-sald2.

    ENDIF.

    CHECK checksaldo     IN uebesal2.

    IF NOT xhitlist IS INITIAL.

*----- Multiplikation um richtige Sortierung zu erreichen

      uebsaldo = checksaldo * -1.

    ENDIF.

*---- nur bei Verdichtungsstufe '0' werden EINZELPOSTEN extrahiert --*

    IF verdicht = '0'.

      PERFORM einzelposten_extract.

    ENDIF.

    CLEAR: gb,

           rasteruu,

           tage.

    MOVE '1' TO satzart.

* Stammdaten extrahieren ---------------------------------------------*

* Kreditueberschreitung ----------------------------------------------*

* C-KREUEB = C-AGOBLI - KREDK-KLIMK.

* Kreditlimit noch nicht überschritten?------------------------------*

* IF C-KREUEB < 0.

*    C-KREUEB = 0.

* ENDIF.

* Gesamt-Obligo (relativ) --------------------------------------------*

* IF KREDK-KLIMK > 0.

*    C-RGOBLI = ( C-AGOBLI * 100 ) / KREDK-KLIMK.

* ELSE.

*    C-RGOBLI = 0.

* ENDIF.

*  CHECK: C-AGOBLI IN AGOBLIG2.

*         C-RGOBLI IN RGOBLIGO.

* CHECK: CHECKAGOBL IN AGOBLIG2.

    CLEAR bsik.

    EXTRACT stammdaten.

* CLEAR C.

* CLEAR KREDK.

* CLEAR: ZVVERZUG,ZVPER,ZVTYP.

* OP-Raster extrahieren ----------------------------------------------*

    SORT rtab ASCENDING.

    LOOP AT rtab.

      MOVE:     '2'    TO satzart,

            rtab-gsber TO gb-gsber,

            rtab-waers TO gb-waers,

            rtab-raart TO rasteruu.

      EXTRACT op-raster.

    ENDLOOP.

  ELSE.

    hlfb1 = lfb1.

    APPEND hlfb1.

    MOVE-CORRESPONDING c TO c2.

    c2-bukrs = lfb1-bukrs.

    APPEND c2.

  ENDIF.

*EJECT

GET lfa1 LATE.

  IF NOT konzvers IS INITIAL.

    CLEAR h-sald2.

    IF wflag2 IS INITIAL.

*     CHECK CHECKSALD1 IN BERABZU2.

*     CHECK CHECKSALD2 IN UNBABZU2.

*     CHECK CHECKSALD3 IN ZINSE2.

*     CHECK CHECKSALD4 IN JHRAUSG2.

      CHECK checksaldo IN kksaldo2.

      CHECK: checkagobl IN agoblig2.

    ENDIF.

* CHECK  SEL-STAMM = 'J'.

    IF NOT pzuor IS INITIAL.

      PERFORM einzelposten_link.

    ENDIF.

    CLEAR uebsaldo.

    CLEAR sel-post2.

    LOOP AT hlfb1.

      lfb1 = hlfb1.

      LOOP AT c2

        WHERE bukrs = lfb1-bukrs.

        CLEAR c.

        MOVE-CORRESPONDING c2 TO c.

        EXIT.

      ENDLOOP.

      PERFORM summ_c3.

      CLEAR sel-postn.

      PERFORM einzelposten_proc.

* Bei SORTART = '2' werden nur dann Stammsatzdaten ausgegeben, wenn -*

* auch Einzelposten gerastert wurden. -------------------------------*

      IF sortart = '2'.

        IF sel-postn NE 'J'.

          DELETE hlfb1.

        ENDIF.

*       CHECK SEL-POSTN = 'J'.

      ENDIF.

      IF NOT kausgabe IS INITIAL.

        IF sel-postn NE 'J'.

          DELETE hlfb1.

        ENDIF.

*       CHECK SEL-POSTN = 'J'.

      ENDIF.

      IF sel-postn =  'J'.

        sel-post2 = 'J'.

      ENDIF.

    ENDLOOP.

*----- Modifikation für Überfälligkeitsprüfung

    PERFORM cfaktor.

    IF cfakt NE 0.

      checksaldo = h-sald2        / cfakt.

    ELSE.

      checksaldo = h-sald2.

    ENDIF.

    CHECK checksaldo     IN uebesal2.

    IF NOT xhitlist IS INITIAL.

*----- Multiplikation um richtige Sortierung zu erreichen

      uebsaldo = checksaldo * -1.

    ENDIF.

    IF sortart = '2'.

      CHECK sel-post2 = 'J'.

    ENDIF.

    IF NOT kausgabe IS INITIAL.

      CHECK sel-post2 = 'J'.

    ENDIF.

    LOOP AT hlfb1.

      lfb1 = hlfb1.

      LOOP AT c2

        WHERE bukrs = lfb1-bukrs.

        CLEAR c.

        MOVE-CORRESPONDING c2 TO c.

        EXIT.

      ENDLOOP.

*     PERFORM SUMM_C3.

*---- nur bei Verdichtungsstufe '0' werden EINZELPOSTEN extrahiert --*

      IF verdicht = '0'.

        PERFORM einzelposten_extract.

      ENDIF.

      CLEAR: gb,

             rasteruu,

             tage.

      MOVE '1' TO satzart.

* Stammdaten extrahieren ---------------------------------------------*

* Kreditueberschreitung ----------------------------------------------*

* C-KREUEB = C-AGOBLI - KREDK-KLIMK.

* Kreditlimit noch nicht überschritten?------------------------------*

* IF C-KREUEB < 0.

*    C-KREUEB = 0.

* ENDIF.

* Gesamt-Obligo (relativ) --------------------------------------------*

* IF KREDK-KLIMK > 0.

*    C-RGOBLI = ( C-AGOBLI * 100 ) / KREDK-KLIMK.

* ELSE.

*    C-RGOBLI = 0.

* ENDIF.

*  CHECK: C-AGOBLI IN AGOBLIG2.

*         C-RGOBLI IN RGOBLIGO.

* CHECK: CHECKAGOBL IN AGOBLIG2.

      CLEAR bsik.

      EXTRACT stammdaten.

* CLEAR C.

* CLEAR KREDK.

* CLEAR: ZVVERZUG,ZVPER,ZVTYP.

* OP-Raster extrahieren ----------------------------------------------*

      SORT rtab ASCENDING.

      LOOP AT rtab

        WHERE bukrs = lfb1-bukrs.

        MOVE:     '2'    TO satzart,

              rtab-gsber TO gb-gsber,

              rtab-waers TO gb-waers,

              rtab-raart TO rasteruu.

        EXTRACT op-raster.

        CLEAR rtab-bukrs.

        COLLECT rtab.

      ENDLOOP.

    ENDLOOP.

    CLEAR lfb1.

* Bei SORTART = '2' werden nur dann Stammsatzdaten ausgegeben, wenn -*

* auch Einzelposten gerastert wurden. -------------------------------*

    CLEAR c.

    IF wflag2 IS INITIAL.

      MOVE-CORRESPONDING c3 TO c.

    ENDIF.

    CLEAR: gb,

           rasteruu,

           tage.

    MOVE '1' TO satzart.

* Stammdaten extrahieren ---------------------------------------------*

* Kreditueberschreitung ----------------------------------------------*

* C-KREUEB = C-AGOBLI - KREDK-KLIMK.

* Kreditlimit noch nicht überschritten?------------------------------*

* IF C-KREUEB < 0.

*    C-KREUEB = 0.

* ENDIF.

    CLEAR bsik.

    EXTRACT stammdaten.

* clear c.

* OP-Raster extrahieren ----------------------------------------------*

    SORT rtab ASCENDING.

    LOOP AT rtab

      WHERE bukrs = lfb1-bukrs.

      MOVE:     '2'    TO satzart,

            rtab-gsber TO gb-gsber,

            rtab-waers TO gb-waers,

            rtab-raart TO rasteruu.

      EXTRACT op-raster.

    ENDLOOP.

  ENDIF.

  CLEAR adrs.

END-OF-SELECTION.

*---------------------------------------------------------------------*

*        Aufbereitung                                                 *

*---------------------------------------------------------------------*

  CREATE OBJECT lo_writer.

  CLEAR   rtab.

  REFRESH rtab.

* SORT.

  IF konzvers = space.

    SORT BY  lfb1-bukrs

             lfb1-busab

             uebsaldo

             lfa1-lifnr

             satzart

             rtab-sortk

             gb

             rasteruu

             rtab-xguts

             tage

             bsik-umskz

             bsik-blart

             bsik-belnr

             bsik-buzei.

  ELSE.

    SORT BY  uebsaldo

             lfa1-lifnr

             lfb1-bukrs

             lfb1-busab

             satzart

             rtab-sortk

             gb

             rasteruu

             rtab-xguts

             tage

             bsik-umskz

             bsik-blart

             bsik-belnr

             bsik-buzei.

  ENDIF.

  LOOP.

    AT FIRST.

      IF konzvers = 'X'.

        MOVE '0000' TO bhdgd-werte.

        PERFORM new-section(rsbtchh0).

      ELSE.

*      Listseparation wird bei jedem neuen BK durchgefuehrt

      ENDIF.

    ENDAT.

    IF konzvers IS INITIAL.

      AT NEW lfb1-bukrs.

        MOVE lfb1-bukrs    TO bhdgd-grpin(4).     "<= Micro-Fiche Info

        MOVE lfb1-bukrs    TO bhdgd-bukrs.

        MOVE bhdgd-bukrs TO bhdgd-werte.

        PERFORM new-section(rsbtchh0).

        CLEAR   rbuk.

        REFRESH rbuk.

*     SELECT SINGLE * FROM T001 WHERE BUKRS EQ lfB1-BUKRS.

        READ TABLE ht001 WITH KEY bukrs = lfb1-bukrs.

        t001 = ht001.

        IF waers EQ space.

          MOVE t001-waers TO waers.

        ENDIF.

        IF waers NE t001-waers.

          wflag = '1'.

        ENDIF.

*-  Betraege in    gemaess Skalierung aufbereiten --------------------*

        CLEAR h-text.

        IF faktor(1) GT '0'.

          MOVE '1' TO h-text.

          WHILE sy-index LT 10 AND sy-index LE faktor(1).

            ASSIGN h-text+sy-index(1) TO <f1>.

            MOVE '0' TO <f1>.

          ENDWHILE.

        ENDIF.

        MOVE t001-waers TO h-text+10.

        CONDENSE h-text.

        DO 15 TIMES.

          h-offset = 15 - sy-index.

          ASSIGN h-text+h-offset(1) TO <f1>.

          IF <f1> = space.

            MOVE  '-' TO <f1>.

          ELSE.

            ASSIGN <f1>+1 TO <f1>.

            MOVE space TO <f1>.

            EXIT.

          ENDIF.

        ENDDO.

        IF sortart = '1'.

          MOVE text-107 TO varueb4.

          REPLACE '$SKAL'  WITH h-text   INTO varueb4.

        ELSE.

*     MOVE TEXT-165 TO VARUEB4.

          IF rastverd < '2'.

            MOVE text-165 TO varueb4.

          ELSE.

            MOVE text-107 TO varueb4.

            REPLACE '$SKAL'  WITH h-text   INTO varueb4.

          ENDIF.

        ENDIF.

        WRITE kd_stida TO h-stichtag DD/MM/YY.

        REPLACE '$STIDA' WITH h-stichtag INTO varueb4.

      ENDAT.

      AT NEW lfb1-busab.

        MOVE lfb1-busab  TO bhdgd-grpin+4(2).   "<= Micro-Fiche Info

        CLEAR   rbus.

        REFRESH rbus.

        SELECT SINGLE * FROM t001s WHERE bukrs EQ lfb1-bukrs

                                     AND busab EQ lfb1-busab.

        MOVE text-056 TO varueb5.

        REPLACE '$BUK' WITH lfb1-bukrs    INTO varueb5.

        REPLACE '$SAB' WITH lfb1-busab    INTO varueb5.

        REPLACE '$SBZ' WITH t001s-sname   INTO varueb5.

        flag2 = 'X'.

      ENDAT.

      AT NEW lfa1-lifnr.

        MOVE lfa1-lifnr  TO bhdgd-grpin+6(10).  "<= Micro-Fiche Info

        CLEAR gbzaehl.

        save_gsber = '§§§§'.                                "#EC *

        save_waers = '§§§§§'.                               "#EC *

*-- Nur bei Verdichtungsstufe < 2 erfolgt Seitenvorschub pro Konto ---*

        IF verdicht < '2'.

          NEW-PAGE.

*---- Es bleibt Platz fuer ein Raster --------------------------------*

          RESERVE 5 LINES.

        ENDIF.

        top-flag = '0'.

*-- Bei Verdichtungsstufe '2' und Ausgabe von OP-Rastern muss Platz --*

*-- fuer Stamminfo inclusive Ueberschrift bleiben, weil kein Seiten- -*

*-- vorschub bei neuem Konto erfolgt. --------------------------------*

        IF verdicht = '2' AND rastverd < '2'.

          RESERVE 10 LINES.

        ENDIF.

*-- Bei Verdichtungsstufe '2'  o h n e  Ausgabe von OP-Rastern muss --*

*-- Platz fuer Stamminfo ohne Ueberschrift bleiben, weil kein Seiten- *

*-- vorschub bei neuem Konto erfolgt. --------------------------------*

*-- Die Ueberschrift wird einmal bei TOP-OF-PAGE ausgegeben. ---------*

*-- TOP-FLAG = '4' ---------------------------------------------------*

        IF verdicht = '2' AND rastverd = '2'.

          RESERVE  7 LINES.

        ENDIF.

      ENDAT.

    ELSE.

      AT NEW lfa1-lifnr.

*       CLEAR   RBUA.

*       REFRESH RBUA.

        flag2 = 'X'.

        MOVE lfa1-lifnr  TO bhdgd-grpin(10).  "<= Micro-Fiche Info

        IF sortart = '1'.

          MOVE text-170 TO varueb4.

        ELSE.

          IF rastverd < '2'.

            MOVE text-165 TO varueb4.

          ELSE.

            MOVE text-170 TO varueb4.

          ENDIF.

        ENDIF.

        WRITE kd_stida TO h-stichtag DD/MM/YY.

        REPLACE '$STIDA' WITH h-stichtag INTO varueb4.

      ENDAT.

      AT NEW lfb1-bukrs.

        CLEAR   rbuk.

        REFRESH rbuk.

        CLEAR gbzaehl.

        MOVE lfb1-bukrs    TO bhdgd-grpin+10(4).  "<= Micro-Fiche Info

        IF NOT lfb1-bukrs IS INITIAL.

          READ TABLE ht001 WITH KEY bukrs = lfb1-bukrs.

          t001 = ht001.

          IF waers EQ space.

            MOVE t001-waers TO waers.

          ENDIF.

          IF waers NE t001-waers.

            wflag = '1'.

          ENDIF.

        ENDIF.

      ENDAT.

      AT NEW lfb1-busab.

        CLEAR   rbus.

        REFRESH rbus.

        IF  NOT lfb1-bukrs IS INITIAL

        AND NOT lfb1-busab IS INITIAL.

          MOVE lfb1-busab  TO bhdgd-grpin+14(2).   "<= Micro-Fiche Info

          SELECT SINGLE * FROM t001s WHERE bukrs EQ lfb1-bukrs

                                       AND busab EQ lfb1-busab.

          MOVE text-056 TO varueb5.

          REPLACE '$BUK' WITH lfb1-bukrs    INTO varueb5.

          REPLACE '$SAB' WITH lfb1-busab    INTO varueb5.

          REPLACE '$SBZ' WITH t001s-sname   INTO varueb5.

        ENDIF.

      ENDAT.

    ENDIF.

    AT NEW satzart.

      CASE satzart.

        WHEN '2'.                      "Raster

          IF acc_mode IS INITIAL.

            IF rtab-sortk < '2'.

              IF rastverd < '2'.

                IF verdicht < '3'.

                  IF  NOT konzvers IS INITIAL

                  AND NOT lfb1-bukrs IS INITIAL.

                    CHECK xbukrdat NE '2'.

                  ENDIF.

*-------- Wenn ein neues Raster beginnt, muessen mindestens noch -----*

*-------- 9 Zeilen Platz haben. --------------------------------------*

                  top-flag = '3'.

                  RESERVE 9 LINES.

                  l_title_1 = text-513.

                  REPLACE '&1' WITH lfb1-bukrs INTO l_title_1.

                  REPLACE '&2' WITH lfb1-busab INTO l_title_1.

                  REPLACE '&3' WITH lfa1-lifnr INTO l_title_1.

                  REPLACE '&4' WITH h-stichtag INTO l_title_1.

                  lo_writer->new_table( id_type = '2' id_title = l_title_1 ).

                  lo_writer->title_write( ).

                  varueb1-feld2 = text-500.

                  lo_writer->add_header_field( text-520 ).

                  lo_writer->add_header_field( text-522 ).

                  lo_writer->add_header_field( text-524 ).

                  lo_writer->add_header_field( text-525 ).

                  lo_writer->add_header_field( text-526 ).

                  lo_writer->add_header_field( varueb1-feld2 ).

                  lo_writer->add_header_field( varueb1-feld3 ).

                  lo_writer->add_header_field( varueb1-feld4 ).

                  lo_writer->add_header_field( varueb1-feld5 ).

                  lo_writer->add_header_field( varueb1-feld6 ).

                  lo_writer->add_header_field( varueb1-feld7 ).

                  lo_writer->add_header_field( '' ).

                  lo_writer->add_header_field( text-523 ).

                  lo_writer->add_header_field( '' ).

                  lo_writer->add_header_field( '' ).

                  lo_writer->add_header_field( '' ).

                  lo_writer->add_header_field( varueb2-feld2 ).

                  lo_writer->add_header_field( varueb2-feld3 ).

                  lo_writer->add_header_field( varueb2-feld4 ).

                  lo_writer->add_header_field( varueb2-feld5 ).

                  lo_writer->add_header_field( varueb2-feld6 ).

                  lo_writer->add_header_field( varueb2-feld7 ).

                  lo_writer->ruler_write( ).

                ENDIF.

              ENDIF.

            ELSE.

              IF rastverd < '2'.

                IF verdicht < '3'.

*                  lo_writer->format_normal( ).

*                  lo_writer->write_inserted_line( text-167 ).

                ENDIF.

              ENDIF.

            ENDIF.

            IF rtab-sortk < '2'.

              IF rastverd < '2'.

                IF verdicht = '6'

                AND fltop   = space.

                  count = count + '1'.

                  IF count GT '1'.

                    NEW-PAGE.

                  ENDIF.

*-------- Wenn ein neues Raster beginnt, muessen mindestens noch -----*

*-------- 9 Zeilen Platz haben. --------------------------------------*

                  IF verdicht = '6'.

                    MOVE text-168 TO varueb1-feld1.

                    MOVE text-169 TO varueb2-feld1.

                  ENDIF.

                  top-flag = '3'.

                  RESERVE 9 LINES.

                  IF konzvers IS INITIAL.

                    CONCATENATE varueb5 ',' INTO l_hlp_txt.

                  ELSE.

                    CONCATENATE text-220 ',' INTO l_hlp_txt.

                  ENDIF.

                  CONCATENATE l_hlp_txt l_title_part2 INTO l_title_1

                    SEPARATED BY space.

                  lo_writer->new_table( id_type = '0' id_title = l_title_1  id_ruler_string = '2.14.30.80.89.103.110|125|140|155|170|185|200|215|230|245|260|' ).

              

                  lo_writer->title_write( ).

                  varueb1-feld2 = text-500.

                  lo_writer->add_header_field( 'Reco. Account' ).

                  lo_writer->add_header_field( text-700 ).         "  Vendor

                  lo_writer->add_header_field( text-703 ).         "  Field changed to Vend. Name

                  lo_writer->add_header_field( text-702 ).         "  Country

                  lo_writer->add_header_field( 'Vendor ' ).  " Leave one blank :

                  lo_writer->add_header_field( 'Vendor' ).  " Leave one blank :

                  lo_writer->add_header_field( 'Vendor' ).  " Leave one blank :

                  lo_writer->add_header_field( text-525 ).   " OI Total

                  lo_writer->add_header_field( varueb1-feld2 ).

                  lo_writer->add_header_field( varueb1-feld3 ).

                  lo_writer->add_header_field( varueb1-feld4 ).

                  lo_writer->add_header_field( varueb1-feld5 ).

                  lo_writer->add_header_field( varueb1-feld6 ).

                  lo_writer->add_header_field( varueb1-feld7 ).

                  lo_writer->add_header_field( 'blank' ).

                  lo_writer->add_header_field( 'blank' ).

*                  lo_writer->add_header_field( 'blank' ).

*                  lo_writer->add_header_field( 'blank' ).

                  lo_writer->add_header_field( 'blank' ).

                  lo_writer->add_header_field( 'account' ).

                  lo_writer->add_header_field( text-701 ).      " Number

                  lo_writer->add_header_field( text-704 ).       " Field changed to name : 05.01.2016

                  lo_writer->add_header_field( 'Country' ).

                  lo_writer->add_header_field( 'City' ).

                  lo_writer->add_header_field( 'Region' ).

                  lo_writer->add_header_field( 'State' ).

                  lo_writer->add_header_field( '' ).

                  lo_writer->add_header_field( varueb2-feld2 ).

                  lo_writer->add_header_field( varueb2-feld3 ).

                  lo_writer->add_header_field( varueb2-feld4 ).

                  lo_writer->add_header_field( varueb2-feld5 ).

                  lo_writer->add_header_field( varueb2-feld6 ).

                  lo_writer->add_header_field( varueb2-feld7 ).

                  lo_writer->add_header_field( '  ' ).

                  lo_writer->add_header_field( '  ' ).

*                  lo_writer->add_header_field( '  ' ).

*                  lo_writer->add_header_field( 'col-11' ).

                  lo_writer->ruler_write( ).

                  fltop = 'X'.

                ENDIF.

              ENDIF.

            ENDIF.

          ENDIF.

        WHEN '3'.                      "Einzelposten

          CONCATENATE text-547 text-110 lfb1-bukrs text-111 lfb1-busab text-112 lfa1-lifnr

             text-548 h-stichtag INTO l_title_1 SEPARATED BY space.

          lo_writer->new_table( id_type = '3' id_title = l_title_1 ).

          lo_writer->title_write( ).

          lo_writer->add_header_field( text-530 ).

          lo_writer->add_header_field( text-531 ).

          lo_writer->add_header_field( text-532 ).

          lo_writer->add_header_field( text-533 ).

          lo_writer->add_header_field( text-534 ).

          lo_writer->add_header_field( text-535 ).

          lo_writer->add_header_field( text-536 ).

          lo_writer->add_header_field( text-537 ).

          lo_writer->add_header_field( text-538 ).

          lo_writer->add_header_field( text-539 ).

          lo_writer->add_header_field( text-540 ).

          lo_writer->add_header_field( text-541 ).

          lo_writer->add_header_field( text-542 ).

          lo_writer->add_header_field( text-543 ).

          lo_writer->add_header_field( text-544 ).

          lo_writer->add_header_field( text-545 ).

          lo_writer->add_header_field( text-546 ).

          lo_writer->ruler_write( ).

          top-flag = '1'.

      ENDCASE.

    ENDAT.

    AT stammdaten.                     "Satzart '1'

*   CHECK VERDICHT < '3'.

      IF verdicht < '3'.

*   IF RASTVERD < '2'.

        DETAIL.

        IF  NOT konzvers IS INITIAL

        AND NOT lfb1-bukrs IS INITIAL.

          IF  xbukrdat = '2'

          AND verdicht > '0'.

            CHECK 1 = 2.

          ENDIF.

        ENDIF.

        IF konzvers IS INITIAL.

          CONCATENATE

            text-110 lfb1-bukrs

            text-111 lfb1-busab

            text-112 lfa1-lifnr

            INTO l_hlp_txt SEPARATED BY space.

          CONCATENATE l_hlp_txt l_title_part2 INTO l_title_1

            SEPARATED BY space.

        ELSE.

          IF lfb1-bukrs IS INITIAL.

            CONCATENATE

              text-112 lfa1-lifnr

              INTO l_hlp_txt SEPARATED BY space.

            CONCATENATE l_hlp_txt l_title_part2 INTO l_title_1

              SEPARATED BY space.

          ELSE.

            CONCATENATE

              text-112 lfa1-lifnr

              text-110 lfb1-bukrs

              text-111 lfb1-busab

              INTO l_hlp_txt SEPARATED BY space.

            CONCATENATE l_hlp_txt l_title_part2 INTO l_title_1

              SEPARATED BY space.

          ENDIF.

        ENDIF.

        CALL METHOD lo_writer->new_table

          EXPORTING

            id_title = l_title_1

            id_type  = '1'.

        lo_writer->add_group_header_field( text-550 ).

        lo_writer->add_header_field( text-551 ).

        lo_writer->add_header_field( text-552 ).

        lo_writer->add_header_field( text-553 ).

        lo_writer->add_header_field( text-554 ).

        lo_writer->add_header_field( text-555 ).

        lo_writer->add_header_field( text-556 ).

        lo_writer->add_header_field( text-557 ).

        lo_writer->add_header_field( text-558 ).

        lo_writer->add_header_field( text-559 ).

        lo_writer->add_header_field( text-560 ).

        CLEAR top-flag.

        RESERVE 10 LINES.

        lo_writer->title_write( ).

        lo_writer->ruler_write( ).

        top-flag = '4'.

        PERFORM anschrift.

        intens = 'X'.

      ENDIF.

    ENDAT.

    AT op-raster.                      "Satzart '2'

      IF verdicht < '3'

      OR verdicht = '6'.

        PERFORM raster_ausgabe.

      ENDIF.

*-- Summen fuer hoehere Gruppenstufen bilden --------------------------*

      IF acc_mode IS INITIAL.

        PERFORM sum_busab_bukrs_total.

      ENDIF.

    ENDAT.

    AT einzelposten.                   "Satzart '3'

      RESERVE 2 LINES.

      PERFORM einzelposten_ausgabe.

    ENDAT.

    AT END OF rasteruu.

      IF satzart = '3'.

        lo_writer->row_open( ).

        lo_writer->format_total( ).

        CASE rasteruu.

          WHEN '1'.

            MOVE text-052 TO vartxt1.

            REPLACE '$BIS' WITH rc01 INTO vartxt1.

            WRITE sum(shbetrag) TO l_hlp_txt1(12)

                           CURRENCY t001-waers

                           ROUND faktor

                           DECIMALS stellen.

            CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

            lo_writer->write_inserted_line( l_hlp_txt ).

            lo_writer->row_close( ib_inserted_line = abap_true ).

            lo_writer->uline( ).

          WHEN '2'.

            IF NOT rc02 IS INITIAL.

              MOVE text-053 TO vartxt1.

              REPLACE '$VON' WITH rc06 INTO vartxt1.

              REPLACE '$BIS' WITH rc02 INTO vartxt1.

              WRITE sum(shbetrag) TO l_hlp_txt1(12)

                             CURRENCY t001-waers

                             ROUND faktor

                             DECIMALS stellen.

              CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

              lo_writer->write_inserted_line( l_hlp_txt ).

              lo_writer->row_close( ib_inserted_line = abap_true ).

              lo_writer->uline( ).

            ELSE.

              MOVE text-054 TO vartxt1.

              REPLACE '$VON' WITH rc06 INTO vartxt1.

              WRITE: 132 sy-vline.

              WRITE sum(shbetrag) TO l_hlp_txt1(12)

                             CURRENCY t001-waers.

              CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

              lo_writer->write_inserted_line( l_hlp_txt ).

              lo_writer->row_close( ib_inserted_line = abap_true ).

              lo_writer->uline( ).

            ENDIF.

          WHEN '3'.

            IF NOT rc03 IS INITIAL.

              MOVE text-053 TO vartxt1.

              REPLACE '$VON' WITH rc07 INTO vartxt1.

              REPLACE '$BIS' WITH rc03 INTO vartxt1.

              WRITE sum(shbetrag) TO l_hlp_txt1(12)

                             CURRENCY t001-waers.

              CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

              lo_writer->write_inserted_line( l_hlp_txt ).

              lo_writer->row_close( ib_inserted_line = abap_true ).

              lo_writer->uline( ).

            ELSE.

              MOVE text-054 TO vartxt1.

              REPLACE '$VON' WITH rc07 INTO vartxt1.

              WRITE sum(shbetrag) TO l_hlp_txt1(12)

                             CURRENCY t001-waers.

              CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

              lo_writer->write_inserted_line( l_hlp_txt ).

              lo_writer->row_close( ib_inserted_line = abap_true ).

              lo_writer->uline( ).

            ENDIF.

          WHEN '4'.

            IF NOT rc04 IS INITIAL.

              MOVE text-053 TO vartxt1.

              REPLACE '$VON' WITH rc08 INTO vartxt1.

              REPLACE '$BIS' WITH rc04 INTO vartxt1.

              WRITE sum(shbetrag) TO l_hlp_txt1(12)

                             CURRENCY t001-waers.

              CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

              lo_writer->write_inserted_line( l_hlp_txt ).

              lo_writer->row_close( ib_inserted_line = abap_true ).

              lo_writer->uline( ).

            ELSE.

              MOVE text-054 TO vartxt1.

              REPLACE '$VON' WITH rc08 INTO vartxt1.

              WRITE sum(shbetrag) TO l_hlp_txt1(12)

                             CURRENCY t001-waers.

              CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

              lo_writer->write_inserted_line( l_hlp_txt ).

              lo_writer->row_close( ib_inserted_line = abap_true ).

              lo_writer->uline( ).

            ENDIF.

          WHEN '5'.

            IF NOT rc05 IS INITIAL.

              MOVE text-053 TO vartxt1.

              REPLACE '$VON' WITH rc09 INTO vartxt1.

              REPLACE '$BIS' WITH rc05 INTO vartxt1.

              WRITE sum(shbetrag) TO l_hlp_txt1(12)

                             CURRENCY t001-waers.

              CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

              lo_writer->write_inserted_line( l_hlp_txt ).

              lo_writer->row_close( ib_inserted_line = abap_true ).

              lo_writer->uline( ).

            ELSE.

              MOVE text-054 TO vartxt1.

              REPLACE '$VON' WITH rc09 INTO vartxt1.

              WRITE sum(shbetrag) TO l_hlp_txt1(12)

                             CURRENCY t001-waers.

              CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

              lo_writer->write_inserted_line( l_hlp_txt ).

              lo_writer->row_close( ib_inserted_line = abap_true ).

              lo_writer->uline( ).

            ENDIF.

          WHEN '6'.

            MOVE text-054 TO vartxt1.

            REPLACE '$VON' WITH rc10 INTO vartxt1.

            WRITE sum(shbetrag) TO l_hlp_txt1(12)

                           CURRENCY t001-waers.

            CONCATENATE vartxt1 l_hlp_txt1 INTO l_hlp_txt SEPARATED BY space.

            lo_writer->write_inserted_line( l_hlp_txt ).

            lo_writer->row_close( ib_inserted_line = abap_true ).

            lo_writer->uline( ).

          WHEN OTHERS.

            WRITE sum(shbetrag) TO l_hlp_txt(12)

                           CURRENCY t001-waers.

            lo_writer->write_inserted_line( l_hlp_txt ).

            lo_writer->row_close( ib_inserted_line = abap_true ).

            lo_writer->uline( ).

        ENDCASE.

      ENDIF.

    ENDAT.

    AT END OF satzart.

      IF satzart = '2'.

        IF rastverd < '2'.

          IF verdicht < '3'.

            IF  NOT konzvers IS INITIAL

            AND NOT lfb1-bukrs IS INITIAL

            AND xbukrdat = '2'

            AND verdicht > '0'.

            ELSE.

              IF ( lo_writer->md_is_table_open = abap_true ) .

                lo_writer->table_close( ).

              ENDIF.

            ENDIF.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDAT.

    IF acc_mode IS INITIAL.

      IF konzvers IS INITIAL.

        AT END OF lfb1-busab.

          CLEAR flag2.

          MOVE space     TO bhdgd-grpin+6. "<= Micro-Fiche Info

          IF verdicht < '4'

          OR verdicht = '6'.

            DESCRIBE TABLE rbus LINES coun1.

            IF verdicht = '6'.

              IF coun1 GT 0.

                IF ( lo_writer->md_is_table_open = abap_true ) .

                  lo_writer->table_close( ).

                ENDIF.

              ENDIF.

            ENDIF.

            NEW-PAGE.

            MOVE text-051 TO varueb3.

            REPLACE '$BUK' WITH lfb1-bukrs    INTO varueb3.

            REPLACE '$SAB' WITH lfb1-busab    INTO varueb3.

            REPLACE '$SBZ' WITH t001s-sname   INTO varueb3.

            top-flag = '2'.

            PERFORM raster_ausgabe_busab.

          ENDIF.

          CLEAR t001s.

          CLEAR fltop.

        ENDAT.

        AT END OF lfb1-bukrs.

          MOVE space     TO bhdgd-grpin+4. "<= Micro-Fiche Info

          IF verdicht < '5'

          OR verdicht = '6'.

            NEW-PAGE.

            MOVE text-050 TO varueb3.

            REPLACE '$BUK' WITH lfb1-bukrs    INTO varueb3.

            top-flag = '2'.

            PERFORM raster_ausgabe_bukrb.

          ENDIF.

          CLEAR fltop.

        ENDAT.

      ELSE.

        AT END OF lfb1-busab.

*        MOVE SPACE     TO BHDGD-GRPIN+6. "<= Micro-Fiche Info

          CLEAR t001s.

        ENDAT.

        AT END OF lfb1-bukrs.

          MOVE space     TO bhdgd-grpin+14. "<= Micro-Fiche Info

        ENDAT.

        AT END OF lfa1-lifnr.

          MOVE space       TO bhdgd-grpin+10.      "<= Micro-Fiche Info

          IF verdicht = '6'.

*            ULINE.

          ENDIF.

        ENDAT.

      ENDIF.

    ENDIF.

    AT LAST.

      CLEAR flag2.

      MOVE space       TO bhdgd-grpin. "<= Micro-Fiche Info

      MOVE '    '      TO bhdgd-bukrs.

      MOVE bhdgd-bukrs TO bhdgd-werte.

      IF ( lo_writer->md_is_table_open = abap_true ) .

        lo_writer->table_close( ).

      ENDIF.

      PERFORM new-section(rsbtchh0).

      MOVE text-055 TO varueb3.

      top-flag = '2'.

      IF sortart = '1'.

        MOVE text-109 TO varueb4.

      ELSE.

        MOVE text-165 TO varueb4.

      ENDIF.

*     WRITE DD_STIDA TO H-STICHTAG DD/MM/YY.

      REPLACE '$STIDA' WITH h-stichtag INTO varueb4.

      IF acc_mode IS INITIAL.

        PERFORM raster_ausgabe_total.

      ELSE.

        PERFORM raster_ausgabe_alv_grid.

      ENDIF.

    ENDAT.

  ENDLOOP.

  IF sy-pagno = 0.                     "Keine Liste ausgegeben

    CALL FUNCTION 'POPUP_NO_LIST'.

  ENDIF.

TOP-OF-PAGE.

  IF acc_mode IS INITIAL.

*- Standard-Seitenkopf drucken --------------------------------------*

    PERFORM batch-heading(rsbtchh0).

*-- ab der zweiten Seite pro Konto Ueberschrift fuer Einzelposten ---*

    DETAIL.

    CASE top-flag.

      WHEN '1'.

* create title

        WRITE kd_stida TO h-stichtag DD/MM/YY.

        CONCATENATE text-547 text-110 lfb1-bukrs text-111 lfb1-busab text-112 lfa1-lifnr

           text-548 h-stichtag INTO l_title_1 SEPARATED BY space.

* write table header for line items

        lo_writer->new_table( id_type = '3' id_title = l_title_1 ).

        lo_writer->title_write( ).

        lo_writer->add_header_field( text-530 ).

        lo_writer->add_header_field( text-531 ).

        lo_writer->add_header_field( text-532 ).

        lo_writer->add_header_field( text-533 ).

        lo_writer->add_header_field( text-534 ).

        lo_writer->add_header_field( text-535 ).

        lo_writer->add_header_field( text-536 ).

        lo_writer->add_header_field( text-537 ).

        lo_writer->add_header_field( text-538 ).

        lo_writer->add_header_field( text-539 ).

        lo_writer->add_header_field( text-540 ).

        lo_writer->add_header_field( text-541 ).

        lo_writer->add_header_field( text-542 ).

        lo_writer->add_header_field( text-543 ).

        lo_writer->add_header_field( text-544 ).

        lo_writer->add_header_field( text-545 ).

        lo_writer->add_header_field( text-546 ).

        lo_writer->ruler_write( ).

*     DETAIL.

*-- Ueberschriften fuer Listenteil 2 ausgeben -----------------------*

      WHEN '2'.

        IF verdicht = '6'.

          IF flag2 IS INITIAL.

            MOVE text-102 TO varueb1-feld1.

            MOVE text-106 TO varueb2-feld1.

          ENDIF.

        ENDIF.

* create title

        IF top-fla2 IS INITIAL.

          CONCATENATE varueb3 ',' INTO l_hlp_string.

          CONCATENATE l_hlp_string l_title_part2 INTO l_title_1 SEPARATED BY space.

        ELSE.

          IF konzvers IS INITIAL.

            CONCATENATE varueb5 ',' INTO l_hlp_string.

            CONCATENATE l_hlp_string l_title_part2 INTO l_title_1 SEPARATED BY space.

          ELSE.

            CONCATENATE text-220 ',' INTO l_hlp_string.

            CONCATENATE l_hlp_string l_title_part2 INTO l_title_1 SEPARATED BY space.

          ENDIF.

        ENDIF.

        clear batch_op_header.

        IF ( sy-batch = 'X' AND verdicht = '6' )               "1021583

        OR ( g_ex_print_sel = 'X' AND verdicht = '6' ).        "1021583

          IF NOT top-fla2 IS INITIAL.

            batch_op_header = 'X'.

          ENDIF.

        ENDIF.

        IF batch_op_header = 'X'.

* print title and header for BATCH OP LINES

          lo_writer->new_table( id_type = '4' id_title = l_title_1 ).

          lo_writer->title_write( ).

          varueb1-feld2 = text-500.

          lo_writer->add_header_field( text-700 ).

          lo_writer->add_header_field( text-703 ).

          lo_writer->add_header_field( text-702 ).

          lo_writer->add_header_field( text-525 ).

          lo_writer->add_header_field( varueb1-feld2 ).

          lo_writer->add_header_field( varueb1-feld3 ).

          lo_writer->add_header_field( varueb1-feld4 ).

          lo_writer->add_header_field( varueb1-feld5 ).

          lo_writer->add_header_field( varueb1-feld6 ).

          lo_writer->add_header_field( varueb1-feld7 ).

          lo_writer->add_header_field( text-701 ).

          lo_writer->add_header_field( text-704 ).

          lo_writer->add_header_field( '' ).

          lo_writer->add_header_field( '' ).

          lo_writer->add_header_field( varueb2-feld2 ).

          lo_writer->add_header_field( varueb2-feld3 ).

          lo_writer->add_header_field( varueb2-feld4 ).

          lo_writer->add_header_field( varueb2-feld5 ).

          lo_writer->add_header_field( varueb2-feld6 ).

          lo_writer->add_header_field( varueb2-feld7 ).

          lo_writer->ruler_write( ).

        ELSE.

* print title and header

        lo_writer->new_table( id_type = '2' id_title = l_title_1 ).

        lo_writer->title_write( ).

        varueb1-feld2 = text-500.

        lo_writer->add_header_field( text-520 ).

        lo_writer->add_header_field( text-522 ).

        lo_writer->add_header_field( text-524 ).

        lo_writer->add_header_field( text-525 ).

        lo_writer->add_header_field( text-526 ).

        lo_writer->add_header_field( varueb1-feld2 ).

        lo_writer->add_header_field( varueb1-feld3 ).

        lo_writer->add_header_field( varueb1-feld4 ).

        lo_writer->add_header_field( varueb1-feld5 ).

        lo_writer->add_header_field( varueb1-feld6 ).

        lo_writer->add_header_field( varueb1-feld7 ).

        lo_writer->add_header_field( '' ).

        lo_writer->add_header_field( text-523 ).

        lo_writer->add_header_field( '' ).

        lo_writer->add_header_field( '' ).

        lo_writer->add_header_field( '' ).

        lo_writer->add_header_field( varueb2-feld2 ).

        lo_writer->add_header_field( varueb2-feld3 ).

        lo_writer->add_header_field( varueb2-feld4 ).

        lo_writer->add_header_field( varueb2-feld5 ).

        lo_writer->add_header_field( varueb2-feld6 ).

        lo_writer->add_header_field( varueb2-feld7 ).

        lo_writer->ruler_write( ).

        ENDIF.

      WHEN '3'.

*-- Ueberschrift fuer Stammsatzinformationen ------------------------*

      WHEN '4'.

* create header

        CONCATENATE text-549 text-110 lfb1-bukrs text-111 lfb1-busab text-112 lfa1-lifnr

           l_title_part2 INTO l_title_1 SEPARATED BY space.

* write table header for line items

        lo_writer->new_table( id_type = '1' id_title = l_title_1 ).

        lo_writer->title_write( ).

        lo_writer->add_group_header_field( text-550 ).

        lo_writer->add_header_field( text-551 ).

        lo_writer->add_header_field( text-552 ).

        lo_writer->add_header_field( text-553 ).

        lo_writer->add_header_field( text-554 ).

        lo_writer->add_header_field( text-555 ).

        lo_writer->add_header_field( text-556 ).

        lo_writer->add_header_field( text-557 ).

        lo_writer->add_header_field( text-558 ).

        lo_writer->add_header_field( text-559 ).

        lo_writer->add_header_field( text-560 ).

        lo_writer->uline( ).

        lo_writer->ruler_write( ).

    ENDCASE.

    clear batch_op_header.

  ENDIF.

*--------------------------------------------------------------------*

*              U N T E R R O U T I N E N                             *

*--------------------------------------------------------------------*

*------- Faktor fuer Dezimalen bestimmen ----------------------------*

FORM cfaktor.

  IF t001-waers NE tcurx-currkey.

    SELECT SINGLE * FROM tcurx WHERE currkey = t001-waers.

    IF sy-subrc NE 0.

      tcurx-currkey = t001-waers.

      cfakt = 100.

    ELSE.

      cfakt = 1.

      DO tcurx-currdec TIMES.

        cfakt = cfakt * 10.

      ENDDO.

    ENDIF.

  ENDIF.

ENDFORM.                    "CFAKTOR

* OP-Raster und Ueberschriften aufbereiten --------------------------*

FORM raster_aufbau.

* Erste ausgewaehlte Rasterarte sichern ------------------------------*

  IF rart-net = 'X'.

    rart = '1'.

  ELSE.

    IF rart-skt = 'X'.

      rart = '2'.

    ELSE.

      IF rart-zhl = 'X'.

        rart = '3'.

      ELSE.

        IF rart-ueb = 'X'.

          rart = '4'.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

* Obergrenze Intervall -----------------------------------------------*

  rp01 = rastbis1.

  rp02 = rastbis2.

  rp03 = rastbis3.

  rp04 = rastbis4.

  rp05 = rastbis5.

* Untergrenze Intervall -----------------------------------------------*

  rp06 = rp01 + 1.

  IF NOT rp02 IS INITIAL.

    rp07 = rp02 + 1.

  ENDIF.

  IF NOT rp03 IS INITIAL.

    rp08 = rp03 + 1.

  ENDIF.

  IF NOT rp04 IS INITIAL.

    rp09 = rp04 + 1.

  ENDIF.

  IF NOT rp05 IS INITIAL.

    rp10 = rp05 + 1.

  ENDIF.

* Rasterpunkte in Charakterform für REPLACE.

  WRITE: rp01 TO rc01.

  IF NOT rp02 IS INITIAL.

    WRITE: rp02 TO rc02.

    MOVE text-202 TO varueb2-feld3.

  ENDIF.

  IF NOT rp03 IS INITIAL.

    WRITE: rp03 TO rc03.

    MOVE text-203 TO varueb2-feld4.

  ENDIF.

  IF NOT rp04 IS INITIAL.

    WRITE: rp04 TO rc04.

    MOVE text-204 TO varueb2-feld5.

  ENDIF.

  IF NOT rp05 IS INITIAL.

    WRITE: rp05 TO rc05.

    MOVE text-205 TO varueb2-feld6.

  ENDIF.

  IF NOT rp06 IS INITIAL.

    WRITE: rp06 TO rc06.

    MOVE text-206 TO varueb1-feld3.

  ENDIF.

  IF NOT rp07 IS INITIAL.

    WRITE: rp07 TO rc07.

    MOVE text-207 TO varueb1-feld4.

  ENDIF.

  IF NOT rp08 IS INITIAL.

    WRITE: rp08 TO rc08.

    MOVE text-208 TO varueb1-feld5.

  ENDIF.

  IF NOT rp09 IS INITIAL.

    WRITE: rp09 TO rc09.

    MOVE text-209 TO varueb1-feld6.

  ENDIF.

  IF NOT rp10 IS INITIAL.

    WRITE: rp10 TO rc10.

    MOVE text-210 TO varueb1-feld7.

  ENDIF.

* Variable ersetzen --------------------------------------------------*

* IF SORTART = '1'.

*   MOVE TEXT-103 TO VARUEB2.

* ELSE.

  IF verdicht = '6'.

    MOVE text-168 TO varueb1-feld1.

    MOVE text-169 TO varueb2-feld1.

  ELSE.

    MOVE text-102 TO varueb1-feld1.

    MOVE text-106 TO varueb2-feld1.

  ENDIF.

  MOVE text-201 TO varueb2-feld2.

* ENDIF.

  REPLACE 'RP01' WITH rc01 INTO varueb2.                    "bis   0

  REPLACE 'RP02' WITH rc02 INTO varueb2.                    "bis  20

  REPLACE 'RP03' WITH rc03 INTO varueb2.                    "bis  40

  REPLACE 'RP04' WITH rc04 INTO varueb2.                    "bis  80

  REPLACE 'RP05' WITH rc05 INTO varueb2.                    "bis 100

  REPLACE 'RP06' WITH rc06 INTO varueb1.                    "von   1

  REPLACE 'RP07' WITH rc07 INTO varueb1.                    "von  21

  REPLACE 'RP08' WITH rc08 INTO varueb1.                    "von  41

  REPLACE 'RP09' WITH rc09 INTO varueb1.                    "von  81

  REPLACE 'RP10' WITH rc10 INTO varueb1.                    "von 101

ENDFORM.                    "RASTER_AUFBAU

*---------------------------------------------------------------------*

*       FORM SALDO_AKTUELL                                            *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM saldo_aktuell.

  ADD lfc1-um01s THEN lfc1-um02s UNTIL lfc1-um16s GIVING h-soll

      ACCORDING TO bmonat.

  ADD lfc1-um01h THEN lfc1-um02h UNTIL lfc1-um16h GIVING h-haben

      ACCORDING TO bmonat.

  h-saldo  = h-soll - h-haben + lfc1-umsav.

* aktueller Saldo = Teil des Gesamtobligos --------------------------*

* PERFORM SALDO_AKTUELL.

  c-agobli = h-saldo.

  IF cfakt NE 0.

    checksaldo = checksaldo + h-saldo / cfakt.

    checkagobl = checkagobl + c-agobli / cfakt.

  ELSE.

    checksaldo = checksaldo + h-saldo.

    checkagobl = checkagobl + c-agobli.

  ENDIF.

  c-saldo  = h-saldo.

ENDFORM.                    "SALDO_AKTUELL

*---------------------------------------------------------------------*

*       FORM KUM_WERTE                                                *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM kum_werte.

* Jahresumsatz -------------------------------------------------------*

* C-KUMUM  = lfC1-KUMUM.  ECKERT: FELD KUMUM NICHT MEHR VORHANDEN

  ADD lfc1-um01u THEN lfc1-um02u UNTIL lfc1-um16u GIVING c-kumum

      ACCORDING TO bmonat.

  IF sortart = '1' . "Ausgabe kum Kum.Umsatz wenn Hauswährung gewünscht.

* Kum. Umsatz---------------------------------------------------------*

    CLEAR rtab.

    MOVE: lfc1-bukrs TO rtab-bukrs.

* SORTK = 1.

* Satz für Ausgabe des kummulieten Umsatzes auf Summenebene.

* (Summe pro Sachbearbeiter und Buchungskreis)

    MOVE: '2' TO rtab-sortk,

    '** '   TO rtab-gsber,

*  RART    TO RTAB-RAART,

    c-kumum TO rtab-kumum.

    MOVE:

    lfa1-lifnr TO rtab-lifnr,

    lfa1-sortl TO rtab-sortl,

    lfa1-land1 TO rtab-land1,

    lfa1-name1 to rtab-name1 ,

    LFB1-AKONT TO RTAB-AKONT ,              " rECO ACCOUNT : 05.01.2016

    LFA1-ORT01 TO RTAB-ORT01 ,              " cITY : 07.01.2016

    LFA1-REGIO TO RTAB-REGIO ,             " Region Code  : 11.01.2016

    T005U-BEZEI to RTAB-BEZEI ,             " Region DESCRIPTION : 08.01.2016

    BSIK-PRCTR TO RTAB-PRCTR .              " 30.06.2016 :

    COLLECT rtab.

  ENDIF.

ENDFORM.                    "KUM_WERTE

*---------------------------------------------------------------------*

*       FORM SONDER_UMSAETZE                                          *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM sonder_umsaetze.

* CLEAR: C.

* Errechnen Sonderumsatz-Salden, Gesamtsaldo ------------------------*

*---------- Trend, Umsatz pro Gesch.Bereich -------------------------*

  h-shbls = lfc3-solll - lfc3-habnl.

*-- Gesamt-Obligo ----------------------------------------------------*

  c-agobli = lfc3-saldv + h-shbls.

  PERFORM cfaktor.

  IF cfakt NE 0.

    checkagobl = checkagobl + c-agobli / cfakt.

  ELSE.

    checkagobl = checkagobl + c-agobli.

  ENDIF.

*-- Sonderumsatz-Salden ----------------------------------------------*

  CASE lfc3-shbkz.

*-------------- Wechsel-Forderung ------------------------------------*

*     WHEN 'W'. C-WEXOB = C-WEXOB + lfC3-SALDV + H-SHBLS.

*-------------- Scheckwechsel-Forderung ------------------------------*

*     WHEN 'S'. C-WEXOB = C-WEXOB + lfC3-SALDV + H-SHBLS.

*-------------- Wechsel-Forderung NB ---------------------------------*

*     WHEN 'B'. C-WEXOB = C-WEXOB + lfC3-SALDV + H-SHBLS.

*-------------- Anzahlungs-Obligo ------------------------------------*

*     WHEN 'A'. C-ANZOB = C-ANZOB + lfC3-SALDV + H-SHBLS.

*-------------- Zahlungs-Anforderung ---------------------------------*

*     WHEN 'F'. C-ZANFB = C-ZANFB + lfC3-SALDV + H-SHBLS.

*-------------- Sonstige Sonderumsaetze ------------------------------*

*-------------- Einzel-Wertberichtigung ------------------------------*

*     WHEN 'E'. C-SONOB = C-SONOB + lfC3-SALDV + H-SHBLS.

*-------------- Buergschaften ----------------------------------------*

*     WHEN 'G'. C-SONOB = C-SONOB + lfC3-SALDV + H-SHBLS.

*-------------- Zins-Forderung ---------------------------------------*

*     WHEN 'Z'. C-SONOB = C-SONOB + lfC3-SALDV + H-SHBLS.

    WHEN humkz1.

      c-umkz1 = lfc3-shbkz.

      c-sums1 = c-sums1 + lfc3-saldv + h-shbls.

    WHEN humkz2.

      c-umkz2 = lfc3-shbkz.

      c-sums2 = c-sums2 + lfc3-saldv + h-shbls.

    WHEN humkz3.

      c-umkz3 = lfc3-shbkz.

      c-sums3 = c-sums3 + lfc3-saldv + h-shbls.

    WHEN humkz4.

      c-umkz4 = lfc3-shbkz.

      c-sums4 = c-sums4 + lfc3-saldv + h-shbls.

    WHEN humkz5.

      c-umkz5 = lfc3-shbkz.

      c-sums5 = c-sums5 + lfc3-saldv + h-shbls.

    WHEN humkz6.

      c-umkz6 = lfc3-shbkz.

      c-sums6 = c-sums6 + lfc3-saldv + h-shbls.

    WHEN humkz7.

      c-umkz7 = lfc3-shbkz.

      c-sums7 = c-sums7 + lfc3-saldv + h-shbls.

    WHEN humkz8.

      c-umkz8 = lfc3-shbkz.

      c-sums8 = c-sums8 + lfc3-saldv + h-shbls.

    WHEN humkz9.

      c-umkz9 = lfc3-shbkz.

      c-sums9 = c-sums9 + lfc3-saldv + h-shbls.

    WHEN humkz10.

      c-umkz10 = lfc3-shbkz.

      c-sums10 = c-sums10 + lfc3-saldv + h-shbls.

    WHEN OTHERS.

      c-sonob = c-sonob + lfc3-saldv + h-shbls.

  ENDCASE.

ENDFORM.                    "SONDER_UMSAETZE

*---------------------------------------------------------------------*

*       FORM POSTEN_RASTERN                                           *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

*  -->  POSTEN_WAERS                                                  *

*---------------------------------------------------------------------*

FORM posten_rastern USING  posten_waers.

  IF rart-net = 'X'.

    IF sortart = '1'.

      PERFORM r USING ntage '1' bsega-dmshb     posten_waers.

    ELSE.

      PERFORM r USING ntage '1' bsega-wrshb     posten_waers.

    ENDIF.

  ENDIF.

  IF rart-skt = 'X'.

    IF sortart = '1'.

      PERFORM r USING stage '2' bsega-dmshb     posten_waers.

    ELSE.

      PERFORM r USING stage '2' bsega-wrshb     posten_waers.

    ENDIF.

  ENDIF.

  IF rart-zhl = 'X'.

    IF sortart = '1'.

      PERFORM r USING ztage '3' bsega-dmshb     posten_waers.

    ELSE.

      PERFORM r USING ztage '3' bsega-wrshb     posten_waers.

    ENDIF.

  ENDIF.

  IF rart-ueb = 'X'.

    IF sortart = '1'.

      PERFORM r USING utage '4' bsega-dmshb     posten_waers.

    ELSE.

      PERFORM r USING utage '4' bsega-wrshb     posten_waers.

    ENDIF.

  ENDIF.

ENDFORM.                    "POSTEN_RASTERN

*---------------------------------------------------------------------*

*       FORM R                                                        *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

*  -->  R_TAGE                                                        *

*  -->  R_ART                                                         *

*  -->  R_BETRAG                                                      *

*  -->  R_WAERS                                                       *

*---------------------------------------------------------------------*

FORM r USING r_tage r_art r_betrag r_waers.

  CLEAR rtab.

  MOVE: bsik-bukrs TO rtab-bukrs,

        '0'        TO rtab-sortk,

        bsik-gsber TO rtab-gsber,

        BSIK-PRCTR TO RTAB-PRCTR,

        r_waers    TO rtab-waers,

        r_art      TO rtab-raart,

        r_betrag   TO rtab-opsum,

        lfa1-lifnr TO rtab-lifnr,

        lfa1-name1 to rtab-name1,

        lfa1-sortl TO rtab-sortl,

        lfa1-land1 TO rtab-land1 ,

        lfb1-akont to rtab-akont ,    " Reco account : 05.01.2016

        lfa1-ort01 to rtab-ort01 ,    " City

        lfa1-regio to rtab-regio .    " Region : 11.01.2015

SELECT  SPRAS LAND1 BLAND BEZEI  FROM T005U INTO TABLE IT_T005U  WHERE  spras = 'E'

                                                    AND   LAND1 = 'IN'

                                                    AND   bland =  rtab-regio .

        LOOP at IT_T005U INTO WA_T005U .

               Move : WA_T005U-BEZEI to rtab-bezei .    " Region DESCRIPTION : 08.01.2016

        ENDLOOP.

  IF r_tage <= rp01.

    MOVE: r_betrag TO rtab-rast1.

    IF r_art = rart.

      MOVE  '1'    TO rasteruu.

    ENDIF.

  ELSE.

    IF r_tage <= rp02

    OR rp07 IS INITIAL.

      MOVE: r_betrag TO rtab-rast2.

      IF r_art = rart.

        MOVE  '2'    TO rasteruu.

      ENDIF.

    ELSE.

      IF r_tage <= rp03

      OR rp08 IS INITIAL.

        MOVE: r_betrag TO rtab-rast3.

        IF r_art = rart.

          MOVE  '3'    TO rasteruu.

        ENDIF.

      ELSE.

        IF r_tage <= rp04

        OR rp09 IS INITIAL.

          MOVE: r_betrag TO rtab-rast4.

          IF r_art = rart.

            MOVE  '4'    TO rasteruu.

          ENDIF.

        ELSE.

          IF r_tage <= rp05

          OR rp10 IS INITIAL.

            MOVE: r_betrag TO rtab-rast5.

            IF r_art = rart.

              MOVE  '5'    TO rasteruu.

            ENDIF.

          ELSE.

            MOVE: r_betrag TO rtab-rast6.

            IF r_art = rart.

              MOVE  '6'    TO rasteruu.

            ENDIF.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

  CLEAR rtab-xguts.

  IF NOT xgetausw IS INITIAL.

    IF bsega-dmshb LT 0.

      rtab-xguts = 'X'.

    ENDIF.

  ENDIF.

  COLLECT rtab.

* Summieren ueber alle Geschaeftsbereiche ---------------------------*

* aber nur wenn SORTART = '1' ----------------------------------------*

* IF SORTART = '1'.

  MOVE: '1'      TO rtab-sortk,

        '**'     TO rtab-gsber.

  COLLECT rtab.

* ENDIF.

ENDFORM.                    "R

*---------------------------------------------------------------------*

*       FORM ANSCHRIFT                                                *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM anschrift.

  DEFINE address_line.

    if not adrs-line&2 is initial.

      lo_writer->row_open( ).

      concatenate text-113 '(&1):' into l_hlp_txt.

      lo_writer->single_write_field( l_hlp_txt ).

      lo_writer->single_write_field( adrs-line&2(35) ).

      lo_writer->row_close( ).

    endif.

  END-OF-DEFINITION.

* PERFORM MAHNDATEN.

  IF NOT lfb1-bukrs IS INITIAL.

    IF NOT konzvers IS INITIAL.

      CHECK xbukrdat = 0.

    ENDIF.

  ENDIF.

  PERFORM obligos.

*    SKIP.

  IF konzvers IS INITIAL

  OR lfb1-bukrs IS INITIAL.

* <<<<<<<<<<<< Anschrift >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    lo_writer->section_write( text-113 ).

    lo_writer->format_normal( ).

    address_line: 1 0, 2 1, 3 2, 4 3, 5 4, 6 5, 7 6, 8 7, 9 8, 10 9.

    lo_writer->uline( ).

  ENDIF.

* <<<<<<<<<<<< Obligos >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  IF NOT ( aobligo IS INITIAL ) .

    lo_writer->section_write( text-116 ).

    lo_writer->format_normal( ).

    LOOP AT aobligo FROM 1 TO 12.

      shbbez = aobligo-ltext.

      asums  = aobligo-oblig.

      lo_writer->row_open( ).

      CONCATENATE shbbez text-161 INTO l_hlp_txt.

      lo_writer->single_write_field( l_hlp_txt ).

      WRITE asums TO l_hlp_txt(12)

                     CURRENCY t001-waers

                     NO-ZERO

                     ROUND faktor

                     DECIMALS stellen.

      lo_writer->single_write_field( l_hlp_txt(12) ).

      lo_writer->row_close( ).

    ENDLOOP.

    lo_writer->uline( ).

  ENDIF.

* <<<<<<<<<<<<<<<<<<<< Umsatzdaten >>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  lo_writer->section_write( text-115 ).

  lo_writer->format_normal( ).

  lo_writer->row_open( ).

  lo_writer->single_write_field( text-122 ).

  WRITE c-kumum TO l_hlp_txt(12)

                 CURRENCY t001-waers

                 NO-ZERO

                 ROUND faktor

                 DECIMALS stellen.

  lo_writer->single_write_field( l_hlp_txt(12) ).

  lo_writer->row_close( ).

  lo_writer->table_close( ).

ENDFORM.                    "ANSCHRIFT

*---------------------------------------------------------------------*

*       FORM RASTER_AUSGABE                                           *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM raster_ausgabe.

* Bei Verdichtung der Geschaeftsbereiche nur das Summenraster ausgeben*

  IF rastverd = '1'.                   "AND VERDICHT > 0.

    CHECK rtab-sortk = '1'.

  ENDIF.

* Das Summen-Raster wird nur ausgegeben, wenn mehr als ein Geschaefts-*

* bereich vorhanden ist. ---------------------------------------------*

  IF rtab-sortk = '1' AND rastverd NE '1'.

    CHECK gbzaehl > 1.

  ENDIF.

  IF  NOT konzvers IS INITIAL

  AND NOT lfb1-bukrs IS INITIAL.

    CHECK xbukrdat NE '2'.

  ENDIF.

  IF rtab-sortk NE '2'.

    IF verdicht NE '6'.

* Bei der ersten Rasterart       , Anzahlungen usw. ausgeben ---------*

      IF rasteruu = rart.

        IF gb-gsber NE '**'.

*   OR GB-GSBER NE '***'.

          gbzaehl = gbzaehl + 1.

        ENDIF.

        IF gb-gsber NE save_gsber

        OR gb-waers NE save_waers.

          MOVE gb-gsber TO save_gsber.

          MOVE gb-waers TO save_waers.

        ENDIF.

        RESERVE 5 LINES.

        IF gb-gsber NE '**'.

          lo_writer->format_subtotal( ).

        ELSE.

          lo_writer->format_total( ).

        ENDIF.

        top-flag = '2'.

        IF sortart = '1' AND konzvers IS INITIAL.

          lo_writer->row_open( ).

          lo_writer->single_write_field( gb-gsber ).

          lo_writer->single_write_field( '' ).

          WRITE rtab-anzah TO l_hlp_txt(11)

                           CURRENCY t001-waers

                           ROUND faktor

                           DECIMALS stellen.

          lo_writer->single_write_field( l_hlp_txt(11) ).

          WRITE rtab-opsum TO l_hlp_txt(12)

                           CURRENCY t001-waers

                           ROUND faktor

                           DECIMALS stellen.

          lo_writer->single_write_field( l_hlp_txt(12) ).

        ELSE.

          lo_writer->row_open( ).

          lo_writer->single_write_field( gb-gsber ).

          lo_writer->single_write_field( gb-waers ).

          WRITE rtab-anzah TO l_hlp_txt(11)

                           CURRENCY gb-waers

                           ROUND faktor

                           DECIMALS stellen.

          lo_writer->single_write_field( l_hlp_txt(11) ).

          WRITE rtab-opsum TO l_hlp_txt(12)

                           CURRENCY gb-waers

                           ROUND faktor

                           DECIMALS stellen.

          lo_writer->single_write_field( l_hlp_txt(12) ).

        ENDIF.

      ENDIF.

      CASE rasteruu.

        WHEN '1'.                                                  " Net-Fae

          lo_writer->single_write_field( i_field = text-019 i_abs_position = 5 ).

        WHEN '2'.                                                  " Skt-Fae

          lo_writer->single_write_field( i_field = text-020 i_abs_position = 5 ).

        WHEN '3'.                                                  " Zhl-Ein

          lo_writer->single_write_field( i_field = text-021 i_abs_position = 5 ).

        WHEN '4'.                                                  " Ueb-Fae

          lo_writer->single_write_field( i_field = text-022 i_abs_position = 5 ).

      ENDCASE.

    ELSE.

      IF verdicht = '6'.

        IF acc_mode IS INITIAL.

          RESERVE 5 LINES.

          top-flag = '2'.

          top-fla2 = 'X'.

          lo_writer->row_open( ).

          lo_writer->format_normal( ).

*          IMPORT regio_temp  TO rtab-bezei FROM MEMORY ID 'MID123' .

          lo_writer->single_write_field( rtab-akont ).   " Reconcillation Account  : 04.01.2015

          lo_writer->single_write_field( rtab-lifnr ).

          lo_writer->single_write_field( rtab-name1 ).

          lo_writer->single_write_field( rtab-land1 ).

          lo_writer->single_write_field( rtab-ort01 ).     " City : 07.01.2016

          lo_writer->single_write_field( rtab-regio ).

          lo_writer->single_write_field( rtab-BEZEI ).

*          lo_writer->single_write_field( 'col-4' ).

          IF sortart = '1' AND konzvers IS INITIAL.

            WRITE rtab-opsum TO l_hlp_txt(12)

                             CURRENCY t001-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(12) ).

          ELSE.

            WRITE rtab-opsum TO l_hlp_txt(12)

                             CURRENCY gb-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(12) ).

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

    IF acc_mode IS INITIAL.

      IF sortart = '1' AND konzvers IS INITIAL.

        DO 6 TIMES VARYING l_raster FROM rtab-rast1 NEXT rtab-rast2.

          WRITE l_raster TO l_hlp_txt(13)

                         CURRENCY t001-waers NO-ZERO

                         ROUND faktor DECIMALS stellen.

          lo_writer->single_write_field( l_hlp_txt(13) ).

        ENDDO.

      ELSE.

        DO 6 TIMES VARYING l_raster FROM rtab-rast1 NEXT rtab-rast2.

          WRITE l_raster TO l_hlp_txt(13)

                         CURRENCY gb-waers NO-ZERO

                         ROUND faktor DECIMALS stellen.

          lo_writer->single_write_field( l_hlp_txt(13) ).

        ENDDO.

      ENDIF.

    ENDIF.

  ENDIF.

  IF NOT acc_mode IS INITIAL.

    IF rastverd = '0'.

      CHECK rtab-sortk = '0'.

    ENDIF.

    CLEAR rtab_alv.

    MOVE-CORRESPONDING rtab TO rtab_alv.

    rtab_alv-adrs1 = adrs-line0.                               "1253468

    rtab_alv-adrs2 = adrs-line1.                               "1253468

    rtab_alv-adrs3 = adrs-line2.                               "1253468

    rtab_alv-adrs4 = adrs-line3.                               "1253468

    IF NOT xgetausw IS INITIAL.

      IF rtab-xguts IS INITIAL.

        rtab_alv-shkzg = 'S'.

      ELSE.

        rtab_alv-shkzg = 'H'.

      ENDIF.

    ENDIF.

    IF rtab-waers IS INITIAL.

      rtab_alv-waers = t001-waers.

    ENDIF.

    IF rtab-raart = 4.

      rtab_alv-raart = 6.

    ENDIF.

    IF      konzvers IS INITIAL

    AND NOT lfb1-bukrs IS INITIAL.

      rtab_alv-bukrs = lfb1-bukrs.

    ENDIF.

    IF NOT rtab_alv-bukrs IS INITIAL.

      rtab_alv-busab = lfb1-busab.

    ENDIF.

*   if ... is initial.

    MOVE c-kumum TO rtab_alv-kumum.

*   endif.

    IF NOT rtab_alv IS INITIAL.

      APPEND rtab_alv.

    ENDIF.

  ENDIF.

  CLEAR top-fla2.

ENDFORM.                    "RASTER_AUSGABE

*---------------------------------------------------------------------*

*       FORM SUM_BUSAB_BUKRS_TOTAL                                    *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM sum_busab_bukrs_total.

  IF rtab-sortk = '0'.

    IF       konzvers   IS INITIAL

    OR ( NOT konzvers   IS INITIAL

    AND  NOT rtab-bukrs IS INITIAL ) .

*-- Summen pro Sachbearbeiter ----------------------------------------*

      MOVE-CORRESPONDING rtab TO rbus.

      MOVE: lfb1-bukrs TO  rbus-bukrs,

            gb-gsber TO  rbus-gsber,

            gb-waers TO  rbus-waers.

      COLLECT rbus.

*-- Gesamtsumme ueber alle Geschaeftsbereiche pro Sachbearb. ---------*

*-- ermitteln, aber nur bei SORTART = '1' ----------------------------*

*   IF SORTART = '1'.

      MOVE: lfb1-bukrs TO  rbus-bukrs,

            '**'     TO  rbus-gsber,

            '1'      TO  rbus-sortk.

      COLLECT rbus.

*   ENDIF.

*-- Summen pro Buchungskreis -----------------------------------------*

      MOVE-CORRESPONDING rtab TO rbuk.

      MOVE: lfb1-bukrs TO  rbuk-bukrs,

            gb-gsber   TO  rbuk-gsber,

            gb-waers   TO  rbuk-waers.

      COLLECT rbuk.

*-- Gesamtsumme ueber alle Geschaeftsbereiche und Sachbearb. ---------*

*-- ermitteln, aber nur bei SORTART = '1' ----------------------------*

*   IF SORTART = '1'.

      MOVE: lfb1-bukrs TO  rbuk-bukrs,

            '**'       TO  rbuk-gsber,

            '1'        TO  rbuk-sortk.

      COLLECT rbuk.

*   ENDIF.

    ENDIF.

*-- Summen fuer Listenteil 2 ermitteln -------------------------------*

    MOVE: lfb1-bukrs TO  rtab-bukrs,

            gb-gsber TO  rtab-gsber,

            gb-waers TO  rtab-waers.

    COLLECT rtab.

*-- Gesamtsumme ueber alle Buchungs- und Geschaeftsbereiche ----------*

*-- ermitteln, aber nur bei SORTART = '1' ----------------------------*

*   IF SORTART = '1'.

*     MOVE: '**'     TO  RTAB-BUKRS,

*           '**'     TO  RTAB-GSBER,

*           '1'      TO  RTAB-SORTK.

*     COLLECT RTAB.

*   ENDIF.

    IF       konzvers   IS INITIAL

    OR ( NOT konzvers   IS INITIAL

    AND      rtab-bukrs IS INITIAL ) .

      MOVE-CORRESPONDING rtab TO rsum.

      IF sortart = '1' AND konzvers IS INITIAL.

        MOVE: t001-waers TO  rsum-waers.

      ENDIF.

      MOVE: '1'        TO  rsum-sortk.

      COLLECT rsum.

    ENDIF.

  ENDIF.

  IF  rtab-sortk = '2'.

* AND GB-GSBER = '***'.

*-- Gesamtumsatz ueber alle Geschaeftsbereiche pro Sachbearb. --------*

*-- ermitteln, aber nur bei SORTART = '1' ----------------------------*

    IF sortart = '1'.

      MOVE-CORRESPONDING rtab TO rbus.

      MOVE: lfb1-bukrs TO  rbus-bukrs,

            gb-gsber   TO  rbus-gsber,

            gb-waers   TO  rbus-waers,

            '2'        TO  rbus-sortk.

      COLLECT rbus.

    ENDIF.

*-- Gesamtumsatz ueber alle Geschaeftsbereiche und Sachbearb. --------*

*-- ermitteln, aber nur bei SORTART = '1' ----------------------------*

    IF sortart = '1'.

      MOVE-CORRESPONDING rtab TO rbuk.

      MOVE: lfb1-bukrs TO  rbuk-bukrs,

            gb-gsber   TO  rbuk-gsber,

            gb-waers   TO  rbuk-waers,

            '2'        TO  rbuk-sortk.

      COLLECT rbuk.

    ENDIF.

  ENDIF.

ENDFORM.                    "SUM_BUSAB_BUKRS_TOTAL

*---------------------------------------------------------------------*

*       FORM EINZELPOSTEN_AUSGABE                                     *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM einzelposten_ausgabe.

  lo_writer->format_normal( ).

  lo_writer->row_open( ).

  lo_writer->single_write_field( lfb1-bukrs ).

  lo_writer->single_write_field( gb-gsber ).

  WRITE tage TO l_hlp_txt(8).

  lo_writer->single_write_field( l_hlp_txt(8) ).

  lo_writer->single_write_field( bsik-umskz ).

  lo_writer->single_write_field( bsik-blart ).

  lo_writer->single_write_field( bsik-belnr ).

  WRITE bsik-buzei TO l_hlp_txt(3).

  lo_writer->single_write_field( l_hlp_txt(3) ).

  WRITE bsega-netdt TO l_hlp_txt(8).

  lo_writer->single_write_field( l_hlp_txt(8) ).

  WRITE bsik-zfbdt TO l_hlp_txt(8).

  lo_writer->single_write_field( l_hlp_txt(8) ).

  WRITE bsik-budat TO l_hlp_txt(8).

  lo_writer->single_write_field( l_hlp_txt(8) ).

  WRITE bsik-bldat TO l_hlp_txt(8).

  lo_writer->single_write_field( l_hlp_txt(8) ).

  lo_writer->single_write_field( bsik-bschl ).

  lo_writer->single_write_field( bsik-zlsch ).

  WRITE bsik-manst NO-ZERO TO l_hlp_txt(1).

  lo_writer->single_write_field( l_hlp_txt(1) ).

  WRITE bsega-dmshb CURRENCY t001-waers TO l_hlp_txt(21).

  lo_writer->single_write_field( l_hlp_txt(21) ).

  lo_writer->single_write_field( bsik-waers ).

  WRITE bsega-wrshb CURRENCY bsik-waers NO-ZERO TO l_hlp_txt(20).

  lo_writer->single_write_field( l_hlp_txt(20) ).

  lo_writer->row_close( ).

ENDFORM.                    "EINZELPOSTEN_AUSGABE

*---------------------------------------------------------------------*

*       FORM RASTER_AUSGABE_BUSAB                                     *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM raster_ausgabe_busab.

  IF rastverd < '2'.

    DETAIL.

    SORT rbus.

    CLEAR gbzaehl.

    CLEAR rastza.

    DESCRIBE TABLE rbus LINES l_hlp_lines.

    l_hlp_i = 0.

    LOOP AT rbus.

      l_hlp_i = l_hlp_i + 1.

* Bei Verdichtung der Geschaeftsbereiche nur das Summenraster ausgeben*

      IF rastverd = '1'.               " AND VERDICHT > 0.

        CHECK rbus-sortk NE '0'.

      ENDIF.

* Das Summen-Raster wird nur ausgegeben, wenn mehr als ein Geschaefts-*

* bereich vorhanden ist. ---------------------------------------------*

      IF rbus-sortk = '1' AND rastverd NE '1'.

        CHECK gbzaehl GT 1.

      ENDIF.

      IF rbus-sortk NE '2'.

        IF rbus-gsber NE '**'.

          lo_writer->format_subtotal( ).

        ELSE.

          lo_writer->format_total( ).

        ENDIF.

* Bei der ersten Rasterart  Anzahlungen usw. ausgeben ----------------*

        rastza = 'X'.

        IF rbus-raart = rart.

          IF rbus-gsber NE '**'.

            gbzaehl = gbzaehl + 1.

          ENDIF.

          RESERVE 5 LINES.

          lo_writer->row_open( ).

          lo_writer->single_write_field( rbus-gsber ).

          IF sortart = '1' AND konzvers IS INITIAL.

            lo_writer->single_write_field( '' ).

            WRITE rbus-anzah TO l_hlp_txt(11)

                             CURRENCY t001-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(11) ).

            WRITE rbus-opsum TO l_hlp_txt(12)

                             CURRENCY t001-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(12) ).

          ELSE.

            lo_writer->single_write_field( rbus-waers ).

            WRITE rbus-anzah TO l_hlp_txt(11)

                             CURRENCY rbus-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(11) ).

            WRITE rbus-opsum TO l_hlp_txt(12)

                             CURRENCY rbus-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(12) ).

          ENDIF.

        ELSE.

          lo_writer->row_open( ).

        ENDIF.

        CASE rbus-raart.

          WHEN '1'.                                                 " Net-Fae

            lo_writer->single_write_field( i_field = text-019 i_abs_position = 5 ).

          WHEN '2'.                                                 " Skt-Fae

            lo_writer->single_write_field( i_field = text-020 i_abs_position = 5 ).

          WHEN '3'.                                                 " Zhl-Fae

            lo_writer->single_write_field( i_field = text-021 i_abs_position = 5 ).

          WHEN '4'.                                                 " Ueb-Fae

            lo_writer->single_write_field( i_field = text-022 i_abs_position = 5 ).

        ENDCASE.

        IF sortart = '1' AND konzvers IS INITIAL.

          DO 6 TIMES VARYING l_raster FROM rbus-rast1 NEXT rbus-rast2.

            WRITE l_raster TO l_hlp_txt(13)

                           CURRENCY t001-waers NO-ZERO

                           ROUND faktor DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(13) ).

          ENDDO.

        ELSE.

          DO 6 TIMES VARYING l_raster FROM rbus-rast1 NEXT rbus-rast2.

            WRITE l_raster TO l_hlp_txt(13)

                           CURRENCY rbus-waers NO-ZERO

                           ROUND faktor DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(13) ).

          ENDDO.

        ENDIF.

      ELSE.

        lo_writer->format_total( ).

        lo_writer->row_open( ).

        CLEAR l_hlp_txt.

        WRITE: rbus-gsber(4) TO l_hlp_txt,

               text-166 TO l_hlp_txt+7,

               rbus-kumum CURRENCY t001-waers TO l_hlp_txt+87(18).

        lo_writer->write_inserted_line( l_hlp_txt ).

        lo_writer->row_close( ib_inserted_line = abap_true ).

      ENDIF.

      AT END OF waers.

        IF l_hlp_i < l_hlp_lines.

          lo_writer->uline( ).

        ELSE.

          lo_writer->table_close( ).

        ENDIF.

      ENDAT.

    ENDLOOP.

  ENDIF.

ENDFORM.                    "RASTER_AUSGABE_BUSAB

*---------------------------------------------------------------------*

*       FORM RASTER_AUSGABE_BUKRB                                     *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM raster_ausgabe_bukrb.

  IF rastverd < '2'.

    DETAIL.

    SORT rbuk.

    CLEAR gbzaehl.

    CLEAR rastza.

    DESCRIBE TABLE rbuk LINES l_hlp_lines.

    l_hlp_i = 0.

    LOOP AT rbuk.

      l_hlp_i = l_hlp_i + 1.

      NEW-LINE.

* Bei Verdichtung der Geschaeftsbereiche nur das Summenraster ausgeben*

      IF rastverd = '1'.               " AND VERDICHT > 0.

        CHECK rbuk-sortk NE '0' .

      ENDIF.

* Das Summen-Raster wird nur ausgegeben, wenn mehr als ein Geschaefts-*

* bereich vorhanden ist. ---------------------------------------------*

      IF rbuk-sortk = '1' AND rastverd NE '1'.

        CHECK gbzaehl GT 1.

      ENDIF.

      IF rbuk-gsber NE '**'.

        lo_writer->format_subtotal( ).

      ELSE.

        lo_writer->format_total( ).

      ENDIF.

      IF rbuk-sortk NE '2'.

* Bei der ersten Rasterart         Anzahlungen usw. ausgeben ---------*

        rastza = 'X'.

        IF rbuk-raart = rart.

          IF rbuk-gsber NE '**'.

            gbzaehl = gbzaehl + 1.

          ENDIF.

          RESERVE 5 LINES.

          lo_writer->row_open( ).

          lo_writer->single_write_field( rbuk-gsber ).

          IF sortart = '1' AND konzvers IS INITIAL.

            lo_writer->single_write_field( '' ).

            WRITE rbuk-anzah TO l_hlp_txt(11)

                             CURRENCY t001-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(11) ).

            WRITE rbuk-opsum TO l_hlp_txt(12)

                             CURRENCY t001-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(12) ).

          ELSE.

            lo_writer->single_write_field( rbuk-waers ).

            WRITE rbuk-anzah TO l_hlp_txt(11)

                             CURRENCY rbuk-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(11) ).

            WRITE rbuk-opsum TO l_hlp_txt(12)

                             CURRENCY rbuk-waers

                             ROUND faktor

                             DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(12) ).

          ENDIF.

        ELSE.

          lo_writer->row_open( ).

        ENDIF.

        CASE rbuk-raart.

          WHEN '1'.                                                 " Net-Fae

            lo_writer->single_write_field( i_field = text-019 i_abs_position = 5 ).

          WHEN '2'.                                                 " Skt-Fae

            lo_writer->single_write_field( i_field = text-020 i_abs_position = 5 ).

          WHEN '3'.                                                 " Zhl-Fae

            lo_writer->single_write_field( i_field = text-021 i_abs_position = 5 ).

          WHEN '4'.                                                 " Alt-Fae

            lo_writer->single_write_field( i_field = text-022 i_abs_position = 5 ).

        ENDCASE.

        IF sortart = '1' AND konzvers IS INITIAL.

          DO 6 TIMES VARYING l_raster FROM rbuk-rast1 NEXT rbuk-rast2.

            WRITE l_raster TO l_hlp_txt(13)

                           CURRENCY t001-waers NO-ZERO

                           ROUND faktor DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(13) ).

          ENDDO.

        ELSE.

          DO 6 TIMES VARYING l_raster FROM rbuk-rast1 NEXT rbuk-rast2.

            WRITE l_raster TO l_hlp_txt(13)

                           CURRENCY rbuk-waers NO-ZERO

                           ROUND faktor DECIMALS stellen.

            lo_writer->single_write_field( l_hlp_txt(13) ).

          ENDDO.

        ENDIF.

      ELSE.

* Ausgabe des Jahresumsatzes -----------------------------------------*

        lo_writer->format_total( ).

        lo_writer->row_open( ).

        CLEAR l_hlp_txt.

        WRITE: rbuk-gsber(4) TO l_hlp_txt,

               text-166 TO l_hlp_txt+7,

               rbuk-kumum CURRENCY t001-waers TO l_hlp_txt+87(18).

        lo_writer->write_inserted_line( l_hlp_txt ).

        lo_writer->row_close( ib_inserted_line = abap_true ).

      ENDIF.

      AT END OF waers.

        IF l_hlp_i < l_hlp_lines.

          lo_writer->uline( ).

        ELSE.

          lo_writer->table_close( ).

        ENDIF.

      ENDAT.

    ENDLOOP.

  ENDIF.

ENDFORM.                    "RASTER_AUSGABE_BUKRB

*---------------------------------------------------------------------*

*       FORM RASTER_AUSGABE_TOTAL                                     *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM raster_ausgabe_total.

  IF rastverd < '2'.

    DETAIL.

* MOVE TEXT-106 TO VARUEB2.

    REPLACE 'RP01' WITH rc01 INTO varueb2.                  "bis   0

    REPLACE 'RP02' WITH rc02 INTO varueb2.                  "bis  20

    REPLACE 'RP03' WITH rc03 INTO varueb2.                  "bis  40

    REPLACE 'RP04' WITH rc04 INTO varueb2.                  "bis  80

    REPLACE 'RP05' WITH rc05 INTO varueb2.                  "bis 100

    REPLACE 'RP06' WITH rc06 INTO varueb1.                  "von   1

    REPLACE 'RP07' WITH rc07 INTO varueb1.                  "von  21

    REPLACE 'RP08' WITH rc08 INTO varueb1.                  "von  41

    REPLACE 'RP09' WITH rc09 INTO varueb1.                  "von  81

    REPLACE 'RP10' WITH rc10 INTO varueb1.                  "von 101

    SORT rsum.

    LOOP AT rsum.

* Bei Verdichtung der Geschaeftsbereiche nur das Summenraster ausgeben*

      IF rastverd = '1' AND verdicht > 0.

        CHECK rsum-sortk = '1'.

      ENDIF.

      FORMAT COLOR COL_TOTAL INTENSIFIED.

* Bei der ersten Rasterart Umsatz, Anzahlungen usw. ausgeben ---------*

      IF rsum-raart = rart.

        RESERVE 5 LINES.

        lo_writer->row_open( ).

        lo_writer->single_write_field( '**' ).

        lo_writer->single_write_field( rsum-waers ).

        WRITE rsum-anzah TO l_hlp_txt(11)

                         CURRENCY rsum-waers

                         ROUND faktor

                         DECIMALS stellen.

        lo_writer->single_write_field( l_hlp_txt(11) ).

        WRITE rsum-opsum TO l_hlp_txt(12)

                         CURRENCY rsum-waers

                         ROUND faktor

                         DECIMALS stellen.

        lo_writer->single_write_field( l_hlp_txt(12) ).

      ELSE.

        lo_writer->row_open( ).

      ENDIF.

      CASE rsum-raart.

        WHEN '1'.                                                 " Net-Fae

          lo_writer->single_write_field( i_field = text-019 i_abs_position = 5 ).

        WHEN '2'.                                                 " Skt-Fae

          lo_writer->single_write_field( i_field = text-020 i_abs_position = 5 ).

        WHEN '3'.                                                 " Zhl-Fae

          lo_writer->single_write_field( i_field = text-021 i_abs_position = 5 ).

        WHEN '4'.                                                 " Ueb-Fae

          lo_writer->single_write_field( i_field = text-022 i_abs_position = 5 ).

      ENDCASE.

      DO 6 TIMES VARYING l_raster FROM rsum-rast1 NEXT rsum-rast2.

        WRITE l_raster TO l_hlp_txt(13)

                       CURRENCY rsum-waers NO-ZERO

                       ROUND faktor DECIMALS stellen.

        lo_writer->single_write_field( l_hlp_txt(13) ).

      ENDDO.

      AT END OF waers.

        lo_writer->uline( ).

      ENDAT.

      lo_writer->row_close( ).

    ENDLOOP.

  ENDIF.

ENDFORM.                    "RASTER_AUSGABE_TOTAL

*---------------------------------------------------------------------*

*       FORM SHB_KENNZEICHEN                                          *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM shb_kennzeichen.

  CLEAR humkz1.

  CLEAR humkz2.

  CLEAR humkz3.

  CLEAR humkz4.

  CLEAR humkz5.

  CLEAR humkz6.

  CLEAR humkz7.

  CLEAR humkz8.

  CLEAR humkz9.

  CLEAR humkz10.

  IF NOT umsatzkz(1) IS INITIAL.

    humkz1 = umsatzkz(1).

  ENDIF.

  IF NOT umsatzkz+1(1) IS INITIAL.

    humkz2 = umsatzkz+1(1).

  ENDIF.

  IF NOT umsatzkz+2(1) IS INITIAL.

    humkz3 = umsatzkz+2(1).

  ENDIF.

  IF NOT umsatzkz+3(1) IS INITIAL.

    humkz4 = umsatzkz+3(1).

  ENDIF.

  IF NOT umsatzkz+4(1) IS INITIAL.

    humkz5 = umsatzkz+4(1).

  ENDIF.

  IF NOT umsatzkz+5(1) IS INITIAL.

    humkz6 = umsatzkz+5(1).

  ENDIF.

  IF NOT umsatzkz+6(1) IS INITIAL.

    humkz7 = umsatzkz+6(1).

  ENDIF.

  IF NOT umsatzkz+7(1) IS INITIAL.

    humkz8 = umsatzkz+7(1).

  ENDIF.

  IF NOT umsatzkz+8(1) IS INITIAL.

    humkz9 = umsatzkz+8(1).

  ENDIF.

  IF NOT umsatzkz+9(1) IS INITIAL.

    humkz10 = umsatzkz+9(1).

  ENDIF.

ENDFORM.                    "SHB_KENNZEICHEN

*---------------------------------------------------------------------*

*       FORM SHBKZ_PRUEFEN                                            *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM shbkz_pruefen.

  CLEAR flag1.

  SELECT * FROM tbsl

    WHERE koart = 'K'.

    IF NOT tbsl-xsonu IS INITIAL.

      SELECT * FROM tbslt

        WHERE bschl = tbsl-bschl

        AND   umskz = char1.

        flag1 = 'X'.

      ENDSELECT.

    ENDIF.

  ENDSELECT.

  IF NOT flag1 IS INITIAL.

    SELECT SINGLE * FROM t074u

      WHERE koart = 'K'

      AND   umskz = char1.

    IF NOT t074u-merkp IS INITIAL.

      IF sy-batch IS INITIAL.

        SET CURSOR FIELD 'UMSATZKZ'.

      ENDIF.

      MESSAGE w376 WITH char1 'D'.

    ENDIF.

    SELECT SINGLE * FROM t074t

      WHERE spras = sy-langu

      AND   koart = 'K'

      AND   shbkz = char1.

    IF sy-subrc = 0.

      bezshb-shbkz = t074t-shbkz.

      bezshb-ltext = t074t-ltext.

      APPEND bezshb.

    ELSE.

      CLEAR flag1.

    ENDIF.

  ENDIF.

  IF flag1 IS INITIAL.

    IF sy-batch IS INITIAL.

      SET CURSOR FIELD 'UMSATZKZ'.

    ENDIF.

    MESSAGE w375 WITH char1 'D'.

  ENDIF.

ENDFORM.                    "SHBKZ_PRUEFEN

*---------------------------------------------------------------------*

*       FORM OBLIGOS                                                  *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM obligos.

  CLEAR aobligo.

  REFRESH aobligo.

  IF NOT c-saldo IS INITIAL.

    CLEAR aobligo.

    MOVE '1' TO aobligo-obart.

    MOVE c-saldo TO aobligo-oblig.

    WRITE text-117 TO aobligo-ltext.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums1 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz1 TO aobligo-shbkz.

    MOVE c-sums1 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz1.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums2 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz2 TO aobligo-shbkz.

    MOVE c-sums2 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz2.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums3 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz3 TO aobligo-shbkz.

    MOVE c-sums3 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz3.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums4 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz4 TO aobligo-shbkz.

    MOVE c-sums4 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz4.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums5 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz5 TO aobligo-shbkz.

    MOVE c-sums5 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz5.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums6 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz6 TO aobligo-shbkz.

    MOVE c-sums6 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz6.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums7 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz7 TO aobligo-shbkz.

    MOVE c-sums7 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz7.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums8 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz8 TO aobligo-shbkz.

    MOVE c-sums8 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz8.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums9 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz9 TO aobligo-shbkz.

    MOVE c-sums9 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz9.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sums10 IS INITIAL.

    CLEAR aobligo.

    MOVE '2' TO aobligo-obart.

    MOVE c-umkz10 TO aobligo-shbkz.

    MOVE c-sums10 TO aobligo-oblig.

    LOOP AT bezshb

      WHERE shbkz = c-umkz10.

      MOVE bezshb-ltext TO aobligo-ltext.

    ENDLOOP.

    APPEND aobligo.

  ENDIF.

  IF NOT c-sonob IS INITIAL.

    CLEAR aobligo.

    MOVE '3' TO aobligo-obart.

    MOVE c-sonob TO aobligo-oblig.

    WRITE text-152 TO aobligo-ltext.

    APPEND aobligo.

  ENDIF.

  SORT aobligo.

ENDFORM.                    "OBLIGOS

*----- Modifikation für Überfälligkeitsprüfung

FORM einzelposten_sichern.

* CLEAR HBKPF.

* MOVE-CORRESPONDING BKPF TO HBKPF.

* COLLECT HBKPF.

* CLEAR HBSEG.

* MOVE-CORRESPONDING BSEG  TO HBSEG.

* MOVE-CORRESPONDING BSEGA TO HBSEG.

* APPEND  HBSEG.

  CLEAR hbsik.

  MOVE-CORRESPONDING bsik  TO hbsik.

  MOVE-CORRESPONDING bsega TO hbsik.

  APPEND  hbsik.

ENDFORM.                    "EINZELPOSTEN_SICHERN

*---------------------------------------------------------------------*

*       FORM EINZELPOSTEN_EXTRACT                                     *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM einzelposten_extract.

  LOOP AT hbsik

    WHERE bukrs = lfb1-bukrs.

* LOOP AT HBKPF.

*   CLEAR BKPF.

*   MOVE-CORRESPONDING HBKPF TO BKPF.

*   LOOP AT HBSEG

*     WHERE BUKRS = BKPF-BUKRS

*     AND   BELNR = BKPF-BELNR

*     AND   GJAHR = BKPF-GJAHR.

*     CLEAR BSEG.

*     CLEAR BSEGA.

*     MOVE-CORRESPONDING HBSEG TO BSEG.

*     MOVE-CORRESPONDING HBSEG TO BSEGA.

    CLEAR bsik.

    CLEAR bsega.

    MOVE-CORRESPONDING hbsik TO bsik.

    MOVE-CORRESPONDING hbsik TO bsega.

    IF NOT pzuor IS INITIAL.

      tage = hbsik-utage.

    ELSE.

      tage = kd_stida - bsega-netdt.

    ENDIF.

    IF tage <= rp01.

      MOVE  '1'    TO rasteruu.

    ELSE.

      IF tage <= rp02

      OR rp07 IS INITIAL.

        MOVE  '2'    TO rasteruu.

      ELSE.

        IF tage <= rp03

        OR rp08 IS INITIAL.

          MOVE  '3'    TO rasteruu.

        ELSE.

          IF tage <= rp04

          OR rp09 IS INITIAL.

            MOVE  '4'    TO rasteruu.

          ELSE.

            IF tage <= rp05.

              MOVE  '5'    TO rasteruu.

            ELSE.

              MOVE  '6'    TO rasteruu.

            ENDIF.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

    IF sortart = '1'.

      MOVE space    TO gb-waers.

    ELSE.

      MOVE bsik-waers TO gb-waers.

    ENDIF.

    MOVE   '3'    TO satzart.

    MOVE   '0'    TO rtab-sortk.

    MOVE bsik-gsber TO gb-gsber.

    MOVE bsega-dmshb TO shbetrag.

*------Der Fremdwährungsbetrag soll nur Übernommen werden, wenn sich

*----- die WÄHRUNG VON DER HAUSWÄHRUNG UNTERSCHEIDET.

    IF bsik-waers EQ t001-waers.

      MOVE space TO bsega-wrshb.

    ENDIF.

    EXTRACT einzelposten.

*   ENDLOOP.

* ENDLOOP.

  ENDLOOP.

ENDFORM.                    "EINZELPOSTEN_EXTRACT

*---------------------------------------------------------------------*

*       FORM EINZELPOSTEN_SAVE                                        *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM einzelposten_save.

  CLEAR hbsik.

  CLEAR refbl.

  MOVE-CORRESPONDING bsik  TO hbsik .

  MOVE-CORRESPONDING bsega TO hbsik.

  MOVE ntage TO hbsik-ntage.

  MOVE stage TO hbsik-stage.

  MOVE ztage TO hbsik-ztage.

  MOVE utage TO hbsik-utage.

  APPEND hbsik.

********************************************   custom code lines

IF HBSIK-PRCTR EQ ' '.

   SELECT   DOCNR

            RBUKRS

            PRCTR

            GJAHR

            BELNR

            BUZEI

            FROM FAGLFLEXA INTO  TABLE IT_FAGLFLEXA   WHERE  DOCNR = HBSIK-BELNR

                                                           AND  GJAHR = HBSIK-GJAHR

                                                           AND  BUZEI = HBSIK-BUZEI

                                                           AND  PRCTR IN P_PRCTR.

*IF SY-SUBRC = 0.

*  HBSIK-PRCTR = WA_FAGLFLEXA-PRCTR.

*  APPEND HBSIK.

*ENDIF.

  LOOP AT HBSIK .

    READ TABLE IT_FAGLFLEXA INTO WA_FAGLFLEXA WITH KEY  DOCNR = HBSIK-BELNR

                                                        GJAHR = HBSIK-GJAHR

                                                        BUZEI = HBSIK-BUZEI.

    IF SY-SUBRC EQ 0.

         HBSIK-PRCTR  =  WA_FAGLFLEXA-PRCTR.

         MODIFY HBSIK .

    ENDIF.

ENDLOOP.

ENDIF.

*******  end of custom code lines

*****************************************************

************************************************************

  MOVE-CORRESPONDING bsik  TO refbl.

  MOVE ntage TO refbl-ntage.

  MOVE stage TO refbl-stage.

  MOVE ztage TO refbl-ztage.

  MOVE utage TO refbl-utage.

  APPEND refbl.

*************************** custom code lines

  IF REFBL-PRCTR EQ ' '.

    SELECT  DOCNR

            RBUKRS

            PRCTR

            GJAHR

            BELNR

            BUZEI

            FROM FAGLFLEXA INTO TABLE IT1_FAGLFLEXA  WHERE  DOCNR = REFBL-BELNR

                                                           AND  GJAHR = REFBL-GJAHR

                                                           AND  BUZEI = REFBL-BUZEI.

  LOOP AT REFBL.

    READ TABLE IT1_FAGLFLEXA INTO WA_FAGLFLEXA1 WITH KEY DOCNR = REFBL-BELNR

                                                         GJAHR = REFBL-GJAHR

                                                         BUZEI = REFBL-BUZEI.

    IF SY-SUBRC EQ 0.

         REFBL-PRCTR  =  WA_FAGLFLEXA1-PRCTR.

         MODIFY REFBL.

    ENDIF.

  ENDLOOP.

  ENDIF.

*******  end of custom code lines

ENDFORM.                    "EINZELPOSTEN_SAVE

FORM HBSIK_SCREEN_FILTER.

*

IF P_PRCTR IS NOT INITIAL.

DELETE HBSIK WHERE PRCTR NOT IN P_PRCTR.

*

*LOOP AT HBSIK WHERE PRCTR IN P_PRCTR.

*

*      MOVE-CORRESPONDING HBSIK TO HBSIK1.

*      APPEND HBSIK1.

*

*ENDLOOP.

*

*CLEAR HBSIK.

*REFRESH HBSIK.

*

*HBSIK[]  =  HBSIK1[].

*

*REFRESH HBSIK1.

*CLEAR   HBSIK1.

ENDIF.

ENDFORM.

*---------------------------------------------------------------------*

*       FORM EINZELPOSTEN_LINK                                        *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM einzelposten_link.

  LOOP AT hbsik

    WHERE rebzg NE space .  "AND PRCTR =  P_PRCTR.

    LOOP AT refbl

      WHERE bukrs = hbsik-bukrs

      AND   belnr = hbsik-rebzg

      AND   gjahr = hbsik-rebzj

      AND   buzei = hbsik-rebzz.

*      AND   PRCTR = HBSIK-PRCTR.

      hbsik-ntage = refbl-ntage.

      hbsik-stage = refbl-stage.

      hbsik-ztage = refbl-ztage.

      hbsik-utage = refbl-utage.

      MODIFY hbsik.

    ENDLOOP.

  ENDLOOP.

ENDFORM.                    "EINZELPOSTEN_LINK

*---------------------------------------------------------------------*

*       FORM EINZELPOSTEN_PROC                                        *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM einzelposten_proc.

  LOOP AT hbsik

    WHERE bukrs = lfb1-bukrs.

    IF t001-bukrs NE lfb1-bukrs.

      READ TABLE ht001 WITH KEY bukrs = lfb1-bukrs.

      t001 = ht001.

    ENDIF.

    CLEAR bsik.

    CLEAR bsega.

    MOVE-CORRESPONDING hbsik TO bsik.

    MOVE-CORRESPONDING hbsik TO bsega.

    ntage =  hbsik-ntage.

    stage =  hbsik-stage.

    ztage =  hbsik-ztage.

    utage =  hbsik-utage.

* die Einzelposten werden nach den Tagen der ersten Rasterart --------*

* sortiert -----------------------------------------------------------*

    IF rart-net = 'X'.

      tage = ntage.

    ELSE.

      IF rart-skt = 'X'.

        tage = stage.

      ELSE.

        IF rart-zhl = 'X'.

          tage = ztage.

        ELSE.

          IF rart-ueb = 'X'.

            tage = utage.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

    CASE bsik-umsks.

*--------------- Anzahlungen sammeln ---------------------------------*

*--------------- auch wenn nicht von aussen abgegrenzt ---------------*

      WHEN 'A'.

        CLEAR rtab.

        IF bsik-bstat NE 'S'.

          MOVE: bsik-bukrs TO rtab-bukrs,

                '0'      TO rtab-sortk,

                bsik-gsber TO rtab-gsber,

                rart     TO rtab-raart.

          IF sortart = '2'.

            MOVE bsik-waers TO rtab-waers.

            MOVE bsega-wrshb TO rtab-anzah.

          ELSE.

            IF NOT konzvers IS INITIAL.

              MOVE t001-waers TO rtab-waers.

              MOVE bsega-dmshb TO rtab-anzah.

            ELSE.

              MOVE bsega-dmshb TO rtab-anzah.

            ENDIF.

          ENDIF.

          CLEAR rtab-xguts.

          IF NOT xgetausw IS INITIAL.

            IF bsega-dmshb LT 0.

              rtab-xguts = 'X'.

            ENDIF.

          ENDIF.

          MOVE:

          lfa1-lifnr TO rtab-lifnr,

          lfa1-sortl TO rtab-sortl,

          lfa1-name1 to rtab-name1,

          lfa1-land1 TO rtab-land1,

          lfb1-akont to rtab-akont,      " Reco . account : 05.01.2016

          lfa1-ort01 to rtab-ort01,      " City  : 07.01.2016

          lfa1-regio to rtab-regio.

        SELECT  SPRAS LAND1 BLAND BEZEI  FROM T005U INTO TABLE IT_T005U  WHERE  spras = 'E'

                                                    AND   LAND1 = 'IN'

                                                    AND   bland =  rtab-regio .

        LOOP at IT_T005U INTO WA_T005U .

               Move : WA_T005U-BEZEI to rtab-bezei .    " Region DESCRIPTION : 08.01.2016

        ENDLOOP.

        COLLECT rtab.

*--------------- Summieren ueber alle Geschaeftsbereiche -------------*

          MOVE: '1'      TO rtab-sortk,

                '**'     TO rtab-gsber.

          COLLECT rtab.

        ENDIF.

    ENDCASE.

    CHECK: budat,

           bldat,

           netdt.

    sel-postn = 'J'.

    IF sortart = '1'.

      IF konzvers IS INITIAL.

        PERFORM posten_rastern USING space.

        MOVE space    TO gb-waers.

      ELSE.

        PERFORM posten_rastern USING t001-waers.

        MOVE t001-waers TO gb-waers.

      ENDIF.

    ELSE.

      PERFORM posten_rastern USING bsik-waers.

      MOVE bsik-waers TO gb-waers.

    ENDIF.

*----- Saldoberechnung Überfälligkeitsprüfung

    IF  utage GT '0'

    AND utage IN vertage.

      IF NOT xnurford IS INITIAL.

        IF bsega-dmshb GT '0'.         "Falls keine Habenpositionen

          h-sald2        = h-sald2        + bsega-dmshb.

        ENDIF.                         "bei der berechnung berück-

      ELSE.                            "sichtigt werden sollen

        h-sald2        = h-sald2        + bsega-dmshb.

      ENDIF.

    ENDIF.                             "hier die Sterne entfernen

*---- nur bei Verdichtungsstufe '0' werden EINZELPOSTEN extrahiert --*

    IF verdicht = '0'.

*       MOVE   '3'    TO SATZART.

*       MOVE bsik-GSBER TO GB-GSBER.

*       MOVE BSEGA-DMSHB TO SHBETRAG.

*------Der Fremdwährungsbetrag soll nur Übernommen werden, wenn sich

*----- die WÄHRUNG VON DER HAUSWÄHRUNG UNTERSCHEIDET.

*       IF bsik-WAERS EQ T001-WAERS.

*         MOVE SPACE TO BSEGA-WRSHB.

*       ENDIF.

*       EXTRACT EINZELPOSTEN.

      IF  utage GT '0'

      AND utage IN vertage.

      ELSE.

        DELETE hbsik.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.                    "EINZELPOSTEN_PROC

*---------------------------------------------------------------------*

*       FORM SUMM_C3                                                  *

*---------------------------------------------------------------------*

*       ........                                                      *

*---------------------------------------------------------------------*

FORM summ_c3.

  c3-saldo     = c3-saldo + c-saldo.

  c3-umkz1     = c-umkz1.

  c3-sums1     = c3-sums1 + c-sums1.

  c3-umkz2     = c-umkz2.

  c3-sums2     = c3-sums2 + c-sums2.

  c3-umkz3     = c-umkz3.

  c3-sums3     = c3-sums3 + c-sums3.

  c3-umkz4     = c-umkz4.

  c3-sums4     = c3-sums4 + c-sums4.

  c3-umkz5     = c-umkz5.

  c3-sums5     = c3-sums5 + c-sums5.

  c3-umkz6     = c-umkz6.

  c3-sums6     = c3-sums6 + c-sums6.

  c3-umkz7     = c-umkz7.

  c3-sums7     = c3-sums7 + c-sums7.

  c3-umkz8     = c-umkz8.

  c3-sums8     = c3-sums8 + c-sums8.

  c3-umkz9     = c-umkz9.

  c3-sums9     = c3-sums9 + c-sums9.

  c3-umkz10    = c-umkz10.

  c3-sums10    = c3-sums10 + c-sums10.

  c3-sonob     = c3-sonob  + c-sonob.

  c3-babzg     = c3-babzg  + c-babzg.

  c3-uabzg     = c3-uabzg  + c-uabzg.

  c3-kzins     = c3-kzins  + c-kzins.

  c3-kumum     = c3-kumum  + c-kumum.

  c3-kumag     = c3-kumag  + c-kumag.

  c3-agobli    = c3-agobli + c-agobli.

ENDFORM.                                                    "SUMM_C3

*&--------------------------------------------------------------------*

*&      Form  RASTER_AUSGABE_ALV_GRID

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM raster_ausgabe_alv_grid.

  tittext = text-300.

  WRITE kd_stida TO dattext.

  REPLACE '&' WITH dattext INTO tittext.

  g_grid_title = tittext.

  g_repid = sy-repid.

  g_save = 'A'.

  PERFORM fieldcat_init USING gt_fieldcat[].

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

*     I_INTERFACE_CHECK                 = ' '

*     I_BYPASSING_BUFFER                = ' '

*     I_BUFFER_ACTIVE                   = ' '

      i_callback_program                = g_repid

*     I_CALLBACK_PF_STATUS_SET          = G_STATUS_SET

      i_callback_user_command           = g_user_command

*     I_CALLBACK_TOP_OF_PAGE            = ' '

*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '

*     I_CALLBACK_HTML_END_OF_LIST       = ' '

*     I_STRUCTURE_NAME                  =

*     I_BACKGROUND_ID                   = ' '

      i_grid_title                      = g_grid_title

*     I_GRID_SETTINGS                   =

*     IS_LAYOUT                         =

      it_fieldcat                       = gt_fieldcat[]

*     IT_EXCLUDING                      =

*     IT_SPECIAL_GROUPS                 =

*     IT_SORT                           =

*     IT_FILTER                         =

*     IS_SEL_HIDE                       =

      i_default                         = 'X'

      i_save                            =  g_save

      is_variant                        =  gs_variant

*     IT_EVENTS                         =

*     IT_EVENT_EXIT                     =

*     IS_PRINT                          =

*     IS_REPREP_ID                      =

*     I_SCREEN_START_COLUMN             = 0

*     I_SCREEN_START_LINE               = 0

*     I_SCREEN_END_COLUMN               = 0

*     I_SCREEN_END_LINE                 = 0

*     IT_ALV_GRAPHICS                   =

*     IT_HYPERLINK                      =

*     IT_ADD_FIELDCAT                   =

*     IT_EXCEPT_QINFO                   =

*   IMPORTING

*     E_EXIT_CAUSED_BY_CALLER           =

*     ES_EXIT_CAUSED_BY_USER            =

    TABLES

      t_outtab                          = rtab_alv

*   EXCEPTIONS

*     PROGRAM_ERROR                     = 1

*     OTHERS                            = 2

            .

  IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

ENDFORM.                    "RASTER_AUSGABE_ALV_GRID

*&---------------------------------------------------------------------*

*&      Form  FIELDCAT_INIT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_GT_FIELDCAT[]  text

*----------------------------------------------------------------------*

FORM fieldcat_init

       USING rt_fieldcat TYPE slis_t_fieldcat_alv.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'BUKRS'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'BUKRS'.

  ls_fieldcat-ref_tabname   = 'BSIK'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'LIFNR'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'LIFNR'.

  ls_fieldcat-ref_tabname   = 'LFA1'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'BUSAB'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'BUSAB'.

  ls_fieldcat-ref_tabname   = 'LFB1'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'SORTL'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'SORTL'.

  ls_fieldcat-ref_tabname   = 'LFA1'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'LAND1'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'LAND1'.

  ls_fieldcat-ref_tabname   = 'LFA1'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'GSBER'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'GSBER'.

  ls_fieldcat-ref_tabname   = 'BSIK'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'WAERS'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'WAERS'.

  ls_fieldcat-ref_tabname   = 'BSIK'.

  APPEND ls_fieldcat TO  rt_fieldcat.

*  CLEAR LS_FIELDCAT.

*  LS_FIELDCAT-TABNAME       = G_TABNAME.

*  LS_FIELDCAT-FIELDNAME     = 'HWAER'.

** LS_FIELDCAT-KEY           = ' '.        "sets key field

*  LS_FIELDCAT-REF_FIELDNAME = 'RF140'.

*  LS_FIELDCAT-REF_TABNAME   = 'HWAER'.

*  APPEND LS_FIELDCAT TO  RT_FIELDCAT.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'RAART'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'RAART'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'SHKZG'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'SHKZG'.

  ls_fieldcat-ref_tabname   = 'BSIK'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'KUMUM'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'KUMUMHW'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  ls_fieldcat-cfieldname    = 'WAERS'.

  ls_fieldcat-no_zero       = 'X'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'ANZAH'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'ANZBTHW'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  ls_fieldcat-cfieldname    = 'WAERS'.

  ls_fieldcat-no_zero       = 'X'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'OPSUM'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'GSALDD'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  ls_fieldcat-cfieldname    = 'WAERS'.

  ls_fieldcat-no_zero       = 'X'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  WRITE: rp01 TO rc01.

  WRITE: rp02 TO rc02.

  WRITE: rp03 TO rc03.

  WRITE: rp04 TO rc04.

  WRITE: rp05 TO rc05.

  WRITE: rp06 TO rc06.

  WRITE: rp07 TO rc07.

  WRITE: rp08 TO rc08.

  WRITE: rp09 TO rc09.

  WRITE: rp10 TO rc10.

  CLEAR uebtext.

  CLEAR uektext.

  uebtext = text-201.

  uektext = text-201.

  REPLACE 'RP01' WITH rc01 INTO uebtext.

  REPLACE 'RP01' WITH rc01 INTO uektext.

  CONDENSE uebtext.

  CONDENSE uektext.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'RAST1'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'RAST1'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  ls_fieldcat-seltext_s     = uebtext.

  ls_fieldcat-seltext_m     = uebtext.

  ls_fieldcat-seltext_l     = uebtext.

* LS_FIELDCAT-REPTEXT_DDIC  = uebtext.

  ls_fieldcat-cfieldname    = 'WAERS'.

  ls_fieldcat-no_zero       = 'X'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR uebtext.

  CLEAR uektext.

  IF NOT rp06 IS INITIAL.

    IF rp02 IS INITIAL.

      uektext = text-206.

      REPLACE 'RP06' WITH rc06 INTO uektext.

    ELSE.

      uebtext = text-206.

      uektext      = rc06(3).

      uektext+4(1) = '-'.

    ENDIF.

  ENDIF.

  IF NOT rp02 IS INITIAL.

    uebtext+11(11) = text-202.

    IF NOT rp06 IS INITIAL.

      uektext+6 = rc02(3).

    ENDIF.

  ENDIF.

  REPLACE 'RP02' WITH rc02 INTO uebtext.

  REPLACE 'RP06' WITH rc06 INTO uebtext.

  CONDENSE uebtext.

  CONDENSE uektext.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'RAST2'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'RAST2'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  ls_fieldcat-seltext_s     = uektext.

  ls_fieldcat-seltext_m     = uebtext.

  ls_fieldcat-seltext_l     = uebtext.

* LS_FIELDCAT-REPTEXT_DDIC  = uebtext.

  ls_fieldcat-cfieldname    = 'WAERS'.

  ls_fieldcat-no_zero       = 'X'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR uebtext.

  CLEAR uektext.

  IF NOT rp07 IS INITIAL.

    IF rp03 IS INITIAL.

      uektext = text-207.

      REPLACE 'RP07' WITH rc07 INTO uektext.

    ELSE.

      uebtext = text-207.

      uektext      = rc07(3).

      uektext+4(1) = '-'.

    ENDIF.

  ENDIF.

  IF NOT rp03 IS INITIAL.

    uebtext+11(11) = text-203.

    IF NOT rp07 IS INITIAL.

      uektext+6 = rc03(3).

    ENDIF.

  ENDIF.

  REPLACE 'RP03' WITH rc03 INTO uebtext.

  REPLACE 'RP07' WITH rc07 INTO uebtext.

  CONDENSE uebtext.

  CONDENSE uektext.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'RAST3'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'RAST3'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  ls_fieldcat-seltext_s     = uektext.

  ls_fieldcat-seltext_m     = uebtext.

  ls_fieldcat-seltext_l     = uebtext.

* LS_FIELDCAT-REPTEXT_DDIC  = uebtext.

  ls_fieldcat-cfieldname    = 'WAERS'.

  ls_fieldcat-no_zero       = 'X'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR uebtext.

  CLEAR uektext.

  IF NOT rp08 IS INITIAL.

    IF rp04 IS INITIAL.

      uektext = text-208.

      REPLACE 'RP08' WITH rc08 INTO uektext.

    ELSE.

      uebtext = text-208.

      uektext      = rc08(3).

      uektext+4(1) = '-'.

    ENDIF.

  ENDIF.

  IF NOT rp04 IS INITIAL.

    uebtext+11(11) = text-204.

    IF NOT rp08 IS INITIAL.

      uektext+6 = rc04(3).

    ENDIF.

  ENDIF.

  REPLACE 'RP04' WITH rc04 INTO uebtext.

  REPLACE 'RP08' WITH rc08 INTO uebtext.

  CONDENSE uebtext.

  CONDENSE uektext.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'RAST4'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'RAST4'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  ls_fieldcat-seltext_s     = uektext.

  ls_fieldcat-seltext_m     = uebtext.

  ls_fieldcat-seltext_l     = uebtext.

* LS_FIELDCAT-REPTEXT_DDIC  = uebtext.

  ls_fieldcat-cfieldname    = 'WAERS'.

  ls_fieldcat-no_zero       = 'X'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR uebtext.

  CLEAR uektext.

  IF NOT rp09 IS INITIAL.

    IF rp05 IS INITIAL.

      uektext = text-209.

      REPLACE 'RP09' WITH rc09 INTO uektext.

    ELSE.

      uebtext = text-209.

      uektext      = rc09(3).

      uektext+4(1) = '-'.

    ENDIF.

  ENDIF.

  IF NOT rp05 IS INITIAL.

    uebtext+11(11) = text-205.

    IF NOT rp09 IS INITIAL.

      uektext+6 = rc05(3).

    ENDIF.

  ENDIF.

  REPLACE 'RP05' WITH rc05 INTO uebtext.

  REPLACE 'RP09' WITH rc09 INTO uebtext.

  CONDENSE uebtext.

  CONDENSE uektext.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'RAST5'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'RAST5'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  ls_fieldcat-seltext_s     = uektext.

  ls_fieldcat-seltext_m     = uebtext.

  ls_fieldcat-seltext_l     = uebtext.

* LS_FIELDCAT-REPTEXT_DDIC  = uebtext.

  ls_fieldcat-cfieldname    = 'WAERS'.

  ls_fieldcat-no_zero       = 'X'.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR uebtext.

  CLEAR uektext.

  IF NOT rp10 IS INITIAL.

    uebtext = text-210.

    uektext = text-210.

  ENDIF.

  REPLACE 'RP10' WITH rc10 INTO uebtext.

  REPLACE 'RP10' WITH rc10 INTO uektext.

  CONDENSE uebtext.

  CONDENSE uektext.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname       = g_tabname.

  ls_fieldcat-fieldname     = 'RAST6'.

* LS_FIELDCAT-KEY           = ' '.        "sets key field

  ls_fieldcat-ref_fieldname = 'RAST6'.

  ls_fieldcat-ref_tabname   = 'RF140'.

  ls_fieldcat-seltext_s     = uebtext.

  ls_fieldcat-seltext_m     = uebtext.

  ls_fieldcat-seltext_l     = uebtext.

* LS_FIELDCAT-REPTEXT_DDIC  = uebtext.

  ls_fieldcat-cfieldname    = 'WAERS'.

  ls_fieldcat-no_zero       = 'X'.

  APPEND ls_fieldcat TO  rt_fieldcat.

*** Address info                                               "1253468

  uebtext = text-113.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname   = g_tabname.

  ls_fieldcat-fieldname = 'ADRS1'.

  uebtext+9 = '(1)'.

  ls_fieldcat-seltext_s = uebtext.

  ls_fieldcat-seltext_m = uebtext.

  ls_fieldcat-seltext_l = uebtext.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname   = g_tabname.

  ls_fieldcat-fieldname = 'ADRS2'.

  uebtext+9 = '(2)'.

  ls_fieldcat-seltext_s = uebtext.

  ls_fieldcat-seltext_m = uebtext.

  ls_fieldcat-seltext_l = uebtext.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname   = g_tabname.

  ls_fieldcat-fieldname = 'ADRS3'.

  uebtext+9 = '(3)'.

  ls_fieldcat-seltext_s = uebtext.

  ls_fieldcat-seltext_m = uebtext.

  ls_fieldcat-seltext_l = uebtext.

  APPEND ls_fieldcat TO  rt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-tabname   = g_tabname.

  ls_fieldcat-fieldname = 'ADRS4'.

  uebtext+9 = '(4)'.

  ls_fieldcat-seltext_s = uebtext.

  ls_fieldcat-seltext_m = uebtext.

  ls_fieldcat-seltext_l = uebtext.

  APPEND ls_fieldcat TO  rt_fieldcat.

*** Address info                                               "1253468

ENDFORM.                    " FIELDCAT_INIT

*&---------------------------------------------------------------------*

*&      Form  USER_COMMAND

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  R_UCOMM

*  -->  RS_SELFIELD

*----------------------------------------------------------------------*

FORM user_command USING r_ucomm LIKE sy-ucomm

                 rs_selfield TYPE slis_selfield.

  DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.

  CASE r_ucomm.

    WHEN '&IC1'.

      READ TABLE rtab_alv INTO rtab_alv INDEX rs_selfield-tabindex.

      lt_seltab-selname = 'KD_LIFNR'.

      lt_seltab-sign    = 'I'.

      lt_seltab-option  = 'EQ'.

      lt_seltab-low     = rtab_alv-lifnr.

      APPEND lt_seltab.

      IF NOT rtab_alv-bukrs IS INITIAL.

        lt_seltab-selname = 'KD_BUKRS'.

        lt_seltab-sign    = 'I'.

        lt_seltab-option  = 'EQ'.

        lt_seltab-low     = rtab_alv-bukrs.

        APPEND lt_seltab.

      ENDIF.

      lt_seltab-selname = 'X_OPSEL'.

      lt_seltab-sign    = 'I'.

      lt_seltab-option  = 'EQ'.

      lt_seltab-low     = 'X'.

      APPEND lt_seltab.

      lt_seltab-selname = 'PA_STIDA'.

      lt_seltab-sign    = 'I'.

      lt_seltab-option  = 'EQ'.

      lt_seltab-low     = kd_stida.

      APPEND lt_seltab.

      lt_seltab-selname = 'X_NORM'.

      lt_seltab-sign    = 'I'.

      lt_seltab-option  = 'EQ'.

      lt_seltab-low     = 'X'.

      APPEND lt_seltab.

      lt_seltab-selname = 'X_SHBV'.

      lt_seltab-sign    = 'I'.

      lt_seltab-option  = 'EQ'.

      lt_seltab-low     = 'X'.

      APPEND lt_seltab.

      lt_seltab-selname = 'PA_GRID'.

      lt_seltab-sign    = 'I'.

      lt_seltab-option  = 'EQ'.

      lt_seltab-low     = 'Y'.

      APPEND lt_seltab.

      SUBMIT rfitemap WITH SELECTION-TABLE lt_seltab

                      AND  RETURN.

  ENDCASE.

ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*

*&      Form  F4_FOR_s_lvar

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_s_lvar  text

*----------------------------------------------------------------------*

FORM f4_for_s_lvar CHANGING  i_variant LIKE disvariant.

  DATA: exit.

  DATA: e_variant LIKE disvariant.

  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

    EXPORTING

      is_variant    = i_variant

      i_save        = 'A'

    IMPORTING

      e_exit        = exit

      es_variant    = e_variant

    EXCEPTIONS

      program_error = 3

      OTHERS        = 3.

  IF sy-subrc = 0 AND exit = space.

    i_variant-variant = e_variant-variant.

  ENDIF.

ENDFORM.                               " F4_FOR_s_lvar

0 Kudos

Hi Deep,

Pls dont dump the whole code its difficult to get where you have written. Just provide the context or perform name.

As I can see you have written your logic in FORM einzelposten_save. First Check whether it is getting triggered or not as it is inside an IF condition.

Check by writing below logic where append HBSIK is written:

After :   MOVE utage TO hbsik-utage.

  "Start

  DATA : lv_prctr TYPE prctr.

  IF hbsik-prctr IS INITIAL.

    SELECT prctr

      FROM faglflexa

      UP TO 1 ROWS

      INTO lv_prctr

      WHERE ryear = hbsik-gjahr

      AND   docnr = hbsik-belnr

      AND   rbukrs = hbsik-bukrs

      AND   prctr  IN p_prctr.

    ENDSELECT.

    IF lv_prctr IS NOT INITIAL.

      MOVE lv_prctr TO hbsik-prctr.

      APPEND hbsik.

      MOVE lv_prctr TO bsik-prctr.

     clear lv_prctr.

    ENDIF.

  ENDIF.

  "End

Before :  MOVE-CORRESPONDING bsik  TO refbl.

0 Kudos

Hi Praphul,

If I enter profit center in the  selection screen field : -

select-options : P_PRCTR  for BSIK-PRCTR.

In BSIK only that line item amount getting displayed : getting picked which is having  the profit center value.Other line items are not fetched in BSIK  because they do not have profit center values  .

My requirement is that : since in the report the values of profit centres are  getting picked from the BSIK table but some documents do not have the corresponding profit centres values in BSIK table so  for all those documents which do not have profit centres values or where there is  profit centre value  as INITIAL. So if there is  a blank or initial Profit center values in BSIK FOR ALL THOSE RECORDS i WANT to fetch  the values from the Table FAGLFLEXA for all those records where profit centre value is blank initial  and updating the same  in  HBSIK table.

example :-

BSIK table

doc no             profit center      debit/credit            amount

1                                               S                        10

2                                               H                         20

3                                               H                         30

4                     1300                   H                          40

If I enter 1300 in the selection screen field so only the 4 line item getting picked and displayed amount as 40 in the output.

It should come as S-H = 80-   .

But only last item amount getting fetched as per my logic mentioned in above posts ..

as If I check FAGLFLEXA the 1,2,3 docno having values there in FAGLFLEXA as 1300 .

so for all those initials it want to  fetch from faglflexa and then as a whole output will come as 80- as per example .

Overall output coming correct If i do not enter the profit center in screen filed but after entering the profit center only that item amount coming which is having profit center value.

So ,It should be profit center wise but  the output not coming profit center wise .

Regards

Deep

0 Kudos

Hi Deep,

Did you debugged and check whether the Selection from Table FAGLFLEXA is fetching all the required line items or not .Just check whether this logic is called only once or multiple time. Also, the Perform where you have put the custom code is getting called or not in correct way.

0 Kudos

Hi Praphul,

Yes I debugged it selection from FAGLFLEXA is called multiple times as many no of line items there in BSIK.

The logic is called but I am unable to link the screen field to my program so that It would become profit center wise .

Also after GET BSIK .

I have used :-

CHECK: BSIK-PRCTR IN P_PRCTR OR BSIK-PRCTR = SPACE. 


but no change.

after

append HBSIK .

I have written for fetching Profit centres from FAGLFLEXA , custom logic as  :-

  IF HBSIK-PRCTR EQ ' '.
    SELECT   DOCNR
             RBUKRS
             PRCTR
             GJAHR
             BELNR
             BUZEI
             FROM FAGLFLEXA INTO  TABLE IT_FAGLFLEXA   WHERE  DOCNR = HBSIK-BELNR
                                                            AND  GJAHR = HBSIK-GJAHR
                                                            AND  BUZEI = HBSIK-BUZEI
                                                            AND  PRCTR IN P_PRCTR.


   LOOP AT HBSIK .
     READ TABLE IT_FAGLFLEXA INTO WA_FAGLFLEXA WITH KEY  DOCNR = HBSIK-BELNR
                                                         GJAHR = HBSIK-GJAHR
                                                         BUZEI = HBSIK-BUZEI.
     IF SY-SUBRC EQ 0.
          HBSIK-PRCTR  =  WA_FAGLFLEXA-PRCTR.

          MODIFY HBSIK .
     ENDIF.

  ENDLOOP.

  ENDIF.

Wherever there is profit center as initial in bsik it should fetch the profit center value from FAGLFLEXA and finally update it accordingly in HBSIK.

After that since my hbsik table will contain all values with there profit centres then I want to filter those line items which we will provide in the selection screen p_prctr.So only those records corresponding to the profit center must come which we will provide in the selection screen filed : P_PRCTR .

If I provide profit center value as 1300 : p_prctr .

example :-

BSIK table

doc no             profit center      debit/credit            amount

1                                               S                        10

2                                               H                         20

3                                               H                         30

4                     1300                   H                          40

If I enter 1300 in the selection screen field so only the 4 line item getting picked and displayed amount as 40 in the output.

It should come as S-H = 80-   .


Regards

Deep

0 Kudos

Hi Deep,

I have already given you the sample code and where to use it. Still, you have put that in wrong place and wrong code. Why after append HBSIK .  Actually, you have to replace this append with yours . Check my logic and place the code where I have given as AFTER - BEFORE.

0 Kudos

Hi Praphul ,

Okay I  have used the same code lines :-

After :   MOVE utage TO hbsik-utage.

  "Start

  DATA : lv_prctr TYPE prctr.

  IF hbsik-prctr IS INITIAL.

    SELECT prctr

      FROM faglflexa

      UP TO 1 ROWS

      INTO lv_prctr

      WHERE ryear = hbsik-gjahr

      AND   docnr = hbsik-belnr

      AND   rbukrs = hbsik-bukrs

      AND   prctr  IN p_prctr.

    ENDSELECT.

    IF lv_prctr IS NOT INITIAL.

      MOVE lv_prctr TO hbsik-prctr.

      APPEND hbsik.

      MOVE lv_prctr TO bsik-prctr.

     clear lv_prctr.

    ENDIF.

  ENDIF.

  "End

Before :  MOVE-CORRESPONDING bsik  TO refbl.

According to your logic : Now if a doc no  is having profit center value then it will not go in

  IF hbsik-prctr IS INITIAL.

so that doc. no value will not be appended in HBSIK because there is no append .It is inside the if   endif.

so the fourth line item will not be fetched into hbsik.So the output will be wrong as one line item will be left .

Suggest how to resolve it .

Regards

Deep

0 Kudos

write in ELSE statement append HBSIK

0 Kudos

Hi Praphul ,

If I do not enter anything in the selection screen field then overall output coming correct.

output : 80-

But If I provide profit center value as 1300 in  p_prctr then output coming as   40 .

example :-

BSIK table

doc no             profit center      debit/credit            amount

1                                               S                        10

2                                               H                         20

3                                               H                         30

4                     1300                   H                          40

So this is the main issue .

Regards

Deep

0 Kudos

Gurus,

Please suggest some ideas .

Regards

Deep