07-19-2016 5:44 AM
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
07-19-2016 7:11 AM
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
07-19-2016 8:18 AM
Hi Rajkumar ,
Can you explain using key how can we add custom selection screen filed .
S_PRCTR .
Suggest some work around .
Regards
Deep
07-19-2016 8:31 AM
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
07-19-2016 9:22 AM
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
07-19-2016 10:46 AM
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
07-20-2016 5:51 AM
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
07-20-2016 11:13 AM
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...
07-21-2016 5:59 AM
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
07-21-2016 7:42 AM
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.
07-27-2016 7:25 AM
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
07-27-2016 8:28 AM
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.
07-27-2016 9:06 AM
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'.
*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
07-27-2016 11:43 AM
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.
07-27-2016 12:51 PM
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
07-27-2016 1:06 PM
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.
07-28-2016 6:40 AM
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
07-28-2016 7:08 AM
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.
07-28-2016 9:09 AM
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
07-28-2016 9:29 AM
07-28-2016 10:15 AM
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
07-29-2016 6:20 AM