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

Help me plz...Very Urgent..

Former Member
0 Kudos

Hi SDN Experts,

i ve a problem with my report, that is,

hi all this is the complete report. which i ve devoloped to display Opening balance and Line Items and Closing Balance.

input for this report is: GL account no , comp code and posting date. o/p is: it will print , Opening balance then Line Items and Closing balance.

if u give 1 GL account it is working good but if u give range it is giving wrong O.Balance but Line Items are correct in both cases, the problem is with O.Bal only.(it is adding to first O.Bal for every time, i am able to finding the in which loop i ve gone wrong )

in my code i am using Loop at gt_data for printing O.Bal. and It_ITEMES tab for Line items.

the requirement is i want 2 print O.Bal & L.Items & C.Bal for each GL account.

if posible, just execute once and help me plz. its very urgent for me..

this is my complete code:

&----


*& Report ZBSR_GLITEMDISPLAY *

*& *

&----


*& *

*& *

&----


REPORT ZBSR_GLITEMDISPLAY NO STANDARD PAGE HEADING. " LINE-SIZE 155 LINE-COUNT 30(3) .

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_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,

TSL01 LIKE GLT0-TSL01,

TSL02 LIKE GLT0-TSL02,

TSL03 LIKE GLT0-TSL03,

TSL04 LIKE GLT0-TSL04,

TSL05 LIKE GLT0-TSL05,

TSL06 LIKE GLT0-TSL06,

TSL07 LIKE GLT0-TSL07,

TSL08 LIKE GLT0-TSL08,

TSL09 LIKE GLT0-TSL09,

TSL10 LIKE GLT0-TSL10,

TSL11 LIKE GLT0-TSL11,

TSL12 LIKE GLT0-TSL12,

TSL13 LIKE GLT0-TSL13,

TSL14 LIKE GLT0-TSL14,

TSL15 LIKE GLT0-TSL15,

TSL16 LIKE GLT0-TSL16,

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.........................................................

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'.

AT SELECTION-SCREEN ON SO_RACCT.

IF SO_RACCT IS INITIAL.

MESSAGE E000(ZGLM).

ELSEIF SO_RACCT-LOW IS INITIAL AND SO_RACCT-HIGH IS NOT INITIAL.

SO_RACCT-LOW = '0000000000'.

ELSEIF GLT0-RACCT = SO_RACCT AND BSEG-ALTKT = SO_RACCT.

IF SY-SUBRC <> 0.

MESSAGE E001(ZGLM).

ENDIF.

ENDIF.

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_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.

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.

SORT IT_BKPF BY MANDT BUKRS BELNR GJAHR.

SORT IT_BSEG BY MANDT 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 MANDT = IT_BSEG-MANDT

BUKRS = IT_BSEG-BUKRS

BELNR = IT_BSEG-BELNR

GJAHR = IT_BSEG-GJAHR

BINARY SEARCH.

IF SY-SUBRC NE 0.

MESSAGE E006(ZGLM).

ELSE.

IT_ITEMS-BUDAT = IT_BKPF-BUDAT.

ENDIF.

LOOP AT IT_SKAT WHERE SAKNR = IT_BSEG-HKONT.

IT_ITEMS-TXT50 = IT_SKAT-TXT50.

ENDLOOP.

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'.

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.

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.

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, will get Full Rewards,

Sudharsan.

id is: sudharsan.batta@gmail.com.

2 REPLIES 2

rajesh_akarte2
Active Participant
0 Kudos

Hi sudarshan,

I think u haven't cleared the variable in which u r taking the value of Opening balance that is why u r getting the wrong opening balance.

Please do refresh/clear the internal table in START-OF-SELECTION event.

if useful reward the points.

Regards,

Rajesh Akarte

0 Kudos

hi rajesh thanks for ur replay,

but as u told, i have clear my intarnal table. even though its giving wrong. here it is adding O.bal to previous one.

plz help on this,

Regards,

sudharsan.