Skip to Content
0
Former Member
Sep 13, 2007 at 06:46 AM

looping problem Very Urgent...

46 Views

Hi sdn Experts,

i have some looping prolem in my report. i.e here am calculating Opening Balance based on selection criteria, i.e given <b>GL accounts</b> for specific <b>company code</b> and posting date. from GLTO table.

but my report giving O/P properly if i give ONE GL account. but if i give range of accounts is not giving wrong. i.e it is adding to the previous balance.

and each GL account its looping 2 times.

my requirement is i want Opening balance for specific GL account.

plz anyone help on this confusion. .

here i am attaching my code regarding Opening balance.

REPORT ZGLTEST 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,

p_num(2) TYPE C,

month(2) type n,

year(4) type c,

debit like glt0-tslvt,

debit1 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_BUDAT LIKE BKPF-BUDAT,

v_date like sy-datum,

f_date type sy-datum,

V_TOTAL LIKE BSEG-DMBTR,

SUM LIKE glt0-tslvt,

SUM1 LIKE glt0-tslvt,

SUM2 LIKE glt0-tslvt,

l_date type sydatum.

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,

current_m_bal like GLT0-TSLVT,

HSL_total LIKE GLT0-HSLVT,

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.

AT SELECTION-SCREEN ON SO_RACCT.

IF SO_RACCT-LOW IS INITIAL.

MESSAGE E000(ZGLM).

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.

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.

l_len = p_date+0(4).

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.

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.

data: new_racct LIKE GLT0-RACCT.

LOOP AT gt_data into wa_gt_data where RACCT IN SO_RACCT.

new_racct = gt_data-racct.

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.

wa_gt_data-hsl_total = wa_gt_data-hsl_total + wa_gt_data-Start_balance.

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-Start_balance + wa_gt_data-hsl12 +

wa_gt_data-hsl13 + wa_gt_data-hsl14 +

wa_gt_data-hsl15 + wa_gt_data-hsl16.

perform display_data.

ENDCASE.

ENDLOOP.

loop at gt_data.

at new racct.

skip 2.

write: /50 'GL no is:', wa_gt_data-racct COLOR 7.

write: /50 'comp code is', wa_gt_data-bukrs COLOR 7.

write: /50 'posting date ', P_DATE COLOR 7.

WRITE: /118 'OPENING BALANCE ' , result color 3.

endat.

modify gt_data.

endloop.

CLEAR: RESULT,

DEBIT,

CREDIT.

FORM display_data.

wa_gt_data-Start_balance = wa_gt_data-hslvt + wa_gt_data-hsl01.

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.

ENDFORM. "display_data

Plz help anyone

Regards,

sudharsan.