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

Printing Problem help me plz......

Former Member
0 Likes
741

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.

4 REPLIES 4
Read only

Former Member
0 Likes
717

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?

Read only

0 Likes
717

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.

Read only

0 Likes
717

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.

Read only

0 Likes
717

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.