Hi Uday,
I am sending you the code i used for the creation a Zreport based on FBL5N. Please check if it can of any help.
*&---------------------------------------------------------------------*
*& Report ZFBL5N *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT zfbl5n_new .
TABLES : bsid,knc1,lfc1.
TYPE-POOLS: slis.
TYPES: BEGINOF ty_bsid,
bukrs TYPE bsid-bukrs,
kunnr TYPE bsid-kunnr,
belnr TYPE bsid-belnr,
buzei TYPE bsid-buzei,
bldat TYPE bsid-bldat,
blart TYPE bsid-blart,
bschl TYPE bsid-bschl,
shkzg TYPE bsid-shkzg,
dmbtr TYPE bsid-dmbtr,
augdt TYPE bsid-augdt,
augbl TYPE bsid-augbl,
zuonr TYPE bsid-zuonr,
sgtxt TYPE bsid-sgtxt,
zfbdt TYPE bsid-zfbdt,
zterm TYPE bsid-zterm,
zbd1t TYPE bsid-zbd1t,
zbd2t TYPE bsid-zbd2t,
zbd3t TYPE bsid-zbd3t,
kkber TYPE bsid-kkber,
bstat TYPE bsid-bstat,
umskz TYPE bsid-umskz,
ENDOF ty_bsid.
TYPES: BEGINOF ty_bsik,
bukrs TYPE bsik-bukrs,
lifnr TYPE bsik-lifnr,
belnr TYPE bsik-belnr,
buzei TYPE bsik-buzei,
bldat TYPE bsik-bldat,
blart TYPE bsik-blart,
bschl TYPE bsik-bschl,
shkzg TYPE bsik-shkzg,
dmbtr TYPE bsik-dmbtr,
augdt TYPE bsik-augdt,
augbl TYPE bsik-augbl,
zuonr TYPE bsik-zuonr,
sgtxt TYPE bsik-sgtxt,
zfbdt TYPE bsik-zfbdt,
* KKBER TYPE bsik-kkber,
zterm TYPE bsik-zterm,
zbd1t TYPE bsik-zbd1t,
zbd2t TYPE bsik-zbd2t,
zbd3t TYPE bsik-zbd3t,
bstat TYPE bsid-bstat,
umskz TYPE bsid-umskz,
ENDOF ty_bsik.
TYPES: BEGINOF ty_final,
belnr TYPE bsid-belnr,
* buzei TYPE bsak-buzei,
bldat TYPE bsid-bldat,
blart TYPE bsid-blart,
chq TYPE bsid-zuonr,
debit TYPE bsid-dmbtr,
credit TYPE bsid-dmbtr,
txt TYPE bsid-sgtxt,
dateTYPE bsid-zfbdt,
kkber TYPE bsid-kkber,
zterm TYPE bsid-zterm,
augbl TYPE bsid-augbl,
augdt TYPE bsid-augdt,
flag TYPEc,
ENDOF ty_final.
TYPES : BEGINOF gs_openbal,
bukrs TYPE bapi3007_2-comp_code,
kunnr TYPE bapi3007_2-customer,
dmbtr TYPE bapi3007_2-lc_amount,
ENDOF gs_openbal.
DATA: it_bsid TYPESTANDARDTABLEOF ty_bsid,
it_bsik TYPESTANDARDTABLEOF ty_bsik,
it_final TYPESTANDARDTABLEOF ty_final.
DATA: wa_bsid TYPE ty_bsid,
wa_bsik TYPE ty_bsik,
wa_final TYPE ty_final.
DATA: w_days TYPE t5a4a-dlydy,
w_month TYPE t5a4a-dlymo,
w_year TYPE t5a4a-dlyyr,
w_date TYPE p0001-begda,
w_name1 TYPE kna1-name1,
w_ort01 TYPE kna1-ort01,
w_lifnr TYPE kna1-lifnr,
w_dmbtr1 TYPE bsid-dmbtr,
w_dmbtr2 TYPE bsid-dmbtr,
w_dmbtr3 TYPE bsad-dmbtr,
w_dmbtr4 TYPE bsad-dmbtr,
w_opbal TYPE bsid-dmbtr,
w_credit TYPE bsik-dmbtr,
w_debit TYPE bsik-dmbtr,
w_clobal TYPE bsik-dmbtr,
w_credit1 TYPE bsik-dmbtr,
w_debit1 TYPE bsik-dmbtr,
w_clobal1 TYPE bsik-dmbtr.
DATA: ld_yrper LIKE rwcoom-fiscper,
kunnr LIKE kna1-kunnr,
x_norm TYPEc,
x_park,
x_apar,
x_merk,
ok_code(4),
wa_x001 LIKE x001,
returnLIKE bapireturn,
line_count LIKE sy-loopc,
number_of_records TYPEi,
xindex LIKE sy-tabix,
openLIKE knc1-um01s,
temp(20),
closeLIKE knc1-um01s,
gjahr LIKE bsid-gjahr,
period LIKE bkpf-monat,
f(1),
v_char(2),
closec(20),
openc(20),
debit LIKE bapi3007_2-lc_amount,
credit LIKE debit.
DATA : v_dmbtr LIKE bsid-dmbtr.
*DATA : tot_debit LIKE t_ar-debit,
* tot_credit LIKE t_ar-credit.
DATA : t_kna1 LIKE kna1 OCCURS1 WITHHEADERLINE,
t_knb1 LIKE knb1 OCCURS10WITHHEADERLINE.
DATA ibsid LIKE bsid OCCURS0WITHHEADERLINE.
DATA ibsad LIKE bsad OCCURS0WITHHEADERLINE.
DATA ibsik LIKE bsik OCCURS0WITHHEADERLINE.
DATA ibsak LIKE bsak OCCURS0WITHHEADERLINE.
DATA : it_fieldcat_alv TYPE slis_t_fieldcat_alv,
wa_fieldcat_alv TYPE slis_fieldcat_alv,
is_layout_alv TYPE slis_layout_alv,
wa_layout_alv TYPE slis_layout_alv,
it_list_top_of_page TYPE slis_t_listheader,
it_events TYPE slis_t_event,
wa_events TYPELINEOF slis_t_event.
DATA : BEGINOF ibukrs OCCURS0,
bukrs LIKE t001-bukrs,
ENDOF ibukrs.
DATA : BEGINOF ikunnr1 OCCURS0,
kunnr LIKE knc1-kunnr,
ENDOF ikunnr1.
DATA : BEGINOF ikunnr OCCURS0,
kunnr LIKE knc1-kunnr,
bukrs LIKE t001-bukrs,
lifnr LIKE lfc1-lifnr,
ENDOF ikunnr.
DATA: it_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
DATA: r_bschl TYPE RANGE OF bschl,
wa_bschl LIKELINEOF r_bschl.
SELECTION-SCREENBEGINOFBLOCK b1 WITHFRAMETITLEtext-001.
PARAMETERS : p_kunnr TYPE bsid-kunnr OBLIGATORY,
p_bukrs TYPE bsid-bukrs OBLIGATORY.
SELECT-OPTIONS: so_budat FOR bsid-budat .
SELECTION-SCREENENDOFBLOCK b1.
SELECTION-SCREENBEGINOFBLOCK b2 WITHFRAMETITLEtext-002.
PARAMETERS : p_normal ASCHECKBOX,
p_spl ASCHECKBOX,
p_vendor ASCHECKBOX.
SELECTION-SCREENENDOFBLOCK b2.
PERFORM get_data.
PERFORM process_data.
*PERFORM calculate_openbal. " Commented by anish
PERFORM calculate_open_bal.
PERFORM calculate_closing_bal.
PERFORM build_catalog_sort USING it_sort.
PERFORM reuse_alv_events_get .
PERFORM display_data.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
SELECT bukrs kunnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t kkber
bstat umskz FROM bsid
INTOTABLE it_bsid
WHERE bukrs = p_bukrs
AND kunnr = p_kunnr
AND budat IN so_budat.
SELECT bukrs kunnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t kkber
bstat umskz FROM bsad
APPENDINGTABLE it_bsid
WHERE bukrs = p_bukrs
AND kunnr = p_kunnr
AND budat IN so_budat.
SELECTSINGLE name1 ort01 lifnr FROM kna1
INTO (w_name1 , w_ort01 , w_lifnr)
WHERE kunnr = p_kunnr.
IF p_vendor ISNOTINITIAL.
SELECT bukrs lifnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t
bstat umskz FROM bsik
APPENDINGTABLE it_bsik
WHERE bukrs = p_bukrs
AND lifnr = w_lifnr
AND budat IN so_budat.
SELECT bukrs lifnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t
bstat umskz FROM bsak
APPENDINGTABLE it_bsik
WHERE bukrs = p_bukrs
AND lifnr = w_lifnr
AND budat IN so_budat.
ENDIF.
SORT it_bsid BY bschl.
DELETE it_bsid WHERE bschl = '04'.
DELETE it_bsid WHERE bschl = '07'.
DELETE it_bsid WHERE bschl = '17'.
DELETE it_bsid WHERE bschl = '34'.
DELETE it_bsid WHERE bschl = '27'.
DELETE it_bsid WHERE bschl = '37'.
SORT it_bsik BY bschl.
DELETE it_bsik WHERE bschl = '04'.
DELETE it_bsik WHERE bschl = '07'.
DELETE it_bsik WHERE bschl = '17'.
DELETE it_bsik WHERE bschl = '34'.
DELETE it_bsik WHERE bschl = '27'.
DELETE it_bsik WHERE bschl = '37'.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM process_data .
DATA:okay TYPEcVALUE space.
w_month = '00'.
w_year = '00'.
SORT it_bsid BY bldat .
LOOPAT it_bsid INTO wa_bsid.
PERFORM check_item_ok USING p_normal
p_spl
p_vendor
* x_park
wa_bsid
CHANGING okay.
CHECK okay = 'X'.
wa_final-belnr = wa_bsid-belnr.
wa_final-bldat = wa_bsid-bldat.
wa_final-blart = wa_bsid-blart.
wa_final-txt = wa_bsid-sgtxt.
wa_final-kkber = wa_bsid-kkber.
wa_final-zterm = wa_bsid-zterm.
wa_final-augbl = wa_bsid-augbl.
wa_final-augdt = wa_bsid-augdt.
wa_final-flag = 'C'.
IF wa_bsid-blart = 'DZ'.
wa_final-chq = wa_bsid-zuonr.
ENDIF.
IF wa_bsid-shkzg = 'S'.
wa_final-debit = wa_bsid-dmbtr.
ELSEIF wa_bsid-shkzg = 'H'.
wa_final-credit = wa_bsid-dmbtr.
ENDIF.
w_credit = w_credit + wa_final-credit.
w_debit = w_debit + wa_final-debit.
****** Net due date
IF wa_bsid-zbd1t ISNOTINITIAL.
w_days = wa_bsid-zbd1t.
ELSEIF wa_bsid-zbd2t ISNOTINITIAL.
w_days = wa_bsid-zbd2t.
ELSEIF wa_bsid-zbd3t ISNOTINITIAL.
w_days = wa_bsid-zbd3t.
ENDIF.
IF w_days ISINITIAL.
wa_final-date = wa_bsid-zfbdt.
ELSE.
CALLFUNCTION'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = wa_bsid-zfbdt
days = w_days
months = w_month
signum = '+'
years = w_year
IMPORTING
calc_date = w_date.
.
wa_final-date = w_date.
ENDIF.
APPEND wa_final TO it_final.
CLEAR: w_days , w_date , wa_final .
ENDLOOP.
IF it_bsik ISNOTINITIAL.
CLEAR: w_days , w_date.
SORT it_bsik BY bldat.
LOOPAT it_bsik INTO wa_bsik.
wa_final-belnr = wa_bsik-belnr.
wa_final-bldat = wa_bsik-bldat.
wa_final-blart = wa_bsik-blart.
wa_final-txt = wa_bsik-sgtxt.
* wa_final-kkber = wa_bsik-kkber.
wa_final-zterm = wa_bsik-zterm.
wa_final-augbl = wa_bsik-augbl.
wa_final-augdt = wa_bsik-augdt.
wa_final-flag = 'V'.
IF wa_bsik-blart = 'DZ'.
wa_final-chq = wa_bsik-zuonr.
ENDIF.
IF wa_bsik-shkzg = 'S'.
wa_final-debit = wa_bsik-dmbtr.
ELSEIF wa_bsik-shkzg = 'H'.
wa_final-credit = wa_bsik-dmbtr.
ENDIF.
w_credit1 = w_credit1 + wa_final-credit.
w_debit1 = w_debit1 + wa_final-debit.
******* Net Due date
IF wa_bsik-zbd1t ISNOTINITIAL.
w_days = wa_bsik-zbd1t.
ELSEIF wa_bsik-zbd2t ISNOTINITIAL.
w_days = wa_bsik-zbd2t.
ELSEIF wa_bsik-zbd3t ISNOTINITIAL.
w_days = wa_bsik-zbd3t.
ENDIF.
IF w_days ISINITIAL.
wa_final-date = wa_bsik-zfbdt.
ELSE.
CALLFUNCTION'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = wa_bsik-zfbdt
days = w_days
months = w_month
signum = '+'
years = w_year
IMPORTING
calc_date = w_date.
.
ENDIF.
wa_final-date = w_date.
APPEND wa_final TO it_final.
CLEAR: wa_final.
ENDLOOP.
ENDIF.
ENDFORM. " PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_data .
wa_fieldcat_alv-fieldname = 'BELNR'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-003.
wa_fieldcat_alv-outputlen = '11'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'BLDAT'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-004.
wa_fieldcat_alv-outputlen = '13'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'BLART'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-005.
wa_fieldcat_alv-outputlen = '02'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'CHQ'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-006.
wa_fieldcat_alv-outputlen = '09'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'DEBIT'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-007.
wa_fieldcat_alv-outputlen = '15'.
wa_fieldcat_alv-do_sum = 'X'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'CREDIT'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-008.
wa_fieldcat_alv-outputlen = '15'.
wa_fieldcat_alv-do_sum = 'X'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'TXT'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-009.
wa_fieldcat_alv-outputlen = '50'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'DATE'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-010.
wa_fieldcat_alv-outputlen = '12'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'KKBER'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-011.
wa_fieldcat_alv-outputlen = '04'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'ZTERM'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-012.
wa_fieldcat_alv-outputlen = '13'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'AUGBL'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-013.
wa_fieldcat_alv-outputlen = '15'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'AUGDT'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-seltext_l = text-014.
wa_fieldcat_alv-outputlen = '17'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
wa_fieldcat_alv-fieldname = 'FLAG'.
wa_fieldcat_alv-tabname = 'IT_FINAL'.
wa_fieldcat_alv-tech = 'X'.
APPEND wa_fieldcat_alv TO it_fieldcat_alv.
CLEAR wa_fieldcat_alv.
CALLFUNCTION'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = wa_layout_alv
it_fieldcat = it_fieldcat_alv
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = it_sort
it_events = it_events
i_save = 'A'
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*
* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
* EXPORTING
* i_callback_program = sy-repid
* i_callback_top_of_page = 'TOP_OF_PAGE'
* is_layout = wa_layout_alv
* it_fieldcat = it_fieldcat_alv
* it_sort = it_sort
*** I_DEFAULT = 'X'
** i_save = 'A'
*** IT_EVENTS =
* TABLES
* t_outtab = it_final
* EXCEPTIONS
* program_error = 1
* OTHERS = 2
* .
* IF sy-subrc <> 0.
*** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
ENDFORM. " DISPLAY_DATA
*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&--------------------------------------------------------------------*
* Header at top of page.
*----------------------------------------------------------------------*
FORM top_of_page.
SKIP1.
WRITE: AT35'Account Statement from' , so_budat-low , 'to' , so_budat-high.
SKIP2.
WRITE: AT /5 'CUSTOMER:' , p_kunnr.
WRITE: AT35'Name:' , w_name1.
WRITE: AT /5 'Company:' , p_bukrs.
WRITE: AT35'City:' , w_ort01.
SKIP1.
WRITE: AT /5 'Opening Balance as on' , so_budat-low , ' ' , w_opbal LEFT-JUSTIFIED.
SKIP2.
ENDFORM. "TOP_OF_PAGE
*&--------------------------------------------------------------------*
*& Form END_OF_PAGE
*&--------------------------------------------------------------------*
* Footer at End of page.
*----------------------------------------------------------------------*
FORM end_of_page.
SKIP2.
IF so_budat-high ISNOTINITIAL.
WRITE: AT5'Closing Balance as on' , so_budat-high , ' ' , w_clobal LEFT-JUSTIFIED.
ELSE.
WRITE: AT5'Closing Balance ' , w_clobal LEFT-JUSTIFIED.
ENDIF.
ENDFORM. "end_of_page
*&---------------------------------------------------------------------*
*& Form CALCULATE_OPENBAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM calculate_openbal .
DATA:v_gjahr TYPE bsid-gjahr.
DATA: v_period LIKE t009b-poper,v_monat LIKE t001-periv.
CALLFUNCTION'FI_PERIOD_DETERMINE'
EXPORTING
i_budat = so_budat-low
i_bukrs = p_bukrs
* I_PERIV = ' '
* I_GJAHR = 0000
* I_MONAT = 00
* X_XMO16 = ' '
IMPORTING
e_gjahr = v_gjahr
* e_monat = v_monat
e_poper = v_period.
IF sy-subrc NE0.
ENDIF.
DATA: f_date LIKE sy-datum.
CALLFUNCTION'FIRST_DAY_IN_PERIOD_GET'
EXPORTING
i_gjahr = v_gjahr
i_monmit = 00
i_periv = 'V3'
i_poper = v_period
IMPORTING
e_date = f_date.
period = v_period - 1.
gjahr = v_gjahr.
DATA wa_kna1 LIKE kna1.
CALLFUNCTION'READ_KNA1'
EXPORTING
xkunnr = p_kunnr
IMPORTING
xkna1 = wa_kna1
EXCEPTIONS
key_incomplete = 1
not_authorized = 2
not_found = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE w023(zwww).
CALLSCREEN0010.
ENDIF.
MOVE-CORRESPONDING wa_kna1 TO t_kna1.
APPEND t_kna1.
SELECT kunnr FROM kna1 INTOTABLE ikunnr1
WHERE kunnr = p_kunnr.
SELECT bukrs FROM t001 INTOTABLE ibukrs
FORALL ENTRIES IN t_knb1
WHERE bukrs = t_knb1-bukrs.
LOOPAT ikunnr1.
LOOPAT ibukrs.
ikunnr-kunnr = ikunnr1-kunnr.
ikunnr-bukrs = ibukrs-bukrs.
READTABLE t_kna1 WITH KEY kunnr = ikunnr1-kunnr.
ikunnr-lifnr = t_kna1-lifnr.
APPEND ikunnr.
ENDLOOP.
ENDLOOP.
DELETE ikunnr WHERE bukrs NE p_bukrs.
LOOPAT ikunnr.
CLEAR: knc1,lfc1,f.
IFNOT ( ikunnr-kunnr ISINITIAL ) ANDNOT ( p_vendor ISINITIAL ).
SELECTSINGLE * FROM lfc1
WHERE gjahr = gjahr AND bukrs = ikunnr-bukrs
AND lifnr = ikunnr-lifnr.
ENDIF.
SELECTSINGLE * FROM knc1
WHERE gjahr = gjahr AND bukrs = p_bukrs
AND kunnr = p_kunnr.
IF sy-subrc = 0.
CASE period .
WHEN12.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +
knc1-um09s - knc1-um09h + knc1-um10s - knc1-um10h +
knc1-um11s - knc1-um11h + knc1-um12s - knc1-um12h.
IFNOT ( lfc1 ISINITIAL ).
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +
lfc1-um09s - lfc1-um09h + lfc1-um10s - lfc1-um10h +
lfc1-um11s - lfc1-um11h + lfc1-um12s - lfc1-um12h.
ENDIF.
WHEN11.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +
knc1-um09s - knc1-um09h + knc1-um10s - knc1-um10h +
knc1-um11s - knc1-um11h.
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +
lfc1-um09s - lfc1-um09h + lfc1-um10s - lfc1-um10h +
lfc1-um11s - lfc1-um11h.
ENDIF.
WHEN10.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +
knc1-um09s - knc1-um09h + knc1-um10s - knc1-um10h .
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +
lfc1-um09s - lfc1-um09h + lfc1-um10s - lfc1-um10h.
ENDIF.
WHEN9.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +
knc1-um09s - knc1-um09h .
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +
lfc1-um09s - lfc1-um09h.
ENDIF.
WHEN8.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h.
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h .
ENDIF.
WHEN7.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +
knc1-um07s - knc1-um07h .
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +
lfc1-um07s - lfc1-um07h.
ENDIF.
WHEN6.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h.
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h.
ENDIF.
WHEN5.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +
knc1-um05s - knc1-um05h .
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +
lfc1-um05s - lfc1-um05h.
ENDIF.
WHEN4.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h .
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h.
ENDIF.
WHEN3.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +
knc1-um03s - knc1-um03h .
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +
lfc1-um03s - lfc1-um03h.
ENDIF.
WHEN2.
open = knc1-umsav +
knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h .
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h .
ENDIF.
WHEN1.
open = knc1-umsav +
knc1-um01s - knc1-um01h.
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav +
lfc1-um01s - lfc1-um01h .
ENDIF.
WHEN0.
open = knc1-umsav .
IFNOT ( lfc1 ISINITIAL ) .
open = open + lfc1-umsav .
ENDIF.
ENDCASE.
ENDIF.
* v_dmbtr = open.
v_char = so_budat-low+6(2).
UNPACK v_char TO v_char.
IF v_char <> '01'.
CLEAR v_dmbtr.
SELECT * FROM bsid
INTO ibsid
WHERE budat >= f_date
AND budat < so_budat-low
AND kunnr = p_kunnr
*ikunnr-kunnr
AND gjahr = gjahr
AND bukrs = p_bukrs. "ikunnr-bukrs
* AND kkber IN kkber.
IF ibsid-shkzg = 'S'.
v_dmbtr = v_dmbtr + ibsid-dmbtr.
ELSE.
v_dmbtr = v_dmbtr - ibsid-dmbtr.
ENDIF.
ENDSELECT.
** getting the data from bsad - CLEARED ITEMS
SELECT * FROM bsad
INTO ibsad
WHERE budat >= f_date
AND budat < so_budat-low
AND kunnr = p_kunnr
*ikunnr-kunnr
AND gjahr = gjahr
AND bukrs = p_bukrs. "ikunnr-bukrs
* AND kkber IN kkber.
IF ibsad-shkzg = 'S'.
v_dmbtr = v_dmbtr + ibsad-dmbtr.
ELSE.
v_dmbtr = v_dmbtr - ibsad-dmbtr.
ENDIF.
ENDSELECT.
open = open + v_dmbtr.
ENDIF.
ENDLOOP.
w_opbal = open + v_dmbtr.
close = open.
* clear: w_dmbtr1 , w_dmbtr2 , w_dmbtr3 , w_dmbtr4 , w_opbal , w_clobal , w_clobal1.
*
* select sum( dmbtr ) from bsid INTO w_dmbtr1 WHERE bukrs = p_bukrs
* and kunnr = p_kunnr
* and budat < so_budat-low
* and shkzg = 'S'.
*
* select sum( dmbtr ) from bsid INTO w_dmbtr2 WHERE bukrs = p_bukrs
* and kunnr = p_kunnr
* and budat < so_budat-low
* and shkzg = 'H'.
* w_dmbtr2 = w_dmbtr2 * ( -1 ).
*
* select SUM( dmbtr ) from bsad INTO w_dmbtr3 WHERE bukrs = p_bukrs
* and kunnr = p_kunnr
* and budat < so_budat-low
* and augdt IN so_budat
* and shkzg = 'S'.
* select SUM( dmbtr ) from bsad INTO w_dmbtr4 WHERE bukrs = p_bukrs
* and kunnr = p_kunnr
* and budat < so_budat-low
* and augdt IN so_budat
* and shkzg = 'H'.
* w_dmbtr4 = w_dmbtr4 * ( -1 ).
*
* w_opbal = w_dmbtr1 + w_dmbtr3 + w_dmbtr2 + w_dmbtr4.
* IF p_vendor IS NOT INITIAL.
* CLEAR : w_dmbtr1 , w_dmbtr2 , w_dmbtr3 , w_dmbtr4.
*
* SELECT SUM( dmbtr ) FROM bsik INTO w_dmbtr1 WHERE bukrs = p_bukrs
* AND lifnr = w_lifnr
* AND budat < so_budat-low
* AND shkzg = 'S'.
*
* SELECT SUM( dmbtr ) FROM bsik INTO w_dmbtr2 WHERE bukrs = p_bukrs
* AND lifnr = w_lifnr
* AND budat < so_budat-low
* AND shkzg = 'H'.
* w_dmbtr2 = w_dmbtr2 * ( -1 ).
*
* SELECT SUM( dmbtr ) FROM bsak INTO w_dmbtr3 WHERE bukrs = p_bukrs
* AND lifnr = w_lifnr
* AND budat < so_budat-low
* AND augdt IN so_budat
* AND shkzg = 'S'.
* SELECT SUM( dmbtr ) FROM bsak INTO w_dmbtr4 WHERE bukrs = p_bukrs
* AND lifnr = w_lifnr
* AND budat < so_budat-low
* AND augdt IN so_budat
* AND shkzg = 'H'.
* w_dmbtr4 = w_dmbtr4 * ( -1 ).
*
* w_opbal = w_opbal + w_dmbtr1 + w_dmbtr3 + w_dmbtr2 + w_dmbtr4.
* w_clobal1 = w_opbal + w_debit1 - w_credit1.
* ENDIF.
IF w_clobal1 ISNOTINITIAL.
w_clobal = ( w_clobal1 + w_debit + w_debit1 ) - ( w_credit + w_credit1 ).
ELSE.
w_clobal = ( w_opbal + w_debit + w_debit1 ) - ( w_credit + w_credit1 )..
ENDIF.
*if p_vendor is initial.
* w_clobal = ( w_clobal1 + w_debit ) - w_credit1.
*endif.
ENDFORM. " CALCULATE_OPENBAL
*&---------------------------------------------------------------------*
*& Form BUILD_CATALOG_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_SORT text
*----------------------------------------------------------------------*
FORM build_catalog_sort USING p_it_sort TYPE slis_t_sortinfo_alv.
CLEAR wa_sort.
wa_sort-spos = '1'.
wa_sort-fieldname = 'FLAG'.
wa_sort-subtot ='X'.
APPEND wa_sort TO p_it_sort.
ENDFORM. " BUILD_CATALOG_SORT
*&---------------------------------------------------------------------*
*& Form REUSE_ALV_EVENTS_GET.
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --
*----------------------------------------------------------------------*
FORM reuse_alv_events_get .
CLEAR wa_events.
wa_events-name = 'TOP_OF_PAGE'.
wa_events-form = 'TOP_OF_PAGE'.
APPEND wa_events TO it_events.
CLEAR wa_events.
wa_events-name = 'END_OF_LIST'.
wa_events-form = 'END_OF_PAGE'.
APPEND wa_events TO it_events.
ENDFORM. " BUILD_CATALOG_SORT
*&---------------------------------------------------------------------*
*& Form CHECK_ITEM_OK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_NORMAL text
* -->P_P_SPL text
* -->P_P_VENDOR text
* -->P_WA_BSID text
* <--P_OKAY text
*----------------------------------------------------------------------*
FORM check_item_ok USING p_p_normal
p_p_spl
p_p_vendor
p_wa_bsid TYPE ty_bsid
CHANGING p_okay.
CLEAR p_okay.
* normal document:
IF p_p_normal = 'X'.
IF ( p_wa_bsid-bstat = space ) AND ( p_wa_bsid-umskz = space ).
p_okay = 'X'.
ENDIF.
ENDIF.
* SHB item:
IF p_p_spl = 'X'.
IF ( p_wa_bsid-umskz NE space ) AND ( p_wa_bsid-bstat NE'S' ) AND
( p_wa_bsid-bstat NE'V' ) AND ( p_wa_bsid-bstat NE'W' ) AND
( p_wa_bsid-bstat NE'Z' ).
p_okay = 'X'.
ENDIF.
ENDIF.
* Merkposten:
IF p_p_vendor = 'X'.
IF p_wa_bsid-bstat = 'S'.
p_okay = 'X'.
ENDIF.
ENDIF.
* parked document:
* if p_park = 'X'.
* if ( p_wa_bsid-bstat = 'V' ) or ( p_wa_bsid-bstat = 'W' ).
* p_okay = 'X'.
* endif.
ENDFORM. " CHECK_ITEM_OK
*&---------------------------------------------------------------------*
*& Form CALCULATE_OPEN_BAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM calculate_open_bal .
DATA : lt_openitm TYPETABLEOF bapi3007_2,
lw_openitm TYPE bapi3007_2,
lt_openitm1 TYPETABLEOF bapi3008_2,
lw_openitm1 TYPE bapi3008_2,
lw_return TYPE bapireturn,
lt_openbal TYPEHASHEDTABLEOF gs_openbal WITHUNIQUEKEY bukrs kunnr,
lw_openbal TYPE gs_openbal,
okay TYPEc,
lv_budat type bkpf-budat.
lv_budat = so_budat-low - 1.
CALLFUNCTION'BAPI_AR_ACC_GETOPENITEMS'
EXPORTING
companycode = p_bukrs
customer = p_kunnr
keydate = lv_budat
* NOTEDITEMS = ' '
* SECINDEX = ' '
IMPORTING
return = lw_return
TABLES
lineitems = lt_openitm
.
IF p_vendor = 'X'.
CALLFUNCTION'BAPI_AP_ACC_GETOPENITEMS'
EXPORTING
companycode = p_bukrs
vendor = p_kunnr
keydate = lv_budat
* NOTEDITEMS = ' '
IMPORTING
return = lw_return
TABLES
lineitems = lt_openitm1
.
ENDIF.
* DELETE lt_openitm WHERE post_key IN r_bschl.
* DELETE lt_openitm1 WHERE post_key IN r_bschl. " commented by kanika
LOOPAT lt_openitm INTO lw_openitm.
PERFORM check_item_ok1 USING p_normal
p_spl
p_vendor
lw_openitm
CHANGING okay.
CHECK okay = 'X'.
lw_openbal-bukrs = lw_openitm-comp_code.
lw_openbal-kunnr = lw_openitm-customer.
IF lw_openitm-db_cr_ind = 'S'.
lw_openbal-dmbtr = lw_openitm-lc_amount.
ELSEIF lw_openitm-db_cr_ind = 'H'.
lw_openbal-dmbtr = lw_openitm-lc_amount * -1.
ENDIF.
COLLECT lw_openbal INTO lt_openbal.
CLEAR lw_openbal.
ENDLOOP.
LOOPAT lt_openitm1 INTO lw_openitm1.
PERFORM check_item_ok2 USING p_normal
p_spl
p_vendor
lw_openitm1
CHANGING okay.
CHECK okay = 'X'.
lw_openbal-bukrs = lw_openitm1-comp_code.
lw_openbal-kunnr = lw_openitm1-vendor.
IF lw_openitm1-db_cr_ind = 'S'.
lw_openbal-dmbtr = lw_openitm1-lc_amount.
ELSEIF lw_openitm1-db_cr_ind = 'H'.
lw_openbal-dmbtr = lw_openitm1-lc_amount * -1.
ENDIF.
COLLECT lw_openbal INTO lt_openbal.
CLEAR lw_openbal.
ENDLOOP.
READTABLE lt_openbal INTO lw_openbal WITHKEY bukrs = p_bukrs
kunnr = p_kunnr.
IF sy-subrc = 0.
w_opbal = lw_openbal-dmbtr.
ENDIF.
ENDFORM. " CALCULATE_OPEN_BAL
*&---------------------------------------------------------------------*
*& Form CHECK_ITEM_OK1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_NORMAL text
* -->P_P_SPL text
* -->P_P_VENDOR text
* -->P_GW_OPENITEM text
* <--P_OKAY text
*----------------------------------------------------------------------*
FORM check_item_ok1 USING p_p_normal
p_p_spl
p_p_vendor
p_gw_openitem TYPE bapi3007_2
CHANGING p_okay.
CLEAR p_okay.
* normal document:
IF p_p_normal = 'X'.
IF ( p_gw_openitem-doc_status = space ) AND ( p_gw_openitem-sp_gl_ind = space ).
p_okay = 'X'.
ENDIF.
ENDIF.
* SHB item:
IF p_p_spl = 'X'.
IF ( p_gw_openitem-sp_gl_ind NE space ) AND ( p_gw_openitem-doc_status NE'S' ) AND
( p_gw_openitem-doc_status NE'V' ) AND ( p_gw_openitem-doc_status NE'W' ) AND
( p_gw_openitem-doc_status NE'Z' ).
p_okay = 'X'.
ENDIF.
ENDIF.
* Merkposten:
* IF p_p_vendor = 'X'.
* IF p_gw_openitem-doc_status = 'S'.
* p_okay = 'X'.
* ENDIF.
* ENDIF.
ENDFORM. " CHECK_ITEM_OK1
*&---------------------------------------------------------------------*
*& Form CHECK_ITEM_OK1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_NORMAL text
* -->P_P_SPL text
* -->P_P_VENDOR text
* -->P_GW_OPENITEM text
* <--P_OKAY text
*----------------------------------------------------------------------*
FORM check_item_ok2 USING p_p_normal
p_p_spl
p_p_vendor
p_gw_openitem TYPE bapi3008_2
CHANGING p_okay.
CLEAR p_okay.
* normal document:
IF p_p_normal = 'X'.
IF ( p_gw_openitem-doc_status = space ) AND ( p_gw_openitem-sp_gl_ind = space ).
p_okay = 'X'.
ENDIF.
ENDIF.
* SHB item:
IF p_p_spl = 'X'.
IF ( p_gw_openitem-sp_gl_ind NE space ) AND ( p_gw_openitem-doc_status NE'S' ) AND
( p_gw_openitem-doc_status NE'V' ) AND ( p_gw_openitem-doc_status NE'W' ) AND
( p_gw_openitem-doc_status NE'Z' ).
p_okay = 'X'.
ENDIF.
ENDIF.
* Merkposten:
* IF p_p_vendor = 'X'.
* IF p_gw_openitem-doc_status = 'S'.
* p_okay = 'X'.
* ENDIF.
* ENDIF.
ENDFORM. "check_item_ok2
*&---------------------------------------------------------------------*
*& Form CALCULATE_CLOSING_BAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM calculate_closing_bal .
DATA : lt_openitm TYPETABLEOF bapi3007_2,
lw_openitm TYPE bapi3007_2,
lt_openitm1 TYPETABLEOF bapi3008_2,
lw_openitm1 TYPE bapi3008_2,
lw_return TYPE bapireturn,
lt_openbal TYPEHASHEDTABLEOF gs_openbal WITHUNIQUEKEY bukrs kunnr,
lw_openbal TYPE gs_openbal,
okay TYPEc.
CALLFUNCTION'BAPI_AR_ACC_GETOPENITEMS'
EXPORTING
companycode = p_bukrs
customer = p_kunnr
keydate = so_budat-high
* NOTEDITEMS = ' '
* SECINDEX = ' '
IMPORTING
return = lw_return
TABLES
lineitems = lt_openitm
.
IF p_vendor = 'X'.
CALLFUNCTION'BAPI_AP_ACC_GETOPENITEMS'
EXPORTING
companycode = p_bukrs
vendor = p_kunnr
keydate = so_budat-high
* NOTEDITEMS = ' '
IMPORTING
return = lw_return
TABLES
lineitems = lt_openitm1
.
ENDIF.
*
* DELETE lt_openitm WHERE post_key IN r_bschl.
* DELETE lt_openitm1 WHERE post_key IN r_bschl. " commented by kanika
LOOPAT lt_openitm INTO lw_openitm.
PERFORM check_item_ok1 USING p_normal
p_spl
p_vendor
lw_openitm
CHANGING okay.
CHECK okay = 'X'.
lw_openbal-bukrs = lw_openitm-comp_code.
lw_openbal-kunnr = lw_openitm-customer.
IF lw_openitm-db_cr_ind = 'S'.
lw_openbal-dmbtr = lw_openitm-lc_amount.
ELSEIF lw_openitm-db_cr_ind = 'H'.
lw_openbal-dmbtr = lw_openitm-lc_amount * -1.
ENDIF.
COLLECT lw_openbal INTO lt_openbal.
CLEAR lw_openbal.
ENDLOOP.
LOOPAT lt_openitm1 INTO lw_openitm1.
PERFORM check_item_ok2 USING p_normal
p_spl
p_vendor
lw_openitm1
CHANGING okay.
CHECK okay = 'X'.
lw_openbal-bukrs = lw_openitm1-comp_code.
lw_openbal-kunnr = lw_openitm1-vendor.
IF lw_openitm1-db_cr_ind = 'S'.
lw_openbal-dmbtr = lw_openitm1-lc_amount.
ELSEIF lw_openitm1-db_cr_ind = 'H'.
lw_openbal-dmbtr = lw_openitm1-lc_amount * -1.
ENDIF.
COLLECT lw_openbal INTO lt_openbal.
CLEAR lw_openbal.
ENDLOOP.
* Opening balance on BUDAT-HIGH is closing balance
READTABLE lt_openbal INTO lw_openbal WITHKEY bukrs = p_bukrs
kunnr = p_kunnr.
IF sy-subrc = 0.
w_clobal = lw_openbal-dmbtr.
ENDIF.
ENDFORM. " CALCULATE_CLOSING_BAL
Best Regards,
Harsh