I have develop a Z report for opening and closing balance of a GL account.In this report opening balance is coming right but closing balance and credit amount is not coming correct as per std FS10n
IF T_BKPF[] ISNOTINITIAL.
*BREAK-POINT.
SELECT * FROM BSEG INTO
CORRESPONDING FIELDSOFTABLE T_BSEG
FORALL ENTRIES IN T_BKPF
WHERE
BUKRS = T_BKPF-BUKRS AND
BELNR = T_BKPF-BELNR AND
GJAHR = T_BKPF-GJAHR AND
HKONT IN S_HKONT.
LOOPAT T_BSEG.
IF T_BSEG-SHKZG = 'S'. " DEBIT
OPENING = OPENING + T_BSEG-DMBTR.
ELSE." CREDIT
OPENING = OPENING - T_BSEG-DMBTR.
ENDIF.
BALENCE = OPENING.
ENDLOOP.
ENDIF. " INITIAL
REFRESH T_BKPF.
REFRESH T_BSEG.
**********END OF OPENING
IF ALV = 'X'.
*
*CLEAR T_FINAL.
*T_FINAL-HKONT = 'OPENING'.
*T_FINAL-BALENCE = BALENCE.
*
*APPEND T_FINAL.
ENDIF.
CLEAR T_FINAL.
SELECT * FROM BKPF INTO CORRESPONDING FIELDSOFTABLE T_BKPF
WHERE
BUKRS IN S_BUKRS AND
BLDAT IN S_BLDAT AND
BUDAT IN S_BUDAT AND
BLART IN S_BLART AND
GJAHR IN S_GJAHR." AND
*XREVERSAL = ''. " DO NOT INCLUDE REVERSED/CANCEL DOCUMENTS
*LOOP AT T_BKPF.
*IF T_BKPF-XREVERSAL = 2.
* DELETE T_BKPF WHERE BELNR = T_BKPF-STBLG.
* DELETE T_BKPF.
*ENDIF.
*ENDLOOP.
LOOPAT T_BKPF.
SELECT * FROM BSEG
WHERE BUKRS = T_BKPF-BUKRS
AND BELNR = T_BKPF-BELNR
AND GJAHR = T_BKPF-GJAHR
AND HKONT IN S_HKONT.
IF SY-SUBRC = 0.
T_BSEG-BLART = T_BKPF-BLART. " DOCUMENT =
T_BSEG-BLDAT = T_BKPF-BLDAT. " DOCUMENT DATE
T_BSEG-USNAM = T_BKPF-USNAM. " USER NAME / CREATED BY
T_BSEG-XBLNR = T_BKPF-XBLNR. " REFERENCE
T_BSEG-BUDAT = T_BKPF-BUDAT . " from BKPF
T_BSEG-BLDAT = T_BKPF-BLDAT.
T_BSEG-BLART = T_BKPF-BLART . " From Bkpf
T_BSEG-BVORG = T_BKPF-BVORG . " From BKPF
T_BSEG-BUKRS = BSEG-BUKRS .
T_BSEG-BELNR = BSEG-BELNR .
T_BSEG-BUZEI = BSEG-BUZEI. " LINE ITEM NUMBER
T_BSEG-HKONT = BSEG-HKONT .
T_BSEG-DMBTR = BSEG-DMBTR .
T_BSEG-SHKZG = BSEG-SHKZG .
T_BSEG-SGTXT = BSEG-SGTXT .
T_BSEG-GJAHR = BSEG-GJAHR .
T_BSEG-AUFNR = BSEG-AUFNR.
T_BSEG-KOSTL = BSEG-KOSTL.
T_BSEG-BAL = BSEG-WRBTR.
T_BSEG-GSBER = BSEG-GSBER.
T_BSEG-LIFNR = BSEG-LIFNR. "vendor no
T_BSEG-KUNNR = BSEG-KUNNR. "Customer No
T_BSEG-ANLN1 = BSEG-ANLN1. "Asset No.
T_BSEG-PRCTR = BSEG-PRCTR. " profit center
T_BSEG-BLDAT = BKPF-BLDAT. " DOCUMENT DATE
T_BSEG-BUZEI = BSEG-BUZEI. " LINE ITEM NUMBER
T_BSEG-BSCHL = BSEG-BSCHL. " POSTING KEY
T_BSEG-PROJK = BSEG-PROJK. " WBS ELEMENT
APPEND T_BSEG.
ENDIF.
ENDSELECT.
ENDLOOP.
*T_BALENCE = BALENCE.
SORT T_BSEG BY BUDAT BELNR.
IF AG = 'X'. "RADIOBUTTON ENTRIES ON AGAINST GL
LOOPAT T_BSEG.
SELECT * FROM BSEG INTO WA_BSEG
WHERE BUKRS = T_BSEG-BUKRS
AND BELNR = T_BSEG-BELNR
AND GJAHR = T_BSEG-GJAHR
AND HKONT NE T_BSEG-HKONT.
IF SY-SUBRC = 0.
T_FINAL-DMBTR = 0.
T_FINAL-WRBTR = 0.
IF WA_BSEG-SHKZG = 'S'. " DEBIT AMOUNT
.
T_FINAL-DMBTR = WA_BSEG-DMBTR * ( -1 ).
DMBTR_DEBIT = DMBTR_DEBIT - T_FINAL-DMBTR.
ELSEIF WA_BSEG-SHKZG = 'H'. " CREDIT AMOUNT
T_FINAL-WRBTR = WA_BSEG-DMBTR .
DMBTR_CREDIT = DMBTR_CREDIT + T_FINAL-WRBTR.
ENDIF.
DMBTR_CREDIT = DMBTR_CREDIT + OPENING.
T_BALENCE = T_BALENCE + ( T_FINAL-DMBTR + T_FINAL-WRBTR ).
SELECTSINGLE LTEXT INTO T_LTEXT FROM T074T
WHERE
SPRAS = SY-LANGU AND
KOART = WA_BSEG-KOART AND
SHBKZ = WA_BSEG-UMSKZ.
IF SY-SUBRC = 0.
T_FINAL-LTEXT = T_LTEXT ." G/L ACCOUNT indicator
ENDIF.
SELECTSINGLE TXT50 INTO V_TXT50 FROM SKAT
WHERE SPRAS = SY-LANGU
AND SAKNR = WA_BSEG-HKONT
AND KTOPL ='SHIV'.
IF SY-SUBRC = 0.
T_FINAL-TXT50 = V_TXT50 ." G/L ACCOUNT
ENDIF.
T_FINAL-BLART = T_BSEG-BLART. " DOCUMENT =
T_FINAL-BLDAT = T_BSEG-BLDAT. " DOCUMENT DATE
T_FINAL-USNAM = T_BSEG-USNAM. " USER NAME / CREATED BY
T_FINAL-BUKRS = T_BSEG-BUKRS. " COMPANY CODE
T_FINAL-GJAHR = T_BSEG-GJAHR. " FISCAL YEAR
T_FINAL-BUDAT = T_BSEG-BUDAT. " POSTING DATE
T_FINAL-XBLNR = T_BSEG-XBLNR. " REFERENCE
T_FINAL-SGTXT = WA_BSEG-SGTXT. " LONG TEXT
T_FINAL-BSCHL = WA_BSEG-BSCHL. " POSTING KEY
T_FINAL-HKONT = WA_BSEG-HKONT ." G/L ACCOUNT
T_FINAL-BELNR = WA_BSEG-BELNR. "BKPF-BELNR. " DOCUMENT NUMBER
T_FINAL-GSBER = T_BSEG-GSBER.
T_FINAL-LIFNR = T_BSEG-LIFNR. "vendor no
T_FINAL-KUNNR = T_BSEG-KUNNR. "Customer No
T_FINAL-ANLN1 = T_BSEG-ANLN1. "Asset No.
T_FINAL-PRCTR = T_BSEG-PRCTR. " profit center
T_FINAL-BUZEI = T_BSEG-BUZEI. " LINE ITEM NUMBER
T_FINAL-PROJK = T_BSEG-PROJK.
T_FINAL-BALENCE = T_BALENCE.
APPEND T_FINAL.
CLEAR WA_BSEG.
ENDIF.
ENDSELECT.
ENDLOOP.
ENDIF.
IF SM = 'X'. " ENTRIES ON SAME GL
LOOPAT T_BSEG.
SELECT * FROM BSEG INTO WA_BSEG
WHERE BUKRS = T_BSEG-BUKRS
AND BELNR = T_BSEG-BELNR
AND GJAHR = T_BSEG-GJAHR
AND BUZEI = T_BSEG-BUZEI
AND HKONT EQ T_BSEG-HKONT.
IF SY-SUBRC = 0.
T_FINAL-DMBTR = 0.
T_FINAL-WRBTR = 0.
IF WA_BSEG-SHKZG = 'S'.
.
T_FINAL-DMBTR = WA_BSEG-DMBTR.
DMBTR_DEBIT = DMBTR_DEBIT + T_FINAL-DMBTR.
ELSEIF WA_BSEG-SHKZG = 'H'.
T_FINAL-WRBTR = WA_BSEG-DMBTR * ( -1 ) .
DMBTR_CREDIT = DMBTR_CREDIT + T_FINAL-WRBTR.
ENDIF.
T_BALENCE = T_BALENCE + ( T_FINAL-DMBTR + T_FINAL-WRBTR ).
*T_BALENCE = ( T_FINAL-DMBTR + T_FINAL-WRBTR ).
SELECTSINGLE LTEXT INTO T_LTEXT FROM T074T
WHERE
SPRAS = SY-LANGU AND
KOART = WA_BSEG-KOART AND
SHBKZ = WA_BSEG-UMSKZ.
IF SY-SUBRC = 0.
T_FINAL-LTEXT = T_LTEXT ." G/L ACCOUNT indicator
ENDIF.
SELECTSINGLE TXT50 INTO V_TXT50 FROM SKAT
WHERE SPRAS = SY-LANGU
AND SAKNR = WA_BSEG-HKONT
AND KTOPL ='SHIV'.
IF SY-SUBRC = 0.
T_FINAL-TXT50 = V_TXT50 ." G/L ACCOUNT
ENDIF.
T_FINAL-BLART = T_BSEG-BLART. " DOCUMENT =
T_FINAL-BLDAT = T_BSEG-BLDAT. " DOCUMENT DATE
T_FINAL-USNAM = T_BSEG-USNAM. " USER NAME / CREATED BY
T_FINAL-BUKRS = T_BSEG-BUKRS. " COMPANY CODE
T_FINAL-GJAHR = T_BSEG-GJAHR. " FISCAL YEAR
T_FINAL-BLDAT = T_BSEG-BLDAT. " DOCUMENT DATE
T_FINAL-BUDAT = T_BSEG-BUDAT. " POSTING DATE
T_FINAL-XBLNR = T_BSEG-XBLNR. " REFERENCE
T_FINAL-SGTXT = WA_BSEG-SGTXT. " LONG TEXT
T_FINAL-BSCHL = WA_BSEG-BSCHL. " POSTING KEY
T_FINAL-HKONT = WA_BSEG-HKONT ." G/L ACCOUNT
T_FINAL-BELNR = WA_BSEG-BELNR. "BKPF-BELNR. " DOCUMENT NUMBER
T_FINAL-GSBER = T_BSEG-GSBER.
T_FINAL-LIFNR = T_BSEG-LIFNR. "vendor no
T_FINAL-KUNNR = T_BSEG-KUNNR. "Customer No
T_FINAL-ANLN1 = T_BSEG-ANLN1. "Asset No.
T_FINAL-PRCTR = T_BSEG-PRCTR. " profit center
T_FINAL-BUZEI = T_BSEG-BUZEI. " LINE ITEM NUMBER
T_FINAL-PROJK = T_BSEG-PROJK.
T_FINAL-BALENCE = T_BALENCE.
APPEND T_FINAL.
CLEAR WA_BSEG.
ENDIF.
ENDSELECT.
ENDLOOP.
ENDIF. " RADIOBUTTON
CLOSING = DMBTR_DEBIT - DMBTR_CREDIT.
BALENCE = T_BALENCE.
LOOPAT S_HKONT.
SELECTSINGLE * FROM SKAT
WHERE SPRAS = SY-LANGU
AND SAKNR = S_HKONT-LOW
AND KTOPL ='SHIV'.
IF SY-SUBRC = 0.
CONCATENATE GLTEXT SKAT-TXT50 ':-' SKAT-SAKNR ','INTO GLTEXT.
ENDIF.
ENDLOOP.