2007 Sep 24 4:29 AM
Hi sdn Experts,
i have problem in which i ve developed. for displaying. Opening balance, Line Items and Closing balance.
it is displaying well if give single GL account for input, but the oriblem is if i give multiple GL accounts as input The first GLaccount O.bal is printing well, but for second GLaccount onwords the First GL ac O.bal is adding 2 times and printing for 2nd GL account, for 3rd GLac adding 3 times and printg.
so plz anyone can help me, very urgent....
here my code is...
&----
*& Report Z_BSRTEST *
*& *
&----
*& *
*& *
&----
REPORT Z_BSRTEST NO STANDARD PAGE HEADING .
TABLES: glt0, " G/L account master record transaction figures
bseg, " Accounting Document Segment for Line Items
bkpf. " Accounting Document Header
DATA: count TYPE i,
l_len(4) TYPE n,
month(2) TYPE n,
debit LIKE glt0-tslvt,
credit LIKE glt0-tslvt,
result LIKE glt0-tslvt.
DATA: v_day(2) TYPE c,
v_dat1 TYPE p,
v_mon(2) TYPE c,
v_year(4) TYPE c,
v_date LIKE sy-datum,
f_date TYPE sy-datum,
l_date TYPE sydatum,
v_total LIKE bseg-dmbtr,
sum0 LIKE glt0-tslvt,
sum1 LIKE glt0-tslvt,
sum2 LIKE glt0-tslvt,
sum3 LIKE glt0-tslvt,
add LIKE glt0-tslvt.
TYPES: BEGIN OF t_bseg,
mandt LIKE bseg-mandt,
bukrs LIKE bseg-bukrs, "comp code
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal year
shkzg LIKE bseg-shkzg, "Debit / Credit indicator
dmbtr LIKE bseg-dmbtr, "Amount in local currency
pswsl LIKE bseg-pswsl,
hkont LIKE bseg-hkont, "GL ac no
END OF t_bseg.
DATA : it_bseg TYPE STANDARD TABLE OF t_bseg WITH HEADER LINE.
WA_BSEG type T_BSEG.
TYPES : BEGIN OF t_bkpf,
mandt TYPE bkpf-mandt,
bukrs TYPE bkpf-bukrs, "comp code
belnr TYPE bkpf-belnr, "Accounting Document Number
gjahr TYPE bkpf-gjahr, "Fiscal year
budat TYPE bkpf-budat, "Document type
END OF t_bkpf.
DATA : it_bkpf TYPE STANDARD TABLE OF t_bkpf WITH HEADER LINE.
WA_BKPF LIKE it_BKPF.
TYPES: BEGIN OF t_skat,
mandt TYPE mandt,
saknr TYPE saknr,
txt50 TYPE txt50,
END OF t_skat.
DATA: it_skat TYPE STANDARD TABLE OF t_skat WITH HEADER LINE.
WA_SKAT LIKE IT_SKAT.
TYPES : BEGIN OF t_items,
mandt TYPE mandt,
hkont TYPE hkont,
incrdr(2),
bukrs TYPE bukrs,
belnr LIKE bseg-belnr,
shkzg TYPE shkzg,
dmbtr TYPE dmbtr,
pswsl TYPE pswsl,
budat TYPE budat,
txt50 TYPE txt50,
END OF t_items.
DATA : it_items TYPE STANDARD TABLE OF t_items WITH HEADER LINE,
wa_items TYPE t_items.
int table for calculating opening balance from 16
*periods
DATA: BEGIN OF gt_data OCCURS 0 ,
rclnt LIKE glt0-rclnt,
bukrs LIKE glt0-bukrs,
drcrk LIKE glt0-drcrk,
ryear LIKE glt0-ryear,
racct LIKE glt0-racct,
tslvt LIKE glt0-tslvt,
hslvt LIKE glt0-hslvt,
hsl01 LIKE glt0-hsl01,
hsl02 LIKE glt0-hsl02,
hsl03 LIKE glt0-hsl03,
hsl04 LIKE glt0-hsl04,
hsl05 LIKE glt0-hsl05,
hsl06 LIKE glt0-hsl06,
hsl07 LIKE glt0-hsl07,
hsl08 LIKE glt0-hsl08,
hsl09 LIKE glt0-hsl09,
hsl10 LIKE glt0-hsl10,
hsl11 LIKE glt0-hsl11,
hsl12 LIKE glt0-hsl12,
hsl13 LIKE glt0-hsl13,
hsl14 LIKE glt0-hsl14,
hsl15 LIKE glt0-hsl15,
hsl16 LIKE glt0-hsl16,
tsl_total LIKE glt0-tslvt,
start_balance LIKE glt0-tslvt,
end_balance LIKE glt0-tslvt,
END OF gt_data.
DATA: wa_gt_data LIKE gt_data OCCURS 0 WITH HEADER LINE.
...selections.........................................................
SELECTION-SCREEN BEGIN OF BLOCK blk.
SELECT-OPTIONS: so_racct FOR glt0-racct, " NO INTERVALS NO-EXTENSION,
so_bukrs FOR glt0-bukrs NO INTERVALS NO-EXTENSION.
PARAMETERS: p_date LIKE sy-datum.
*PARAMETERS : LOC_CUR AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK blk.
*AT SELECTION-SCREEN ON SO_BUKRS.
if SO_BUKRS-LOW IS INITIAL.
MESSAGE E002(ZGLM).
ELSEIF BKPF-BUKRS = SO_BUKRS AND GLT0-BUKRS = SO_BUKRS.
IF SY-SUBRC <> 0.
MESSAGE E003(ZGLM).
ENDIF.
ENDIF.
*
*AT SELECTION-SCREEN ON P_DATE.
v_day = '01'.
v_mon = p_date+4(2).
v_year = p_date+0(4).
concatenate v_year v_mon v_day into v_date.
*
IF p_date IS INITIAL.
MESSAGE E004(ZGLM).
ELSEIF P_DATE > V_DATE.
MESSAGE E005(ZGLM).
ENDIF.
START-OF-SELECTION.
v_day = '01'.
v_mon = p_date+4(2).
v_year = p_date+0(4).
CONCATENATE v_year v_mon v_day INTO v_date.
month = v_mon.
IF NOT p_date IS INITIAL.
CALL FUNCTION 'HR_E_NUM_OF_DAYS_OF_MONTH'
EXPORTING
p_fecha = p_date
IMPORTING
number_of_days = v_dat1.
**
v_day = v_dat1.
CONCATENATE v_year v_mon v_day INTO f_date.
CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
EXPORTING
iv_date = p_date
IMPORTING
EV_MONTH_BEGIN_DATE = f_date
EV_MONTH_END_DATE = l_date.
ENDIF.
l_len = p_date+0(4).
CLEAR wa_gt_data.
START-OF-SELECTION.
SELECT mandt
bukrs
belnr
gjahr
budat
FROM bkpf INTO TABLE it_bkpf
WHERE bukrs IN so_bukrs
AND ( budat BETWEEN f_date and p_date ).
IF NOT it_bkpf[] IS INITIAL.
SELECT mandt
bukrs
belnr
gjahr
shkzg
dmbtr
pswsl
hkont
FROM bseg INTO TABLE it_bseg
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs EQ it_bkpf-bukrs
AND belnr EQ it_bkpf-belnr
AND gjahr EQ it_bkpf-gjahr
AND hkont IN so_racct.
IF sy-subrc NE 0.
MESSAGE i005(zglm).
ENDIF.
ELSE.
MESSAGE i005(zglm). " IT_BKPF tab is empty'
ENDIF.
SELECT mandt
saknr
txt50
FROM skat INTO TABLE it_skat
FOR ALL ENTRIES IN it_bseg
WHERE saknr EQ it_bseg-hkont.
SELECT rclnt
bukrs
drcrk
ryear
racct
hslvt
hsl01
hsl02
hsl03
hsl04
hsl05
hsl06
hsl07
hsl08
hsl09
hsl10
hsl11
hsl12
hsl13
hsl14
hsl15
hsl16
FROM glt0 INTO CORRESPONDING FIELDS OF TABLE gt_data
WHERE racct IN so_racct AND
bukrs IN so_bukrs AND
ryear = l_len.
SORT it_bkpf BY bukrs belnr gjahr.
SORT it_bseg BY bukrs belnr gjahr.
LOOP AT it_bseg.
it_items-bukrs = it_bseg-bukrs.
it_items-belnr = it_bseg-belnr.
it_items-hkont = it_bseg-hkont.
it_items-shkzg = it_bseg-shkzg.
it_items-mandt = it_bseg-mandt.
it_items-pswsl = it_bseg-pswsl.
IF it_bseg-shkzg = 'H'.
it_bseg-dmbtr = ( -1 ) * it_bseg-dmbtr .
it_items-incrdr = 'Cr'.
ELSEIF it_bseg-shkzg = 'S'.
it_items-incrdr = 'Dr'.
ENDIF.
MODIFY IT_BSEG.
it_items-dmbtr = it_bseg-dmbtr.
READ TABLE it_bkpf WITH KEY bukrs = it_bseg-bukrs
belnr = it_bseg-belnr
gjahr = it_bseg-gjahr
BINARY SEARCH.
IF sy-subrc EQ 0.
it_items-budat = it_bkpf-budat.
ENDIF.
READ TABLE it_skat WITH KEY saknr = it_bseg-hkont.
IF sy-subrc EQ 0.
it_items-txt50 = it_skat-txt50.
ENDIF.
APPEND it_items.
CLEAR: it_bseg,
it_bkpf,
it_items,
it_skat.
ENDLOOP.
SORT it_items BY hkont budat.
LOOP AT IT_ITEMS.
WA_ITEMS = IT_ITEMS.
**
**AT NEW HKONT.
IF SY-TABIX NE 1.
NEW-PAGE.
ENDIF.
*******************************
IF LOC_CUR = 'X'.
LOOP AT it_items.
wa_items = it_items.
AT NEW hkont.
IF sy-tabix NE 1.
NEW-PAGE.
ENDIF.
LOOP AT gt_data INTO wa_gt_data WHERE racct IN so_racct.
CLEAR wa_gt_data-start_balance.
CASE month.
WHEN '00'.
wa_gt_data-start_balance = wa_gt_data-hslvt.
PERFORM display_data.
WHEN '01'.
wa_gt_data-start_balance = wa_gt_data-hslvt.
PERFORM display_data.
WHEN '02'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01.
PERFORM display_data.
WHEN '03'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02.
PERFORM display_data.
WHEN '04'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03.
PERFORM display_data.
WHEN '05'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04.
PERFORM display_data.
WHEN '06'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05.
PERFORM display_data.
WHEN '07'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06.
PERFORM display_data.
WHEN '08'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07.
PERFORM display_data.
WHEN '09'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07 +
wa_gt_data-hsl08.
PERFORM display_data.
WHEN '10'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07 +
wa_gt_data-hsl08 +
wa_gt_data-hsl09.
PERFORM display_data.
WHEN '11'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07 +
wa_gt_data-hsl08 +
wa_gt_data-hsl09 +
wa_gt_data-hsl10.
PERFORM display_data.
WHEN '12'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07 +
wa_gt_data-hsl08 +
wa_gt_data-hsl09 +
wa_gt_data-hsl10 +
wa_gt_data-hsl11.
wa_gt_data-end_balance = wa_gt_data-hsl13 +
wa_gt_data-hsl14 +
wa_gt_data-hsl15 +
wa_gt_data-hsl16.
MOVE wa_gt_data-end_balance TO sum3.
PERFORM display_data.
ENDCASE.
ENDLOOP.
ENDIF.
*****************************
LOOP AT IT_ITEMS.
WA_ITEMS = IT_ITEMS.
AT NEW HKONT.
IF SY-TABIX NE 1.
NEW-PAGE..
ENDIF.
WRITE: /50 'GL ACCOUNT :',wa_items-hkont COLOR 7.
WRITE: /50 'COMPANY CODE:',wa_items-bukrs COLOR 7.
WRITE: /50 'POSTING DATE:',p_date COLOR 7.
WRITE: /123 'OPENING BALANCE ' , result COLOR 3.
MOVE result TO sum0.
CLEAR result.
WRITE: /19(145) sy-uline.
WRITE: /19 sy-vline.
FORMAT COLOR COL_HEADING.
WRITE: 20 'GL A/C NO',
30 sy-vline,
32 'COMP CODE',
43 sy-vline,
45 ' GL ACCOUNT DISCRIPTION',
88 sy-vline,
90 'POSTING DATE',
102 sy-vline,
105 'A/C DOC NO',
115 sy-vline,
120 'CR or DR',
130 sy-vline,
132 'CURRENCY',
140 sy-vline,
141 'Amt IN HOME CURRENCY ',
163 sy-vline.
FORMAT COLOR OFF.
WRITE: /19(145) sy-uline.
WRITE: /19 sy-vline.
WRITE : 20 wa_items-hkont,
30 sy-vline,
32 wa_items-bukrs,
43 sy-vline,
45 wa_items-txt50,
88 sy-vline,
90 wa_items-budat,
102 sy-vline,
105 wa_items-belnr,
115 sy-vline,
120 wa_items-incrdr,
130 sy-vline,
132 wa_items-pswsl,
140 sy-vline,
145 wa_items-dmbtr,
163 sy-vline.
count = 1.
SUM.
v_total = it_items-dmbtr.
ENDAT.
IF count NE 1.
WRITE:/19 sy-vline.
WRITE: 30 sy-vline,
32 wa_items-bukrs,
43 sy-vline,
45 wa_items-txt50,
88 sy-vline,
90 wa_items-budat,
102 sy-vline,
105 wa_items-belnr,
115 sy-vline,
120 wa_items-incrdr,
130 sy-vline,
132 wa_items-pswsl,
140 sy-vline,
145 wa_items-dmbtr,
163 sy-vline.
ENDIF.
AT END OF hkont.
WRITE:/19(145) sy-uline.
WRITE:19 sy-vline.
WRITE:/125 ' TOTOAL '.
WRITE:145 v_total COLOR 3 .
MOVE v_total TO sum1.
WRITE:163 sy-vline.
WRITE:19 sy-vline.
WRITE:/19(145) sy-uline.
ENDAT.
CLEAR: wa_items,
count,
it_items.
AT END OF hkont.
PERFORM closebal.
ENDAT.
ENDLOOP.
&----
*& Form display_data
&----
text
----
FORM display_data.
LOOP AT gt_data into wa_gt_data.
IF wa_gt_data-drcrk = 'H'.
debit = debit + wa_gt_data-start_balance.
ELSE.
credit = credit + wa_gt_data-start_balance.
ENDIF.
result = debit + credit.
*ENDLOOP.
ENDFORM. "display_data
----
FORM CLOSEBAL *
----
........ *
----
FORM closebal.
IF month EQ '12'.
sum2 = sum0 + sum1 + sum3.
WRITE: /123 'CLOSING BALANCE FROM 12th MONTH', sum3 COLOR 3.
CLEAR: sum0,
sum2,
sum3.
ELSE.
SKIP .
sum2 = sum0 + sum1.
WRITE: /123 'CLOSING BALANCE ', sum2 COLOR 3.
CLEAR: sum0,
sum2.
ENDIF.
ENDFORM.
Thanks in advance.
sudharsan.
Hi sdn Experts,
i have problem in which i ve developed. for displaying. Opening balance, Line Items and Closing balance.
it is displaying well if give single GL account for input, but the oriblem is if i give multiple GL accounts as input The first GLaccount O.bal is printing well, but for second GLaccount onwords the First GL ac O.bal is adding 2 times and printing for 2nd GL account, for 3rd GLac adding 3 times and printg.
so plz anyone can help me, very urgent....
here my code is...
&----
*& Report Z_BSRTEST *
*& *
&----
*& *
*& *
&----
REPORT Z_BSRTEST NO STANDARD PAGE HEADING .
TABLES: glt0, " G/L account master record transaction figures
bseg, " Accounting Document Segment for Line Items
bkpf. " Accounting Document Header
DATA: count TYPE i,
l_len(4) TYPE n,
month(2) TYPE n,
debit LIKE glt0-tslvt,
credit LIKE glt0-tslvt,
result LIKE glt0-tslvt.
DATA: v_day(2) TYPE c,
v_dat1 TYPE p,
v_mon(2) TYPE c,
v_year(4) TYPE c,
v_date LIKE sy-datum,
f_date TYPE sy-datum,
l_date TYPE sydatum,
v_total LIKE bseg-dmbtr,
sum0 LIKE glt0-tslvt,
sum1 LIKE glt0-tslvt,
sum2 LIKE glt0-tslvt,
sum3 LIKE glt0-tslvt,
add LIKE glt0-tslvt.
TYPES: BEGIN OF t_bseg,
mandt LIKE bseg-mandt,
bukrs LIKE bseg-bukrs, "comp code
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal year
shkzg LIKE bseg-shkzg, "Debit / Credit indicator
dmbtr LIKE bseg-dmbtr, "Amount in local currency
pswsl LIKE bseg-pswsl,
hkont LIKE bseg-hkont, "GL ac no
END OF t_bseg.
DATA : it_bseg TYPE STANDARD TABLE OF t_bseg WITH HEADER LINE.
WA_BSEG type T_BSEG.
TYPES : BEGIN OF t_bkpf,
mandt TYPE bkpf-mandt,
bukrs TYPE bkpf-bukrs, "comp code
belnr TYPE bkpf-belnr, "Accounting Document Number
gjahr TYPE bkpf-gjahr, "Fiscal year
budat TYPE bkpf-budat, "Document type
END OF t_bkpf.
DATA : it_bkpf TYPE STANDARD TABLE OF t_bkpf WITH HEADER LINE.
WA_BKPF LIKE it_BKPF.
TYPES: BEGIN OF t_skat,
mandt TYPE mandt,
saknr TYPE saknr,
txt50 TYPE txt50,
END OF t_skat.
DATA: it_skat TYPE STANDARD TABLE OF t_skat WITH HEADER LINE.
WA_SKAT LIKE IT_SKAT.
TYPES : BEGIN OF t_items,
mandt TYPE mandt,
hkont TYPE hkont,
incrdr(2),
bukrs TYPE bukrs,
belnr LIKE bseg-belnr,
shkzg TYPE shkzg,
dmbtr TYPE dmbtr,
pswsl TYPE pswsl,
budat TYPE budat,
txt50 TYPE txt50,
END OF t_items.
DATA : it_items TYPE STANDARD TABLE OF t_items WITH HEADER LINE,
wa_items TYPE t_items.
int table for calculating opening balance from 16
*periods
DATA: BEGIN OF gt_data OCCURS 0 ,
rclnt LIKE glt0-rclnt,
bukrs LIKE glt0-bukrs,
drcrk LIKE glt0-drcrk,
ryear LIKE glt0-ryear,
racct LIKE glt0-racct,
tslvt LIKE glt0-tslvt,
hslvt LIKE glt0-hslvt,
hsl01 LIKE glt0-hsl01,
hsl02 LIKE glt0-hsl02,
hsl03 LIKE glt0-hsl03,
hsl04 LIKE glt0-hsl04,
hsl05 LIKE glt0-hsl05,
hsl06 LIKE glt0-hsl06,
hsl07 LIKE glt0-hsl07,
hsl08 LIKE glt0-hsl08,
hsl09 LIKE glt0-hsl09,
hsl10 LIKE glt0-hsl10,
hsl11 LIKE glt0-hsl11,
hsl12 LIKE glt0-hsl12,
hsl13 LIKE glt0-hsl13,
hsl14 LIKE glt0-hsl14,
hsl15 LIKE glt0-hsl15,
hsl16 LIKE glt0-hsl16,
tsl_total LIKE glt0-tslvt,
start_balance LIKE glt0-tslvt,
end_balance LIKE glt0-tslvt,
END OF gt_data.
DATA: wa_gt_data LIKE gt_data OCCURS 0 WITH HEADER LINE.
...selections.........................................................
SELECTION-SCREEN BEGIN OF BLOCK blk.
SELECT-OPTIONS: so_racct FOR glt0-racct, " NO INTERVALS NO-EXTENSION,
so_bukrs FOR glt0-bukrs NO INTERVALS NO-EXTENSION.
PARAMETERS: p_date LIKE sy-datum.
*PARAMETERS : LOC_CUR AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK blk.
*AT SELECTION-SCREEN ON SO_BUKRS.
if SO_BUKRS-LOW IS INITIAL.
MESSAGE E002(ZGLM).
ELSEIF BKPF-BUKRS = SO_BUKRS AND GLT0-BUKRS = SO_BUKRS.
IF SY-SUBRC <> 0.
MESSAGE E003(ZGLM).
ENDIF.
ENDIF.
*
*AT SELECTION-SCREEN ON P_DATE.
v_day = '01'.
v_mon = p_date+4(2).
v_year = p_date+0(4).
concatenate v_year v_mon v_day into v_date.
*
IF p_date IS INITIAL.
MESSAGE E004(ZGLM).
ELSEIF P_DATE > V_DATE.
MESSAGE E005(ZGLM).
ENDIF.
START-OF-SELECTION.
v_day = '01'.
v_mon = p_date+4(2).
v_year = p_date+0(4).
CONCATENATE v_year v_mon v_day INTO v_date.
month = v_mon.
IF NOT p_date IS INITIAL.
CALL FUNCTION 'HR_E_NUM_OF_DAYS_OF_MONTH'
EXPORTING
p_fecha = p_date
IMPORTING
number_of_days = v_dat1.
**
v_day = v_dat1.
CONCATENATE v_year v_mon v_day INTO f_date.
CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
EXPORTING
iv_date = p_date
IMPORTING
EV_MONTH_BEGIN_DATE = f_date
EV_MONTH_END_DATE = l_date.
ENDIF.
l_len = p_date+0(4).
CLEAR wa_gt_data.
START-OF-SELECTION.
SELECT mandt
bukrs
belnr
gjahr
budat
FROM bkpf INTO TABLE it_bkpf
WHERE bukrs IN so_bukrs
AND ( budat BETWEEN f_date and p_date ).
IF NOT it_bkpf[] IS INITIAL.
SELECT mandt
bukrs
belnr
gjahr
shkzg
dmbtr
pswsl
hkont
FROM bseg INTO TABLE it_bseg
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs EQ it_bkpf-bukrs
AND belnr EQ it_bkpf-belnr
AND gjahr EQ it_bkpf-gjahr
AND hkont IN so_racct.
IF sy-subrc NE 0.
MESSAGE i005(zglm).
ENDIF.
ELSE.
MESSAGE i005(zglm). " IT_BKPF tab is empty'
ENDIF.
SELECT mandt
saknr
txt50
FROM skat INTO TABLE it_skat
FOR ALL ENTRIES IN it_bseg
WHERE saknr EQ it_bseg-hkont.
SELECT rclnt
bukrs
drcrk
ryear
racct
hslvt
hsl01
hsl02
hsl03
hsl04
hsl05
hsl06
hsl07
hsl08
hsl09
hsl10
hsl11
hsl12
hsl13
hsl14
hsl15
hsl16
FROM glt0 INTO CORRESPONDING FIELDS OF TABLE gt_data
WHERE racct IN so_racct AND
bukrs IN so_bukrs AND
ryear = l_len.
SORT it_bkpf BY bukrs belnr gjahr.
SORT it_bseg BY bukrs belnr gjahr.
LOOP AT it_bseg.
it_items-bukrs = it_bseg-bukrs.
it_items-belnr = it_bseg-belnr.
it_items-hkont = it_bseg-hkont.
it_items-shkzg = it_bseg-shkzg.
it_items-mandt = it_bseg-mandt.
it_items-pswsl = it_bseg-pswsl.
IF it_bseg-shkzg = 'H'.
it_bseg-dmbtr = ( -1 ) * it_bseg-dmbtr .
it_items-incrdr = 'Cr'.
ELSEIF it_bseg-shkzg = 'S'.
it_items-incrdr = 'Dr'.
ENDIF.
MODIFY IT_BSEG.
it_items-dmbtr = it_bseg-dmbtr.
READ TABLE it_bkpf WITH KEY bukrs = it_bseg-bukrs
belnr = it_bseg-belnr
gjahr = it_bseg-gjahr
BINARY SEARCH.
IF sy-subrc EQ 0.
it_items-budat = it_bkpf-budat.
ENDIF.
READ TABLE it_skat WITH KEY saknr = it_bseg-hkont.
IF sy-subrc EQ 0.
it_items-txt50 = it_skat-txt50.
ENDIF.
APPEND it_items.
CLEAR: it_bseg,
it_bkpf,
it_items,
it_skat.
ENDLOOP.
SORT it_items BY hkont budat.
LOOP AT IT_ITEMS.
WA_ITEMS = IT_ITEMS.
**
**AT NEW HKONT.
IF SY-TABIX NE 1.
NEW-PAGE.
ENDIF.
*******************************
IF LOC_CUR = 'X'.
LOOP AT it_items.
wa_items = it_items.
AT NEW hkont.
IF sy-tabix NE 1.
NEW-PAGE.
ENDIF.
LOOP AT gt_data INTO wa_gt_data WHERE racct IN so_racct.
CLEAR wa_gt_data-start_balance.
CASE month.
WHEN '00'.
wa_gt_data-start_balance = wa_gt_data-hslvt.
PERFORM display_data.
WHEN '01'.
wa_gt_data-start_balance = wa_gt_data-hslvt.
PERFORM display_data.
WHEN '02'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01.
PERFORM display_data.
WHEN '03'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02.
PERFORM display_data.
WHEN '04'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03.
PERFORM display_data.
WHEN '05'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04.
PERFORM display_data.
WHEN '06'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05.
PERFORM display_data.
WHEN '07'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06.
PERFORM display_data.
WHEN '08'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07.
PERFORM display_data.
WHEN '09'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07 +
wa_gt_data-hsl08.
PERFORM display_data.
WHEN '10'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07 +
wa_gt_data-hsl08 +
wa_gt_data-hsl09.
PERFORM display_data.
WHEN '11'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07 +
wa_gt_data-hsl08 +
wa_gt_data-hsl09 +
wa_gt_data-hsl10.
PERFORM display_data.
WHEN '12'.
wa_gt_data-start_balance = wa_gt_data-hslvt +
wa_gt_data-hsl01 +
wa_gt_data-hsl02 +
wa_gt_data-hsl03 +
wa_gt_data-hsl04 +
wa_gt_data-hsl05 +
wa_gt_data-hsl06 +
wa_gt_data-hsl07 +
wa_gt_data-hsl08 +
wa_gt_data-hsl09 +
wa_gt_data-hsl10 +
wa_gt_data-hsl11.
wa_gt_data-end_balance = wa_gt_data-hsl13 +
wa_gt_data-hsl14 +
wa_gt_data-hsl15 +
wa_gt_data-hsl16.
MOVE wa_gt_data-end_balance TO sum3.
PERFORM display_data.
ENDCASE.
ENDLOOP.
ENDIF.
*****************************
LOOP AT IT_ITEMS.
WA_ITEMS = IT_ITEMS.
AT NEW HKONT.
IF SY-TABIX NE 1.
NEW-PAGE..
ENDIF.
WRITE: /50 'GL ACCOUNT :',wa_items-hkont COLOR 7.
WRITE: /50 'COMPANY CODE:',wa_items-bukrs COLOR 7.
WRITE: /50 'POSTING DATE:',p_date COLOR 7.
WRITE: /123 'OPENING BALANCE ' , result COLOR 3.
MOVE result TO sum0.
CLEAR result.
WRITE: /19(145) sy-uline.
WRITE: /19 sy-vline.
FORMAT COLOR COL_HEADING.
WRITE: 20 'GL A/C NO',
30 sy-vline,
32 'COMP CODE',
43 sy-vline,
45 ' GL ACCOUNT DISCRIPTION',
88 sy-vline,
90 'POSTING DATE',
102 sy-vline,
105 'A/C DOC NO',
115 sy-vline,
120 'CR or DR',
130 sy-vline,
132 'CURRENCY',
140 sy-vline,
141 'Amt IN HOME CURRENCY ',
163 sy-vline.
FORMAT COLOR OFF.
WRITE: /19(145) sy-uline.
WRITE: /19 sy-vline.
WRITE : 20 wa_items-hkont,
30 sy-vline,
32 wa_items-bukrs,
43 sy-vline,
45 wa_items-txt50,
88 sy-vline,
90 wa_items-budat,
102 sy-vline,
105 wa_items-belnr,
115 sy-vline,
120 wa_items-incrdr,
130 sy-vline,
132 wa_items-pswsl,
140 sy-vline,
145 wa_items-dmbtr,
163 sy-vline.
count = 1.
SUM.
v_total = it_items-dmbtr.
ENDAT.
IF count NE 1.
WRITE:/19 sy-vline.
WRITE: 30 sy-vline,
32 wa_items-bukrs,
43 sy-vline,
45 wa_items-txt50,
88 sy-vline,
90 wa_items-budat,
102 sy-vline,
105 wa_items-belnr,
115 sy-vline,
120 wa_items-incrdr,
130 sy-vline,
132 wa_items-pswsl,
140 sy-vline,
145 wa_items-dmbtr,
163 sy-vline.
ENDIF.
AT END OF hkont.
WRITE:/19(145) sy-uline.
WRITE:19 sy-vline.
WRITE:/125 ' TOTOAL '.
WRITE:145 v_total COLOR 3 .
MOVE v_total TO sum1.
WRITE:163 sy-vline.
WRITE:19 sy-vline.
WRITE:/19(145) sy-uline.
ENDAT.
CLEAR: wa_items,
count,
it_items.
AT END OF hkont.
PERFORM closebal.
ENDAT.
ENDLOOP.
&----
*& Form display_data
&----
text
----
FORM display_data.
LOOP AT gt_data into wa_gt_data.
IF wa_gt_data-drcrk = 'H'.
debit = debit + wa_gt_data-start_balance.
ELSE.
credit = credit + wa_gt_data-start_balance.
ENDIF.
result = debit + credit.
*ENDLOOP.
ENDFORM. "display_data
----
FORM CLOSEBAL *
----
........ *
----
FORM closebal.
IF month EQ '12'.
sum2 = sum0 + sum1 + sum3.
WRITE: /123 'CLOSING BALANCE FROM 12th MONTH', sum3 COLOR 3.
CLEAR: sum0,
sum2,
sum3.
ELSE.
SKIP .
sum2 = sum0 + sum1.
WRITE: /123 'CLOSING BALANCE ', sum2 COLOR 3.
CLEAR: sum0,
sum2.
ENDIF.
ENDFORM.
Thanks in advance.
sudharsan.
2007 Sep 24 4:34 AM
While displaying data, you have this condition
LOOP AT gt_data INTO wa_gt_data WHERE racct IN so_racct.
Here while looping at GT_DATA, why don't you consider only those records where RAACNT = IT_ITEMS-HKONT??
Here as the condition is RAACT in SO_RAACT, it is doing for all accounts.
Also where are you clearing V_TOTAL and the code has AT END OF HKONT event twice?
2007 Sep 24 4:41 AM
Hi ashish Thanks for ur replay.
i ve done as u told. eventhough it is adding to First O.bal .
here problem is for only O.balance only not Line Items.
plz check it again.
regards.
sudharsan.
2007 Sep 24 4:45 AM
When you have AT NEW HKONT, you need to use READ statement to read the data record of the internal table. Try adding READ statement to read the current index.
Also I see that RESULT is calculated using DEBIT and CREDIT, are you clearing these variables correctly for each HKONT.
2007 Sep 24 5:20 AM
Hi Ashish Thank u very much for quick replay,
allmost all i got where i ve gone wrong.
thanks for ur guidence.
i ve given good rewards.
Thanks ^ Regards,
sudharsan.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |