2008 Apr 25 3:38 PM
Hi experts,
this is the customer ledger report
in this report as program encounters the new customer i.e kunnr it should give opening balance of that customer but the problem is that it is taking the same opening balance of the first customer for all customer.
i am attaching the complete code so please help me in correcting ther code asap.the changes i am trying are in bold format in this program
*&---------------------------------------------------------------------*
*& Report ZCUST_LEDGER_04
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZCUST_LEDGER_04 NO STANDARD PAGE HEADING
LINE-SIZE 250..
TABLES: bsad, bsid, vbrk.
TYPE-POOLS : slis.
*----------------------------------------------------------------------*
* Data declaration for ALV Display.
*----------------------------------------------------------------------*
DATA : fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
layout TYPE slis_layout_alv,
x_save TYPE disvariant,
it_listhead1 TYPE slis_t_listheader, "List Header
it_listhead TYPE slis_t_listheader. "List Header
DATA: BEGIN OF it_bsid OCCURS 0,
bukrs TYPE bukrs, " COMPANY CODE
kunnr TYPE kunnr, " Customer
gjahr TYPE gjahr, " Fiscal Year
belnr TYPE belnr_d, " DOCUMENT NO.
blart TYPE blart, " DOC. TYPE
bldat TYPE bldat, " DOCUMENT DATE
xblnr TYPE xblnr1, " REFF. DOCUMENT NO.
budat TYPE budat, " Posting date
dmbtr LIKE bsis-dmbtr, " Amount
shkzg LIKE bsis-shkzg, " Debit/Credit Indication
debit LIKE bsis-dmbtr, " Debit
credit LIKE bsis-dmbtr, " CREDIT
rebzg TYPE rebzg, " Inv. Reff.
buzei TYPE buzei, " LINE ITEM NO.
augbl TYPE augbl, " CLEARING DOCUMENT NO.
augdt TYPE augdt, " CLEARING DOCUMENT DATE.
zfbdt TYPE dzfbdt, " DUE DATE
akont TYPE akont, " RECONCILLATION ACCOUNT
UMSKS type UMSKS,
END OF it_bsid.
DATA: BEGIN OF it_bsad OCCURS 0,
bukrs TYPE bukrs, " COMPANY CODE
kunnr TYPE kunnr, " Customer
gjahr TYPE gjahr, " Fiscal Year
belnr TYPE belnr_d, " DOCUMENT NO.
blart TYPE blart, " DOC. TYPE
bldat TYPE bldat, " DOCUMENT DATE
xblnr TYPE xblnr1, " REFF. DOCUMENT NO.
budat TYPE budat, " Posting date
rebzg TYPE rebzg, " Inv. Reff.
buzei TYPE buzei, " LINE ITEM NO.
augbl TYPE augbl, " CLEARING DOCUMENT NO.
augdt TYPE augdt, " CLEARING DOCUMENT DATE.
zfbdt TYPE dzfbdt, " DUE DATE
akont TYPE akont, " RECONCILLATION ACCOUNT
dmbtr LIKE bsis-dmbtr, " Amount
shkzg LIKE bsis-shkzg, " Debit/Credit Indication
debit LIKE bsis-dmbtr, " Debit
credit LIKE bsis-dmbtr, " CREDIT
END OF it_bsad.
DATA : BEGIN OF wa_opn,
hkont LIKE bsid-hkont, " General Ledger Account
kunnr like bsid-kunnr, " Customer Number 1
* txt50 LIKE skat-txt50, " GL A/C TEXT
dmbtr LIKE bsid-dmbtr, " Amount
shkzg LIKE bsid-shkzg, " Debit/Credit Indication
budat LIKE bsid-budat, " Posting date
kostl LIKE bsid-kostl, " Cost center
opnbl LIKE bsid-dmbtr, " Opening Balance Amount
Clsbl LIKE bsid-dmbtr, " Closing balnce Amount
UMSKS like bsid-UMSKS,
END OF wa_opn.
DATA: BEGIN OF it_payr OCCURS 0,
zbukr TYPE dzbukr, " Company Code
vblnr TYPE vblnr, " Document No.
chect TYPE chect, " Cheque No.
zaldt TYPE dzaldt, " Cheque Dt.
END OF it_payr.
DATA: BEGIN OF it_bseg OCCURS 0,
bukrs LIKE bseg-bukrs, " Company Code
hkont LIKE bseg-hkont, " GL A/C NO.
sgtxt LIKE bseg-sgtxt, " TEXT
belnr LIKE bseg-belnr, " DOCUMENT NO.
END OF it_bseg.
DATA: it_opn LIKE wa_opn OCCURS 0.
DATA: BEGIN OF wa_itab,
bukrs LIKE bsid-bukrs, " Company Code
hkont LIKE bsid-hkont, " GL A/C NO.
txt50 LIKE skat-txt50, " GL A/C TEXT
belnr LIKE bsid-belnr, " DOCUMENT NO.
blart LIKE bsid-blart, " doc Type
budat LIKE bsid-budat, " Posting date
bldat LIKE bsid-bldat, " Doc date
dmbtr LIKE bsid-dmbtr, " Amount
shkzg LIKE bsid-shkzg, " Debit/Credit Indication
debit LIKE bsid-dmbtr, " Debit
credit LIKE bsid-dmbtr, " CREDIT
xblnr LIKE bsid-xblnr, " Ref Doc
chect TYPE chect, " Cheque No.
zaldt TYPE dzaldt, " Cheque Dt.
aufnr LIKE bsid-aufnr, " Internal Order
inttext(20), " LIKE aufk-ktext," Internal Text
kostl LIKE bsid-kostl, " Cost center
ltext1(20), " LIKE cskt-ltext, " Cost Center Text
sgtxt LIKE bseg-sgtxt, " TEXT
kunnr like bsid-kunnr,
name1 like kna1-name1,
vbeln like bsid-vbeln,
fkdat like vbrk-fkdat,
opnbl LIKE bsid-dmbtr, " Opening Balance Amount
clsbl LIKE bsid-dmbtr, " Closing balnce Amount
count type i value 0,
spart like vbrk-spart, " Division
stblg like bkpf-stblg, " Ref.number
augbl like bseg-augbl, " Clearing Doc
zuonr like bsid-zuonr,
UMSKS like bsid-UMSKS,
* shkzg like bsid-shkzg,
END OF wa_itab.
DATA: BEGIN OF it_ctxt OCCURS 0,
kunnr TYPE kunnr, " Customer
name1 TYPE name1, " Customer TEXT
lifnr TYPE lifnr, " Vendor Code
END OF it_ctxt.
*********Internal Table for final table************************
DATA : itab LIKE wa_itab OCCURS 0.
DATA : wa_ctab LIKE wa_itab.
DATA : ctab LIKE wa_itab OCCURS 0.
DATA : itbl LIKE wa_itab OCCURS 0 with header line.
DATA : itab_final LIKE wa_itab OCCURS 0 with header line.
DATA : itab_write LIKE wa_itab OCCURS 0 with header line.
*********Internal table of amt calculation*********************
DATA : BEGIN OF it_amt OCCURS 0,
kunnr LIKE bsid-kunnr,
amount LIKE bsid-dmbtr,
hkont LIKE bsid-hkont,
txt50 LIKE skat-txt50, " GL A/C TEXT
name1 LIKE kna1-name1, " Customer TEXT
opnbl like bsid-dmbtr, " Opening Balance
END OF it_amt.
DATA : BEGIN OF it_amt1 OCCURS 0,
kunnr LIKE bsid-kunnr,
amount LIKE bsid-dmbtr,
hkont LIKE bsid-hkont,
txt50 LIKE skat-txt50, " GL A/C TEXT
name1 LIKE kna1-name1, " Customer TEXT
opnbl like bsid-dmbtr, " Opening Balance
amount22 like bsid-dmbtr,
END OF it_amt1.
*DATA : BEGIN OF it_skat OCCURS 0,
* txt50 LIKE skat-txt50,
* END OF it_skat.
********************Variables**********************************
DATA : amount1 LIKE bsid-dmbtr,
amount2 LIKE bsid-dmbtr,
clamt LIKE bsid-dmbtr.
DATA : v_kunnr LIKE bsid-kunnr.
DATA : ctext LIKE cskt-ktext.
DATA: dat LIKE sy-datum.
DATA: dat1(10),
yy(4),
mm(02),
dd(02).
DATA : tabix LIKE sy-tabix.
DATA : m type i value 0.
DATA : n type i value 0.
data : kk like kna1-kunnr.
****************Selection Screen****************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_kunnr FOR bsid-kunnr OBLIGATORY ,
s_budat FOR bsid-budat OBLIGATORY .
SELECTION-SCREEN END OF BLOCK b1.
*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
*SELECT-OPTIONS: s_kostl FOR bsid-kostl .
*SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
PARAMETERS: p_spart TYPE vbrk-spart .
*OBLIGATORY.
PARAMETERS: p_gjahr TYPE gjahr.
SELECTION-SCREEN END OF BLOCK b4.
*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
* parameters : merk radiobutton group b1,
* merk1 radiobutton group b1.
*
*SELECTION-SCREEN END OF BLOCK b2.
dd = 01.
mm = 04.
yy = p_gjahr.
CONCATENATE dd '.' mm '.' yy INTO dat1.
*************************************************************
* START OF SELECTION
*
*************************************************************
clear : itab_final, it_amt, itab, ctab, itab_write .
refresh: itab_final, it_amt, itab, ctab, itab_write.
TOP-OF-PAGE.
WRITE : /05 'SAKATA INX INDIA LTD'.
write : / sy-uline.
write :/05 'Acc.Doc.NO' color 3, 17 'Doc.Type' color 3 , 26 'Posting Date' color 3, 40 'Document Date' color 3,
54 'Clearing Doc' color 3, 67 'Opening Balance' color 3, 89 'Debit Amount' color 3, 107 'Credit Amount' color 3,
125 'Closing Balance' color 3, 144 'Invoice No.' color 3, 157 'Inv.Date' color 3, 169 'Reference' color 3,
187 'Assigment' color 3, 207 'C/D Indicator' color 3, 222 'Long Text' color 3.
*write : / sy-uline.
START-OF-SELECTION.
PERFORM sel_opn_bal.
PERFORM final_data.
* PERFORM get_final.
************** PERFORM FOR DISPLAYING DATA******************************
SORT itab BY kunnr budat.
* PERFORM display.
* PERFORM display_data.
PERFORM WRITE_DATA.
END-OF-PAGE.
* SKIP 1.
* WRITE: 70 'PAGE NO-', syst-pagno.
*&-----------------------------------
*&---------------------------------------------------------------------*
*& Form SEL_OPN_BAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sel_opn_bal .
dat = s_budat-low.
dat = dat - 1.
SELECT hkont " General Ledger Account
kunnr " Customer Number 1
dmbtr " Amount
shkzg " Debit/Credit Indication
budat " Posting Date
kostl " Cost center
UMSKS
FROM bsid
INTO corresponding fields of TABLE it_opn
WHERE kunnr IN s_kunnr
* AND kostl IN s_kostl
AND bukrs EQ 'SAIL'
AND budat between dat1 and dat
AND gjahr EQ p_gjahr.
SORT it_opn BY hkont budat KUNNR.
LOOP AT it_opn INTO wa_opn.
v_kunnr = wa_opn-kunnr.
ON CHANGE OF wa_opn-KUNNR.
LOOP AT it_opn INTO wa_opn WHERE kunnr = v_kunnr.
IF wa_opn-shkzg = 'S'.
amount1 = amount1 + wa_opn-dmbtr.
* wa_opn-opnbl = wa_opn-opnbl + wa_opn-dmbtr.
ELSEIF wa_opn-shkzg = 'H'.
amount2 = amount2 + wa_opn-dmbtr.
* wa_opn-clsbl = wa_opn-clsbl + wa_opn-dmbtr.
ENDIF.
ENDLOOP.
* SELECT SINGLE txt50
* FROM skat
* INTO it_amt-txt50
* WHERE saknr = wa_opn-hkont
* AND spras = 'EN'
* AND ktopl = '1000' .
it_amt-kunnr = wa_opn-kunnr.
it_amt-amount = amount1 - amount2.
it_amt-opnbl = amount1 - amount2.
* write : it_amt-opnbl.
DELETE ADJACENT DUPLICATES FROM it_amt COMPARING KUNNR AMOUNT.
APPEND it_amt.
CLEAR it_amt.
CLEAR: amount1, amount2.
ENDON.
ENDLOOP.
****** Cleared Items
SELECT hkont
kunnr
dmbtr
shkzg
budat
kostl
FROM bsad
INTO TABLE it_opn
WHERE kunnr IN s_kunnr
* AND kostl IN s_kostl
AND bukrs EQ 'SAIL'
AND budat BETWEEN dat1 AND dat
AND gjahr EQ p_gjahr.
SORT it_opn BY hkont budat KUNNR.
LOOP AT it_opn INTO wa_opn WHERE budat LT s_budat-low.
v_kunnr = wa_opn-kunnr.
ON CHANGE OF wa_opn-KUNNR.
LOOP AT it_opn INTO wa_opn WHERE kunnr = v_kunnr.
IF wa_opn-shkzg = 'S'.
amount1 = amount1 + wa_opn-dmbtr.
* wa_opn-opnbl = wa_opn-opnbl + wa_opn-dmbtr.
ELSEIF wa_opn-shkzg = 'H'.
amount2 = amount2 + wa_opn-dmbtr.
* wa_opn-clsbl = wa_opn-clsbl + wa_opn-dmbtr.
ENDIF.
ENDLOOP.
* SELECT SINGLE txt50
* FROM skat
* INTO it_amt-txt50
* WHERE saknr = wa_opn-hkont
* AND spras = 'EN'
* AND ktopl = '1000' .
it_amt1-kunnr = wa_opn-kunnr.
it_amt1-amount = amount1 - amount2.
it_amt1-opnbl = amount1 - amount2.
* write : it_amt-opnbl.
DELETE ADJACENT DUPLICATES FROM it_amt1 COMPARING KUNNR AMOUNT.
APPEND it_amt1.
CLEAR it_amt1.
CLEAR: amount1, amount2.
ENDON.
ENDLOOP.
*on change of wa_opn-kunnr.*
*loop at it_amt.*
*kk = it_amt-kunnr.*
*loop at it_amt1 where kunnr = kk.*
*it_amt1-amount22 = it_amt-opnbl + it_amt1-opnbl.*
*endloop.*
*append it_amt1.*
*endloop.*
endon.
********************
* sort it_amt by kunnr amount.
* LOOP AT IT_AMT.
* DELETE ADJACENT DUPLICATES FROM it_amt COMPARING all fields.
* MODIFY it_amt.
* collect it_amt.
* ENDLOOP.
ENDFORM. " SEL_OPN_BAL
*&---------------------------------------------------------------------*
*& Form FINAL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM final_data.
SELECT hkont
kunnr
belnr
shkzg
dmbtr
prctr
kostl
aufnr
bukrs
blart
bldat
kostl
vbeln
budat
xblnr
zuonr
sgtxt
augbl
shkzg
UMSKS
FROM bsid INTO CORRESPONDING FIELDS OF TABLE itab
WHERE kunnr IN s_kunnr
AND budat in s_budat
* AND kostl IN s_kostl
AND bukrs EQ 'SAIL'.
* AND UMSKZ = ' ' OR UMSKZ = 'A'.
* SELECT a~hkont
* a~kunnr
* a~belnr
* a~shkzg
* a~budat
* a~dmbtr
* a~prctr
* a~kostl
* a~aufnr
* a~bukrs
* a~blart
* a~xblnr
* a~bldat
* a~kostl
* a~vbeln
* a~sgtxt
* b~spart
* INTO CORRESPONDING FIELDS OF TABLE itab
* FROM bsid AS a
* left outer join vbrk AS b on a~kunnr = s_kunnr
** AND a~budat = s_budat
** AND a~kostl IN s_kostl
* AND a~bukrs = 'SAIL'
* AND b~spart = p_spart.
IF NOT itab[] IS INITIAL.
SELECT zbukr vblnr chect zaldt
FROM payr INTO TABLE it_payr
FOR ALL ENTRIES IN itab
WHERE zbukr = itab-bukrs
AND vblnr = itab-belnr.
* SELECT bukrs belnr sgtxt hkont
* FROM bseg INTO CORRESPONDING FIELDS OF TABLE it_bseg
* FOR ALL ENTRIES IN itab
* WHERE bukrs = itab-bukrs
* AND belnr = itab-belnr
* AND hkont = itab-hkont
* AND gjahr = p_gjahr.
SELECT kunnr name1
FROM kna1 INTO TABLE it_ctxt
FOR ALL ENTRIES IN it_bsid
WHERE kunnr = it_bsid-kunnr.
* AND spras = 'EN'.
sort itab by kunnr bldat opnbl.
LOOP AT itab INTO wa_itab where kunnr in s_kunnr.
tabix = 0.
tabix = sy-tabix.
* select single spart fkdat from vbrk into corresponding fields of wa_itab
* where vbeln = wa_itab-vbeln.
** and spart = p_spart.
* if wa_itab-spart = p_spart.
IF wa_itab-shkzg = 'H'.
wa_itab-credit = wa_itab-dmbtr.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING credit.
ELSEIF wa_itab-shkzg = 'S'.
wa_itab-debit = wa_itab-dmbtr.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING debit.
ENDIF.
************* Opening Balance Calculation
** on change of wa_itab-kunnr.
** clear : m,n.
** read table it_amt with key kunnr = wa_itab-kunnr.
** wa_itab-opnbl = it_amt-opnbl.
*** MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING opnbl.
** endon.
**
** n = n + 1.
** wa_itab-count = n.
** if n > 1.
** m = n - 1.
** read table itbl with key kunnr = wa_itab-kunnr count = m.
** wa_itab-opnbl = itbl-clsbl.
** endif.
** wa_itab-clsbl = wa_itab-opnbl + wa_itab-debit - wa_itab-credit.
************ Opening Balance Calculation
**
** SELECT SINGLE txt50 FROM skat INTO wa_itab-txt50
** WHERE saknr = wa_itab-hkont
** AND spras = 'EN'
** AND ktopl = '1000'.
* IF sy-subrc EQ 0.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING txt50.
* ENDIF.
SELECT SINGLE ltext INTO wa_itab-ltext1 FROM cskt
WHERE kostl = wa_itab-kostl.
IF sy-subrc EQ 0.
MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING ltext1.
ENDIF.
READ TABLE it_payr WITH KEY vblnr = wa_itab-belnr.
IF sy-subrc EQ 0.
wa_itab-chect = it_payr-chect.
wa_itab-zaldt = it_payr-zaldt.
MODIFY itab INDEX tabix FROM wa_itab TRANSPORTING chect zaldt.
ENDIF.
READ TABLE it_ctxt WITH KEY kunnr = wa_itab-kunnr.
IF sy-subrc EQ 0.
wa_itab-kunnr = it_ctxt-kunnr.
wa_itab-name1 = it_ctxt-name1.
MODIFY itab INDEX tabix FROM wa_itab TRANSPORTING kunnr name1.
ENDIF.
* READ TABLE it_bseg WITH KEY belnr = wa_itab-belnr
* hkont = wa_itab-hkont.
* IF sy-subrc EQ 0.
* wa_itab-sgtxt = it_bseg-sgtxt.
* MODIFY itab INDEX tabix FROM wa_itab TRANSPORTING sgtxt.
* ENDIF.
* SELECT SINGLE ktext INTO wa_itab-inttext FROM aufk
* WHERE aufnr = wa_itab-aufnr.
* IF sy-subrc EQ 0.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING aufnr.
* ENDIF.
* select single STBLG from bkpf into corresponding fields of wa_itab
* where belnr = wa_itab-belnr
* and gjahr = p_gjahr.
modify itab from wa_itab.
* append wa_itab to itbl.
CLEAR wa_itab.
* else.
* CLEAR wa_itab.
* endif.
ENDLOOP.
loop at itab into wa_itab .
* delete itab where debit = 0 and credit = 0.
* modify itab from wa_itab.
** collect wa_itab into itab_final.
append wa_itab to itab_final.
endloop.
ENDIF.
***************************************************
SELECT hkont
kunnr
belnr
shkzg
dmbtr
prctr
kostl
aufnr
bukrs
blart
bldat
kostl
vbeln
budat
xblnr
sgtxt
zuonr
augbl
shkzg
FROM bsad INTO CORRESPONDING FIELDS OF TABLE ctab
WHERE kunnr IN s_kunnr
AND budat in s_budat
* AND kostl IN s_kostl
AND bukrs EQ 'SAIL'
AND UMSKZ = ' ' OR UMSKZ = 'A'.
IF NOT ctab[] IS INITIAL.
SELECT zbukr vblnr chect zaldt
FROM payr INTO TABLE it_payr
FOR ALL ENTRIES IN ctab
WHERE zbukr = ctab-bukrs
AND vblnr = ctab-belnr.
SELECT kunnr name1
FROM kna1 INTO TABLE it_ctxt
FOR ALL ENTRIES IN it_bsad
WHERE kunnr = it_bsad-kunnr.
* AND spras = 'EN'.
sort ctab by kunnr budat.
LOOP AT ctab INTO wa_ctab.
* tabix = 0.
tabix = sy-tabix.
** select single spart fkdat from vbrk into corresponding fields of wa_ctab
** where vbeln = wa_ctab-vbeln.
** and spart = p_spart.
* if wa_ctab-spart = p_spart.
IF wa_ctab-shkzg = 'H'.
wa_ctab-credit = wa_ctab-dmbtr.
* MODIFY ctab INDEX sy-tabix FROM wa_ctab TRANSPORTING credit.
ELSEIF wa_ctab-shkzg = 'S'.
wa_ctab-debit = wa_ctab-dmbtr.
* MODIFY ctab INDEX sy-tabix FROM wa_ctab TRANSPORTING debit.
ENDIF.
SELECT SINGLE ltext INTO wa_ctab-ltext1 FROM cskt
WHERE kostl = wa_ctab-kostl.
IF sy-subrc EQ 0.
MODIFY ctab INDEX sy-tabix FROM wa_ctab TRANSPORTING ltext1.
ENDIF.
READ TABLE it_payr WITH KEY vblnr = wa_ctab-belnr.
IF sy-subrc EQ 0.
wa_ctab-chect = it_payr-chect.
wa_ctab-zaldt = it_payr-zaldt.
MODIFY ctab INDEX tabix FROM wa_ctab TRANSPORTING chect zaldt.
ENDIF.
READ TABLE it_ctxt WITH KEY kunnr = wa_ctab-kunnr.
IF sy-subrc EQ 0.
wa_ctab-kunnr = it_ctxt-kunnr.
wa_ctab-name1 = it_ctxt-name1.
MODIFY ctab INDEX tabix FROM wa_ctab TRANSPORTING kunnr name1.
ENDIF.
modify ctab from wa_ctab.
* append wa_ctab to itbl.
CLEAR wa_ctab.
* else.
* CLEAR wa_ctab.
* endif.
ENDLOOP.
loop at ctab into wa_ctab.
* delete ctab where debit = 0 and credit = 0.
* modify ctab from wa_ctab.
append wa_ctab to itab_final.
** collect wa_ctab into itab_final.
endloop.
ENDIF.
sort itab_final by kunnr budat.
loop at itab_final.
itab_write-kunnr = itab_final-kunnr.
itab_write-belnr = itab_final-belnr.
itab_write-blart = itab_final-blart.
itab_write-credit = itab_final-credit.
itab_write-debit = itab_final-debit.
itab_write-opnbl = itab_final-opnbl.
itab_write-clsbl = itab_final-clsbl.
itab_write-umsks = itab_final-umsks.
collect itab_write.
endloop.
*if merk = 'X'.
loop at itab_write where umsks <> 'G'.
on change of itab_write-kunnr.
clear : m,n.
*write : / amount22.
read table it_amt with key kunnr = itab_write-kunnr.
itab_write-opnbl = it_amt1-amount22.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING opnbl.
endon.
* on change of itab_write-belnr.
n = n + 1.
itab_write-count = n.
if n > 1.
m = n - 1.
read table itbl with key kunnr = itab_write-kunnr count = m.
itab_write-opnbl = itbl-clsbl.
endif.
* write : / itab_write-opnbl.
itab_write-clsbl = itab_write-opnbl + itab_write-debit - itab_write-credit.
SELECT single
shkzg
xblnr
sgtxt
zuonr
augbl
shkzg
budat
bldat
vbeln
umsks
FROM bsid INTO CORRESPONDING FIELDS OF itab_write where belnr = itab_write-belnr.
IF SY-SUBRC <> 0.
SELECT single
shkzg
xblnr
sgtxt
zuonr
augbl
shkzg
budat
bldat
vbeln
FROM bsad INTO CORRESPONDING FIELDS OF itab_write where belnr = itab_write-belnr.
ENDIF.
select single spart
fkdat from vbrk into corresponding fields of itab_write where vbeln = itab_write-vbeln.
append itab_write to itbl.
* endon.
modify itab_write.
* collect itab_write.
endloop.
ENDFORM. " FINAL_DATA
*&---------------------------------------------------------------------*
*& Form GET_FINAL
*&---------------------------------------------------------------------*
FORM get_final .
LOOP AT itab INTO wa_itab.
READ TABLE it_amt WITH KEY kunnr = wa_itab-kunnr.
IF sy-subrc NE 0.
it_amt-kunnr = wa_itab-kunnr.
it_amt-name1 = wa_itab-name1.
it_amt-amount = 0.
APPEND it_amt.
ENDIF.
ENDLOOP.
ENDFORM. " GET_FINAL
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
FORM display .
SORT it_amt BY hkont KUNNR.
LOOP AT it_amt.
* SKIP 1.
* WRITE: 60 'PAGE NO-', syst-pagno.
SKIP 2.
FORMAT INTENSIFIED ON.
**********company address header****************
WRITE: 50 text-005 COLOR 2,
/55 text-006,
/50 text-007.
* ULINE.
WRITE : /(15) 'REPORT FROM ',
s_budat-low, 'TO' , s_budat-high.
* ULINE.
* SKIP 2.
* ULINE.
* WRITE:/ sy-vline, (23) 'CUSTOMER',
* sy-vline, (11) it_amt-kunnr, (44) it_amt-name1,
* sy-vline, (23) 'OPEN BALANCE',
* sy-vline, (10) it_amt-amount color 3.
* sy-vline, (1) '',
* sy-vline, (40) ''.
WRITE:/23 'CUSTOMER', it_amt-kunnr, (44) it_amt-name1,
'OPEN BALANCE', it_amt-amount color 3.
* ULINE.
* " wa_itab-hkont, wa_itab-txt50,
* WRITE :/ sy-vline, (10) 'COST CENTER' ,
* sy-vline, (10) 'DOC TYPE' ,
* sy-vline, (10) 'DOC NUM' ,
* sy-vline, (10) 'POST DAT' ,
* sy-vline, (30) 'NARRATION' ,
* sy-vline, (10) 'REF NO' ,
* sy-vline, (10) 'REF DATE' ,
* sy-vline, (10) 'CHECK NO' ,
* sy-vline, (10) 'CHECK DATE' ,
* sy-vline, (15) 'DEBIT' ,
* sy-vline, (15) 'CREIDT'.
* sy-vline, (1) ''.
* ULINE.
WRITE :/5 'COST CENTER' , 20 'DOC TYPE' , 30 'DOC NUM' , 40 'POST DAT' ,
50 'NARRATION' ,
80 'REF NO' ,
90 'REF DATE' ,
100 'CHECK NO' ,
121 'CHECK DATE' ,
135 'DEBIT' ,
155 'CREIDT'.
* SORT itab BY budat kunnr.
LOOP AT itab INTO wa_itab WHERE kunnr = it_amt-kunnr and budat in s_budat.
amount1 = amount1 + wa_itab-debit.
amount2 = amount2 + wa_itab-credit.
* WRITE : / sy-vline, (10) wa_itab-kostl,
* sy-vline, (10) wa_itab-blart,
* sy-vline, (10) wa_itab-belnr,
* sy-vline, (10) wa_itab-budat,
* sy-vline, (30) wa_itab-sgtxt,
* sy-vline, (10) wa_itab-xblnr,
* sy-vline, (10) wa_itab-bldat,
* sy-vline, (10) wa_itab-chect,
* sy-vline, (10) wa_itab-zaldt,
* sy-vline, (15) wa_itab-debit COLOR 3,
* sy-vline, (15) wa_itab-credit COLOR 3,
* sy-vline, (1) ''.
WRITE : /5 wa_itab-kostl,
20 wa_itab-blart,
30 wa_itab-belnr,
40 wa_itab-budat,
50 wa_itab-sgtxt,
80 wa_itab-xblnr,
90 wa_itab-bldat,
100 wa_itab-chect,
121 wa_itab-zaldt,
135 wa_itab-debit COLOR 3,
155 wa_itab-credit COLOR 3.
ENDLOOP.
clamt = ( amount1 - amount2 ) + it_amt-amount.
ULINE.
WRITE: / sy-vline,(10) 'TOTAL' ,
sy-vline, (121) '' ,
sy-vline, (15) amount1 COLOR 3,
sy-vline, (15) amount2 COLOR 3,
sy-vline, (1) ''.
ULINE.
WRITE: / sy-vline, (23) 'CLOSING BALANCE',
sy-vline, (15) clamt COLOR 3,
sy-vline, (1) ''.
ULINE.
CLEAR : amount1,amount2.
* NEW-PAGE.
ENDLOOP.
ENDFORM. " DISPLAY
FORM display_data.
PERFORM build_fieldcatalog.
PERFORM disp_alv.
ENDFORM. " display_data
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
FORM build_fieldcatalog .
CLEAR: fieldcatalog,fieldcatalog[].
fieldcatalog-fieldname = 'KUNNR'.
*fieldcatalog-tabname = 'IT_FINAL'.
fieldcatalog-seltext_s = 'Customer Code'.
fieldcatalog-key = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NAME1'.
fieldcatalog-seltext_m = 'Customer Name'.
*fieldcatalog-key = 'X'.
*fieldcatalog-no_zero = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'BELNR'.
fieldcatalog-seltext_m = 'Acc.Doc.No'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'BLART'.
fieldcatalog-seltext_m = 'Doc. Type'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'BUDAT'.
fieldcatalog-seltext_m = 'Posting Date'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'AUGBL'.
fieldcatalog-seltext_m = 'Clearing Doc.'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ZUONR'.
fieldcatalog-seltext_m = 'Assignment'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'SGTXT'.
fieldcatalog-seltext_m = 'Long Text'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'XBLNR'.
fieldcatalog-seltext_m = 'Reference'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'Invoice No'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'FKDAT'.
fieldcatalog-seltext_m = 'Invoice Date'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
*fieldcatalog-fieldname = 'ZALDT'.
*fieldcatalog-seltext_m = 'AMT'.
*APPEND fieldcatalog TO fieldcatalog.
*CLEAR fieldcatalog.
fieldcatalog-fieldname = 'OPNBL'.
fieldcatalog-seltext_m = 'Opening Balance'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'DEBIT'.
fieldcatalog-seltext_m = 'Debit'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'CREDIT'.
fieldcatalog-seltext_m = 'Credit'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'CLSBL'.
fieldcatalog-seltext_m = 'Closing balance'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form disp_alv
*&---------------------------------------------------------------------*
FORM disp_alv .
layout-colwidth_optimize = 'X'.
DATA: w_repid TYPE sy-repid.
w_repid = sy-repid.
*----------------------------------------------------------------------
*----------------------------------------------------------------------
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
is_layout = layout
it_fieldcat = fieldcatalog[]
i_save = 'A'
is_variant = x_save
TABLES
t_outtab = itab_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. " disp_alv
FORM WRITE_DATA.
*loop at itab_final.
* select single
* sgtxt
* zuonr
* augbl from bseg into corresponding fields of itab_final where belnr = itab_final-belnr and shkzg = 'H'.
* select single xblnr
* budat from bkpf into corresponding fields of itab_final where belnr = itab_final-belnr.
*
* select single spart
* fkdat from vbrk into corresponding fields of itab_final where vbeln = itab_final-vbeln.
*modify itab_final.
*endloop.
clear : itab_write.
LOOP AT ITAB_write where kunnr in s_kunnr and budat in s_budat.
* where kunnr between s_kunnr-low and s_kunnr-high.
ON CHANGE OF itab_write-kunnr.
new-page.
* read table ctab into wa_ctab with key kunnr = itab_write-kunnr.
select single name1 from kna1 into itab_write-name1 where kunnr = itab_write-kunnr.
* itab_write-name1 = wa_ctab-name1.
write : / sy-uline.
* skip 2.
WRITE :/05 ITAB_write-KUNNR color 1, ITAB_write-NAME1 color 1, 'Period from', s_budat-low color 1, 'to', s_budat-high color 1.
write :/ sy-uline.
* write :/05 'Acc.Doc.NO' color 3, 17 'Doc.Type' color 3 , 26 'Posting Date' color 3, 40 'Document Date' color 3,
* 54 'Clearing Doc' color 3, 67 'Opening Balance' color 3, 89 'Debit Amount' color 3, 107 'Credit Amount' color 3,
* 125 'Closing Balance' color 3, 144 'Invoice No.' color 3, 157 'Inv.Date' color 3, 169 'Reference' color 3,
* 187 'Assigment' color 3, 207 'C/D Indicator' color 3, 222 'Long Text' color 3.
ENDON.
write : /05 itab_write-belnr, 17 itab_write-blart, 26 itab_write-budat, 40 itab_write-bldat, 55 itab_write-augbl,
67 itab_write-opnbl, 86 itab_write-debit, 105 itab_write-credit, 125 itab_write-clsbl, 144 itab_write-vbeln,
157 itab_write-fkdat, 169 itab_write-xblnr, 187 itab_write-zuonr, 207 itab_write-shkzg, 222 itab_write-sgtxt .
ENDLOOP.
write : / sy-uline.
ENDFORM.
Code Formatted by: Alvaro Tejada Galindo on Apr 25, 2008 4:46 PM
Hi experts,
this is the customer ledger report
in this report as program encounters the new customer i.e kunnr it should give opening balance of that customer but the problem is that it is taking the same opening balance of the first customer for all customer.
i am attaching the complete code so please help me in correcting ther code asap.the changes i am trying are in bold format in this program
*&---------------------------------------------------------------------*
*& Report ZCUST_LEDGER_04
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZCUST_LEDGER_04 NO STANDARD PAGE HEADING
LINE-SIZE 250..
TABLES: bsad, bsid, vbrk.
TYPE-POOLS : slis.
*----------------------------------------------------------------------*
* Data declaration for ALV Display.
*----------------------------------------------------------------------*
DATA : fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
layout TYPE slis_layout_alv,
x_save TYPE disvariant,
it_listhead1 TYPE slis_t_listheader, "List Header
it_listhead TYPE slis_t_listheader. "List Header
DATA: BEGIN OF it_bsid OCCURS 0,
bukrs TYPE bukrs, " COMPANY CODE
kunnr TYPE kunnr, " Customer
gjahr TYPE gjahr, " Fiscal Year
belnr TYPE belnr_d, " DOCUMENT NO.
blart TYPE blart, " DOC. TYPE
bldat TYPE bldat, " DOCUMENT DATE
xblnr TYPE xblnr1, " REFF. DOCUMENT NO.
budat TYPE budat, " Posting date
dmbtr LIKE bsis-dmbtr, " Amount
shkzg LIKE bsis-shkzg, " Debit/Credit Indication
debit LIKE bsis-dmbtr, " Debit
credit LIKE bsis-dmbtr, " CREDIT
rebzg TYPE rebzg, " Inv. Reff.
buzei TYPE buzei, " LINE ITEM NO.
augbl TYPE augbl, " CLEARING DOCUMENT NO.
augdt TYPE augdt, " CLEARING DOCUMENT DATE.
zfbdt TYPE dzfbdt, " DUE DATE
akont TYPE akont, " RECONCILLATION ACCOUNT
UMSKS type UMSKS,
END OF it_bsid.
DATA: BEGIN OF it_bsad OCCURS 0,
bukrs TYPE bukrs, " COMPANY CODE
kunnr TYPE kunnr, " Customer
gjahr TYPE gjahr, " Fiscal Year
belnr TYPE belnr_d, " DOCUMENT NO.
blart TYPE blart, " DOC. TYPE
bldat TYPE bldat, " DOCUMENT DATE
xblnr TYPE xblnr1, " REFF. DOCUMENT NO.
budat TYPE budat, " Posting date
rebzg TYPE rebzg, " Inv. Reff.
buzei TYPE buzei, " LINE ITEM NO.
augbl TYPE augbl, " CLEARING DOCUMENT NO.
augdt TYPE augdt, " CLEARING DOCUMENT DATE.
zfbdt TYPE dzfbdt, " DUE DATE
akont TYPE akont, " RECONCILLATION ACCOUNT
dmbtr LIKE bsis-dmbtr, " Amount
shkzg LIKE bsis-shkzg, " Debit/Credit Indication
debit LIKE bsis-dmbtr, " Debit
credit LIKE bsis-dmbtr, " CREDIT
END OF it_bsad.
DATA : BEGIN OF wa_opn,
hkont LIKE bsid-hkont, " General Ledger Account
kunnr like bsid-kunnr, " Customer Number 1
* txt50 LIKE skat-txt50, " GL A/C TEXT
dmbtr LIKE bsid-dmbtr, " Amount
shkzg LIKE bsid-shkzg, " Debit/Credit Indication
budat LIKE bsid-budat, " Posting date
kostl LIKE bsid-kostl, " Cost center
opnbl LIKE bsid-dmbtr, " Opening Balance Amount
Clsbl LIKE bsid-dmbtr, " Closing balnce Amount
UMSKS like bsid-UMSKS,
END OF wa_opn.
DATA: BEGIN OF it_payr OCCURS 0,
zbukr TYPE dzbukr, " Company Code
vblnr TYPE vblnr, " Document No.
chect TYPE chect, " Cheque No.
zaldt TYPE dzaldt, " Cheque Dt.
END OF it_payr.
DATA: BEGIN OF it_bseg OCCURS 0,
bukrs LIKE bseg-bukrs, " Company Code
hkont LIKE bseg-hkont, " GL A/C NO.
sgtxt LIKE bseg-sgtxt, " TEXT
belnr LIKE bseg-belnr, " DOCUMENT NO.
END OF it_bseg.
DATA: it_opn LIKE wa_opn OCCURS 0.
DATA: BEGIN OF wa_itab,
bukrs LIKE bsid-bukrs, " Company Code
hkont LIKE bsid-hkont, " GL A/C NO.
txt50 LIKE skat-txt50, " GL A/C TEXT
belnr LIKE bsid-belnr, " DOCUMENT NO.
blart LIKE bsid-blart, " doc Type
budat LIKE bsid-budat, " Posting date
bldat LIKE bsid-bldat, " Doc date
dmbtr LIKE bsid-dmbtr, " Amount
shkzg LIKE bsid-shkzg, " Debit/Credit Indication
debit LIKE bsid-dmbtr, " Debit
credit LIKE bsid-dmbtr, " CREDIT
xblnr LIKE bsid-xblnr, " Ref Doc
chect TYPE chect, " Cheque No.
zaldt TYPE dzaldt, " Cheque Dt.
aufnr LIKE bsid-aufnr, " Internal Order
inttext(20), " LIKE aufk-ktext," Internal Text
kostl LIKE bsid-kostl, " Cost center
ltext1(20), " LIKE cskt-ltext, " Cost Center Text
sgtxt LIKE bseg-sgtxt, " TEXT
kunnr like bsid-kunnr,
name1 like kna1-name1,
vbeln like bsid-vbeln,
fkdat like vbrk-fkdat,
opnbl LIKE bsid-dmbtr, " Opening Balance Amount
clsbl LIKE bsid-dmbtr, " Closing balnce Amount
count type i value 0,
spart like vbrk-spart, " Division
stblg like bkpf-stblg, " Ref.number
augbl like bseg-augbl, " Clearing Doc
zuonr like bsid-zuonr,
UMSKS like bsid-UMSKS,
* shkzg like bsid-shkzg,
END OF wa_itab.
DATA: BEGIN OF it_ctxt OCCURS 0,
kunnr TYPE kunnr, " Customer
name1 TYPE name1, " Customer TEXT
lifnr TYPE lifnr, " Vendor Code
END OF it_ctxt.
*********Internal Table for final table************************
DATA : itab LIKE wa_itab OCCURS 0.
DATA : wa_ctab LIKE wa_itab.
DATA : ctab LIKE wa_itab OCCURS 0.
DATA : itbl LIKE wa_itab OCCURS 0 with header line.
DATA : itab_final LIKE wa_itab OCCURS 0 with header line.
DATA : itab_write LIKE wa_itab OCCURS 0 with header line.
*********Internal table of amt calculation*********************
DATA : BEGIN OF it_amt OCCURS 0,
kunnr LIKE bsid-kunnr,
amount LIKE bsid-dmbtr,
hkont LIKE bsid-hkont,
txt50 LIKE skat-txt50, " GL A/C TEXT
name1 LIKE kna1-name1, " Customer TEXT
opnbl like bsid-dmbtr, " Opening Balance
END OF it_amt.
DATA : BEGIN OF it_amt1 OCCURS 0,
kunnr LIKE bsid-kunnr,
amount LIKE bsid-dmbtr,
hkont LIKE bsid-hkont,
txt50 LIKE skat-txt50, " GL A/C TEXT
name1 LIKE kna1-name1, " Customer TEXT
opnbl like bsid-dmbtr, " Opening Balance
amount22 like bsid-dmbtr,
END OF it_amt1.
*DATA : BEGIN OF it_skat OCCURS 0,
* txt50 LIKE skat-txt50,
* END OF it_skat.
********************Variables**********************************
DATA : amount1 LIKE bsid-dmbtr,
amount2 LIKE bsid-dmbtr,
clamt LIKE bsid-dmbtr.
DATA : v_kunnr LIKE bsid-kunnr.
DATA : ctext LIKE cskt-ktext.
DATA: dat LIKE sy-datum.
DATA: dat1(10),
yy(4),
mm(02),
dd(02).
DATA : tabix LIKE sy-tabix.
DATA : m type i value 0.
DATA : n type i value 0.
data : kk like kna1-kunnr.
****************Selection Screen****************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_kunnr FOR bsid-kunnr OBLIGATORY ,
s_budat FOR bsid-budat OBLIGATORY .
SELECTION-SCREEN END OF BLOCK b1.
*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
*SELECT-OPTIONS: s_kostl FOR bsid-kostl .
*SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
PARAMETERS: p_spart TYPE vbrk-spart .
*OBLIGATORY.
PARAMETERS: p_gjahr TYPE gjahr.
SELECTION-SCREEN END OF BLOCK b4.
*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
* parameters : merk radiobutton group b1,
* merk1 radiobutton group b1.
*
*SELECTION-SCREEN END OF BLOCK b2.
dd = 01.
mm = 04.
yy = p_gjahr.
CONCATENATE dd '.' mm '.' yy INTO dat1.
*************************************************************
* START OF SELECTION
*
*************************************************************
clear : itab_final, it_amt, itab, ctab, itab_write .
refresh: itab_final, it_amt, itab, ctab, itab_write.
TOP-OF-PAGE.
WRITE : /05 'SAKATA INX INDIA LTD'.
write : / sy-uline.
write :/05 'Acc.Doc.NO' color 3, 17 'Doc.Type' color 3 , 26 'Posting Date' color 3, 40 'Document Date' color 3,
54 'Clearing Doc' color 3, 67 'Opening Balance' color 3, 89 'Debit Amount' color 3, 107 'Credit Amount' color 3,
125 'Closing Balance' color 3, 144 'Invoice No.' color 3, 157 'Inv.Date' color 3, 169 'Reference' color 3,
187 'Assigment' color 3, 207 'C/D Indicator' color 3, 222 'Long Text' color 3.
*write : / sy-uline.
START-OF-SELECTION.
PERFORM sel_opn_bal.
PERFORM final_data.
* PERFORM get_final.
************** PERFORM FOR DISPLAYING DATA******************************
SORT itab BY kunnr budat.
* PERFORM display.
* PERFORM display_data.
PERFORM WRITE_DATA.
END-OF-PAGE.
* SKIP 1.
* WRITE: 70 'PAGE NO-', syst-pagno.
*&-----------------------------------
*&---------------------------------------------------------------------*
*& Form SEL_OPN_BAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sel_opn_bal .
dat = s_budat-low.
dat = dat - 1.
SELECT hkont " General Ledger Account
kunnr " Customer Number 1
dmbtr " Amount
shkzg " Debit/Credit Indication
budat " Posting Date
kostl " Cost center
UMSKS
FROM bsid
INTO corresponding fields of TABLE it_opn
WHERE kunnr IN s_kunnr
* AND kostl IN s_kostl
AND bukrs EQ 'SAIL'
AND budat between dat1 and dat
AND gjahr EQ p_gjahr.
SORT it_opn BY hkont budat KUNNR.
LOOP AT it_opn INTO wa_opn.
v_kunnr = wa_opn-kunnr.
ON CHANGE OF wa_opn-KUNNR.
LOOP AT it_opn INTO wa_opn WHERE kunnr = v_kunnr.
IF wa_opn-shkzg = 'S'.
amount1 = amount1 + wa_opn-dmbtr.
* wa_opn-opnbl = wa_opn-opnbl + wa_opn-dmbtr.
ELSEIF wa_opn-shkzg = 'H'.
amount2 = amount2 + wa_opn-dmbtr.
* wa_opn-clsbl = wa_opn-clsbl + wa_opn-dmbtr.
ENDIF.
ENDLOOP.
* SELECT SINGLE txt50
* FROM skat
* INTO it_amt-txt50
* WHERE saknr = wa_opn-hkont
* AND spras = 'EN'
* AND ktopl = '1000' .
it_amt-kunnr = wa_opn-kunnr.
it_amt-amount = amount1 - amount2.
it_amt-opnbl = amount1 - amount2.
* write : it_amt-opnbl.
DELETE ADJACENT DUPLICATES FROM it_amt COMPARING KUNNR AMOUNT.
APPEND it_amt.
CLEAR it_amt.
CLEAR: amount1, amount2.
ENDON.
ENDLOOP.
****** Cleared Items
SELECT hkont
kunnr
dmbtr
shkzg
budat
kostl
FROM bsad
INTO TABLE it_opn
WHERE kunnr IN s_kunnr
* AND kostl IN s_kostl
AND bukrs EQ 'SAIL'
AND budat BETWEEN dat1 AND dat
AND gjahr EQ p_gjahr.
SORT it_opn BY hkont budat KUNNR.
LOOP AT it_opn INTO wa_opn WHERE budat LT s_budat-low.
v_kunnr = wa_opn-kunnr.
ON CHANGE OF wa_opn-KUNNR.
LOOP AT it_opn INTO wa_opn WHERE kunnr = v_kunnr.
IF wa_opn-shkzg = 'S'.
amount1 = amount1 + wa_opn-dmbtr.
* wa_opn-opnbl = wa_opn-opnbl + wa_opn-dmbtr.
ELSEIF wa_opn-shkzg = 'H'.
amount2 = amount2 + wa_opn-dmbtr.
* wa_opn-clsbl = wa_opn-clsbl + wa_opn-dmbtr.
ENDIF.
ENDLOOP.
* SELECT SINGLE txt50
* FROM skat
* INTO it_amt-txt50
* WHERE saknr = wa_opn-hkont
* AND spras = 'EN'
* AND ktopl = '1000' .
it_amt1-kunnr = wa_opn-kunnr.
it_amt1-amount = amount1 - amount2.
it_amt1-opnbl = amount1 - amount2.
* write : it_amt-opnbl.
DELETE ADJACENT DUPLICATES FROM it_amt1 COMPARING KUNNR AMOUNT.
APPEND it_amt1.
CLEAR it_amt1.
CLEAR: amount1, amount2.
ENDON.
ENDLOOP.
*on change of wa_opn-kunnr.*
*loop at it_amt.*
*kk = it_amt-kunnr.*
*loop at it_amt1 where kunnr = kk.*
*it_amt1-amount22 = it_amt-opnbl + it_amt1-opnbl.*
*endloop.*
*append it_amt1.*
*endloop.*
endon.
********************
* sort it_amt by kunnr amount.
* LOOP AT IT_AMT.
* DELETE ADJACENT DUPLICATES FROM it_amt COMPARING all fields.
* MODIFY it_amt.
* collect it_amt.
* ENDLOOP.
ENDFORM. " SEL_OPN_BAL
*&---------------------------------------------------------------------*
*& Form FINAL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM final_data.
SELECT hkont
kunnr
belnr
shkzg
dmbtr
prctr
kostl
aufnr
bukrs
blart
bldat
kostl
vbeln
budat
xblnr
zuonr
sgtxt
augbl
shkzg
UMSKS
FROM bsid INTO CORRESPONDING FIELDS OF TABLE itab
WHERE kunnr IN s_kunnr
AND budat in s_budat
* AND kostl IN s_kostl
AND bukrs EQ 'SAIL'.
* AND UMSKZ = ' ' OR UMSKZ = 'A'.
* SELECT a~hkont
* a~kunnr
* a~belnr
* a~shkzg
* a~budat
* a~dmbtr
* a~prctr
* a~kostl
* a~aufnr
* a~bukrs
* a~blart
* a~xblnr
* a~bldat
* a~kostl
* a~vbeln
* a~sgtxt
* b~spart
* INTO CORRESPONDING FIELDS OF TABLE itab
* FROM bsid AS a
* left outer join vbrk AS b on a~kunnr = s_kunnr
** AND a~budat = s_budat
** AND a~kostl IN s_kostl
* AND a~bukrs = 'SAIL'
* AND b~spart = p_spart.
IF NOT itab[] IS INITIAL.
SELECT zbukr vblnr chect zaldt
FROM payr INTO TABLE it_payr
FOR ALL ENTRIES IN itab
WHERE zbukr = itab-bukrs
AND vblnr = itab-belnr.
* SELECT bukrs belnr sgtxt hkont
* FROM bseg INTO CORRESPONDING FIELDS OF TABLE it_bseg
* FOR ALL ENTRIES IN itab
* WHERE bukrs = itab-bukrs
* AND belnr = itab-belnr
* AND hkont = itab-hkont
* AND gjahr = p_gjahr.
SELECT kunnr name1
FROM kna1 INTO TABLE it_ctxt
FOR ALL ENTRIES IN it_bsid
WHERE kunnr = it_bsid-kunnr.
* AND spras = 'EN'.
sort itab by kunnr bldat opnbl.
LOOP AT itab INTO wa_itab where kunnr in s_kunnr.
tabix = 0.
tabix = sy-tabix.
* select single spart fkdat from vbrk into corresponding fields of wa_itab
* where vbeln = wa_itab-vbeln.
** and spart = p_spart.
* if wa_itab-spart = p_spart.
IF wa_itab-shkzg = 'H'.
wa_itab-credit = wa_itab-dmbtr.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING credit.
ELSEIF wa_itab-shkzg = 'S'.
wa_itab-debit = wa_itab-dmbtr.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING debit.
ENDIF.
************* Opening Balance Calculation
** on change of wa_itab-kunnr.
** clear : m,n.
** read table it_amt with key kunnr = wa_itab-kunnr.
** wa_itab-opnbl = it_amt-opnbl.
*** MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING opnbl.
** endon.
**
** n = n + 1.
** wa_itab-count = n.
** if n > 1.
** m = n - 1.
** read table itbl with key kunnr = wa_itab-kunnr count = m.
** wa_itab-opnbl = itbl-clsbl.
** endif.
** wa_itab-clsbl = wa_itab-opnbl + wa_itab-debit - wa_itab-credit.
************ Opening Balance Calculation
**
** SELECT SINGLE txt50 FROM skat INTO wa_itab-txt50
** WHERE saknr = wa_itab-hkont
** AND spras = 'EN'
** AND ktopl = '1000'.
* IF sy-subrc EQ 0.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING txt50.
* ENDIF.
SELECT SINGLE ltext INTO wa_itab-ltext1 FROM cskt
WHERE kostl = wa_itab-kostl.
IF sy-subrc EQ 0.
MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING ltext1.
ENDIF.
READ TABLE it_payr WITH KEY vblnr = wa_itab-belnr.
IF sy-subrc EQ 0.
wa_itab-chect = it_payr-chect.
wa_itab-zaldt = it_payr-zaldt.
MODIFY itab INDEX tabix FROM wa_itab TRANSPORTING chect zaldt.
ENDIF.
READ TABLE it_ctxt WITH KEY kunnr = wa_itab-kunnr.
IF sy-subrc EQ 0.
wa_itab-kunnr = it_ctxt-kunnr.
wa_itab-name1 = it_ctxt-name1.
MODIFY itab INDEX tabix FROM wa_itab TRANSPORTING kunnr name1.
ENDIF.
* READ TABLE it_bseg WITH KEY belnr = wa_itab-belnr
* hkont = wa_itab-hkont.
* IF sy-subrc EQ 0.
* wa_itab-sgtxt = it_bseg-sgtxt.
* MODIFY itab INDEX tabix FROM wa_itab TRANSPORTING sgtxt.
* ENDIF.
* SELECT SINGLE ktext INTO wa_itab-inttext FROM aufk
* WHERE aufnr = wa_itab-aufnr.
* IF sy-subrc EQ 0.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING aufnr.
* ENDIF.
* select single STBLG from bkpf into corresponding fields of wa_itab
* where belnr = wa_itab-belnr
* and gjahr = p_gjahr.
modify itab from wa_itab.
* append wa_itab to itbl.
CLEAR wa_itab.
* else.
* CLEAR wa_itab.
* endif.
ENDLOOP.
loop at itab into wa_itab .
* delete itab where debit = 0 and credit = 0.
* modify itab from wa_itab.
** collect wa_itab into itab_final.
append wa_itab to itab_final.
endloop.
ENDIF.
***************************************************
SELECT hkont
kunnr
belnr
shkzg
dmbtr
prctr
kostl
aufnr
bukrs
blart
bldat
kostl
vbeln
budat
xblnr
sgtxt
zuonr
augbl
shkzg
FROM bsad INTO CORRESPONDING FIELDS OF TABLE ctab
WHERE kunnr IN s_kunnr
AND budat in s_budat
* AND kostl IN s_kostl
AND bukrs EQ 'SAIL'
AND UMSKZ = ' ' OR UMSKZ = 'A'.
IF NOT ctab[] IS INITIAL.
SELECT zbukr vblnr chect zaldt
FROM payr INTO TABLE it_payr
FOR ALL ENTRIES IN ctab
WHERE zbukr = ctab-bukrs
AND vblnr = ctab-belnr.
SELECT kunnr name1
FROM kna1 INTO TABLE it_ctxt
FOR ALL ENTRIES IN it_bsad
WHERE kunnr = it_bsad-kunnr.
* AND spras = 'EN'.
sort ctab by kunnr budat.
LOOP AT ctab INTO wa_ctab.
* tabix = 0.
tabix = sy-tabix.
** select single spart fkdat from vbrk into corresponding fields of wa_ctab
** where vbeln = wa_ctab-vbeln.
** and spart = p_spart.
* if wa_ctab-spart = p_spart.
IF wa_ctab-shkzg = 'H'.
wa_ctab-credit = wa_ctab-dmbtr.
* MODIFY ctab INDEX sy-tabix FROM wa_ctab TRANSPORTING credit.
ELSEIF wa_ctab-shkzg = 'S'.
wa_ctab-debit = wa_ctab-dmbtr.
* MODIFY ctab INDEX sy-tabix FROM wa_ctab TRANSPORTING debit.
ENDIF.
SELECT SINGLE ltext INTO wa_ctab-ltext1 FROM cskt
WHERE kostl = wa_ctab-kostl.
IF sy-subrc EQ 0.
MODIFY ctab INDEX sy-tabix FROM wa_ctab TRANSPORTING ltext1.
ENDIF.
READ TABLE it_payr WITH KEY vblnr = wa_ctab-belnr.
IF sy-subrc EQ 0.
wa_ctab-chect = it_payr-chect.
wa_ctab-zaldt = it_payr-zaldt.
MODIFY ctab INDEX tabix FROM wa_ctab TRANSPORTING chect zaldt.
ENDIF.
READ TABLE it_ctxt WITH KEY kunnr = wa_ctab-kunnr.
IF sy-subrc EQ 0.
wa_ctab-kunnr = it_ctxt-kunnr.
wa_ctab-name1 = it_ctxt-name1.
MODIFY ctab INDEX tabix FROM wa_ctab TRANSPORTING kunnr name1.
ENDIF.
modify ctab from wa_ctab.
* append wa_ctab to itbl.
CLEAR wa_ctab.
* else.
* CLEAR wa_ctab.
* endif.
ENDLOOP.
loop at ctab into wa_ctab.
* delete ctab where debit = 0 and credit = 0.
* modify ctab from wa_ctab.
append wa_ctab to itab_final.
** collect wa_ctab into itab_final.
endloop.
ENDIF.
sort itab_final by kunnr budat.
loop at itab_final.
itab_write-kunnr = itab_final-kunnr.
itab_write-belnr = itab_final-belnr.
itab_write-blart = itab_final-blart.
itab_write-credit = itab_final-credit.
itab_write-debit = itab_final-debit.
itab_write-opnbl = itab_final-opnbl.
itab_write-clsbl = itab_final-clsbl.
itab_write-umsks = itab_final-umsks.
collect itab_write.
endloop.
*if merk = 'X'.
loop at itab_write where umsks <> 'G'.
on change of itab_write-kunnr.
clear : m,n.
*write : / amount22.
read table it_amt with key kunnr = itab_write-kunnr.
itab_write-opnbl = it_amt1-amount22.
* MODIFY itab INDEX sy-tabix FROM wa_itab TRANSPORTING opnbl.
endon.
* on change of itab_write-belnr.
n = n + 1.
itab_write-count = n.
if n > 1.
m = n - 1.
read table itbl with key kunnr = itab_write-kunnr count = m.
itab_write-opnbl = itbl-clsbl.
endif.
* write : / itab_write-opnbl.
itab_write-clsbl = itab_write-opnbl + itab_write-debit - itab_write-credit.
SELECT single
shkzg
xblnr
sgtxt
zuonr
augbl
shkzg
budat
bldat
vbeln
umsks
FROM bsid INTO CORRESPONDING FIELDS OF itab_write where belnr = itab_write-belnr.
IF SY-SUBRC <> 0.
SELECT single
shkzg
xblnr
sgtxt
zuonr
augbl
shkzg
budat
bldat
vbeln
FROM bsad INTO CORRESPONDING FIELDS OF itab_write where belnr = itab_write-belnr.
ENDIF.
select single spart
fkdat from vbrk into corresponding fields of itab_write where vbeln = itab_write-vbeln.
append itab_write to itbl.
* endon.
modify itab_write.
* collect itab_write.
endloop.
ENDFORM. " FINAL_DATA
*&---------------------------------------------------------------------*
*& Form GET_FINAL
*&---------------------------------------------------------------------*
FORM get_final .
LOOP AT itab INTO wa_itab.
READ TABLE it_amt WITH KEY kunnr = wa_itab-kunnr.
IF sy-subrc NE 0.
it_amt-kunnr = wa_itab-kunnr.
it_amt-name1 = wa_itab-name1.
it_amt-amount = 0.
APPEND it_amt.
ENDIF.
ENDLOOP.
ENDFORM. " GET_FINAL
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
FORM display .
SORT it_amt BY hkont KUNNR.
LOOP AT it_amt.
* SKIP 1.
* WRITE: 60 'PAGE NO-', syst-pagno.
SKIP 2.
FORMAT INTENSIFIED ON.
**********company address header****************
WRITE: 50 text-005 COLOR 2,
/55 text-006,
/50 text-007.
* ULINE.
WRITE : /(15) 'REPORT FROM ',
s_budat-low, 'TO' , s_budat-high.
* ULINE.
* SKIP 2.
* ULINE.
* WRITE:/ sy-vline, (23) 'CUSTOMER',
* sy-vline, (11) it_amt-kunnr, (44) it_amt-name1,
* sy-vline, (23) 'OPEN BALANCE',
* sy-vline, (10) it_amt-amount color 3.
* sy-vline, (1) '',
* sy-vline, (40) ''.
WRITE:/23 'CUSTOMER', it_amt-kunnr, (44) it_amt-name1,
'OPEN BALANCE', it_amt-amount color 3.
* ULINE.
* " wa_itab-hkont, wa_itab-txt50,
* WRITE :/ sy-vline, (10) 'COST CENTER' ,
* sy-vline, (10) 'DOC TYPE' ,
* sy-vline, (10) 'DOC NUM' ,
* sy-vline, (10) 'POST DAT' ,
* sy-vline, (30) 'NARRATION' ,
* sy-vline, (10) 'REF NO' ,
* sy-vline, (10) 'REF DATE' ,
* sy-vline, (10) 'CHECK NO' ,
* sy-vline, (10) 'CHECK DATE' ,
* sy-vline, (15) 'DEBIT' ,
* sy-vline, (15) 'CREIDT'.
* sy-vline, (1) ''.
* ULINE.
WRITE :/5 'COST CENTER' , 20 'DOC TYPE' , 30 'DOC NUM' , 40 'POST DAT' ,
50 'NARRATION' ,
80 'REF NO' ,
90 'REF DATE' ,
100 'CHECK NO' ,
121 'CHECK DATE' ,
135 'DEBIT' ,
155 'CREIDT'.
* SORT itab BY budat kunnr.
LOOP AT itab INTO wa_itab WHERE kunnr = it_amt-kunnr and budat in s_budat.
amount1 = amount1 + wa_itab-debit.
amount2 = amount2 + wa_itab-credit.
* WRITE : / sy-vline, (10) wa_itab-kostl,
* sy-vline, (10) wa_itab-blart,
* sy-vline, (10) wa_itab-belnr,
* sy-vline, (10) wa_itab-budat,
* sy-vline, (30) wa_itab-sgtxt,
* sy-vline, (10) wa_itab-xblnr,
* sy-vline, (10) wa_itab-bldat,
* sy-vline, (10) wa_itab-chect,
* sy-vline, (10) wa_itab-zaldt,
* sy-vline, (15) wa_itab-debit COLOR 3,
* sy-vline, (15) wa_itab-credit COLOR 3,
* sy-vline, (1) ''.
WRITE : /5 wa_itab-kostl,
20 wa_itab-blart,
30 wa_itab-belnr,
40 wa_itab-budat,
50 wa_itab-sgtxt,
80 wa_itab-xblnr,
90 wa_itab-bldat,
100 wa_itab-chect,
121 wa_itab-zaldt,
135 wa_itab-debit COLOR 3,
155 wa_itab-credit COLOR 3.
ENDLOOP.
clamt = ( amount1 - amount2 ) + it_amt-amount.
ULINE.
WRITE: / sy-vline,(10) 'TOTAL' ,
sy-vline, (121) '' ,
sy-vline, (15) amount1 COLOR 3,
sy-vline, (15) amount2 COLOR 3,
sy-vline, (1) ''.
ULINE.
WRITE: / sy-vline, (23) 'CLOSING BALANCE',
sy-vline, (15) clamt COLOR 3,
sy-vline, (1) ''.
ULINE.
CLEAR : amount1,amount2.
* NEW-PAGE.
ENDLOOP.
ENDFORM. " DISPLAY
FORM display_data.
PERFORM build_fieldcatalog.
PERFORM disp_alv.
ENDFORM. " display_data
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
FORM build_fieldcatalog .
CLEAR: fieldcatalog,fieldcatalog[].
fieldcatalog-fieldname = 'KUNNR'.
*fieldcatalog-tabname = 'IT_FINAL'.
fieldcatalog-seltext_s = 'Customer Code'.
fieldcatalog-key = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NAME1'.
fieldcatalog-seltext_m = 'Customer Name'.
*fieldcatalog-key = 'X'.
*fieldcatalog-no_zero = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'BELNR'.
fieldcatalog-seltext_m = 'Acc.Doc.No'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'BLART'.
fieldcatalog-seltext_m = 'Doc. Type'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'BUDAT'.
fieldcatalog-seltext_m = 'Posting Date'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'AUGBL'.
fieldcatalog-seltext_m = 'Clearing Doc.'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ZUONR'.
fieldcatalog-seltext_m = 'Assignment'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'SGTXT'.
fieldcatalog-seltext_m = 'Long Text'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'XBLNR'.
fieldcatalog-seltext_m = 'Reference'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'Invoice No'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'FKDAT'.
fieldcatalog-seltext_m = 'Invoice Date'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
*fieldcatalog-fieldname = 'ZALDT'.
*fieldcatalog-seltext_m = 'AMT'.
*APPEND fieldcatalog TO fieldcatalog.
*CLEAR fieldcatalog.
fieldcatalog-fieldname = 'OPNBL'.
fieldcatalog-seltext_m = 'Opening Balance'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'DEBIT'.
fieldcatalog-seltext_m = 'Debit'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'CREDIT'.
fieldcatalog-seltext_m = 'Credit'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'CLSBL'.
fieldcatalog-seltext_m = 'Closing balance'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form disp_alv
*&---------------------------------------------------------------------*
FORM disp_alv .
layout-colwidth_optimize = 'X'.
DATA: w_repid TYPE sy-repid.
w_repid = sy-repid.
*----------------------------------------------------------------------
*----------------------------------------------------------------------
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
is_layout = layout
it_fieldcat = fieldcatalog[]
i_save = 'A'
is_variant = x_save
TABLES
t_outtab = itab_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. " disp_alv
FORM WRITE_DATA.
*loop at itab_final.
* select single
* sgtxt
* zuonr
* augbl from bseg into corresponding fields of itab_final where belnr = itab_final-belnr and shkzg = 'H'.
* select single xblnr
* budat from bkpf into corresponding fields of itab_final where belnr = itab_final-belnr.
*
* select single spart
* fkdat from vbrk into corresponding fields of itab_final where vbeln = itab_final-vbeln.
*modify itab_final.
*endloop.
clear : itab_write.
LOOP AT ITAB_write where kunnr in s_kunnr and budat in s_budat.
* where kunnr between s_kunnr-low and s_kunnr-high.
ON CHANGE OF itab_write-kunnr.
new-page.
* read table ctab into wa_ctab with key kunnr = itab_write-kunnr.
select single name1 from kna1 into itab_write-name1 where kunnr = itab_write-kunnr.
* itab_write-name1 = wa_ctab-name1.
write : / sy-uline.
* skip 2.
WRITE :/05 ITAB_write-KUNNR color 1, ITAB_write-NAME1 color 1, 'Period from', s_budat-low color 1, 'to', s_budat-high color 1.
write :/ sy-uline.
* write :/05 'Acc.Doc.NO' color 3, 17 'Doc.Type' color 3 , 26 'Posting Date' color 3, 40 'Document Date' color 3,
* 54 'Clearing Doc' color 3, 67 'Opening Balance' color 3, 89 'Debit Amount' color 3, 107 'Credit Amount' color 3,
* 125 'Closing Balance' color 3, 144 'Invoice No.' color 3, 157 'Inv.Date' color 3, 169 'Reference' color 3,
* 187 'Assigment' color 3, 207 'C/D Indicator' color 3, 222 'Long Text' color 3.
ENDON.
write : /05 itab_write-belnr, 17 itab_write-blart, 26 itab_write-budat, 40 itab_write-bldat, 55 itab_write-augbl,
67 itab_write-opnbl, 86 itab_write-debit, 105 itab_write-credit, 125 itab_write-clsbl, 144 itab_write-vbeln,
157 itab_write-fkdat, 169 itab_write-xblnr, 187 itab_write-zuonr, 207 itab_write-shkzg, 222 itab_write-sgtxt .
ENDLOOP.
write : / sy-uline.
ENDFORM.
Code Formatted by: Alvaro Tejada Galindo on Apr 25, 2008 4:46 PM
2008 Apr 25 3:44 PM
Hi Dheeraj,
try following control statement
AT END of wa_opn-kunnr.
<REMOVED BY MODERATOR>
Regards,
Rahul
Edited by: Alvaro Tejada Galindo on Apr 25, 2008 1:05 PM
2008 Apr 25 9:42 PM
Hi,
You have defined kunnr as 2nd field in table wa_opn and you are use command 'ON CHANGE OF KUNNR'.. this will be true even if hkont is changed and customer is the same.
Please try putting kunnr as the first field while defining table and then execute the program.
If this is not successful, use AT NEW KUNNR command but always kunnr should be first field unless you wanted to do same procedure even if hkont changes.
<REMOVED BY MODERATOR>
Thanks,
Ags.
DATA : BEGIN OF wa_opn,
hkont LIKE bsid-hkont, " General Ledger Account
kunnr like bsid-kunnr, " Customer Number 1
txt50 LIKE skat-txt50, " GL A/C TEXT
dmbtr LIKE bsid-dmbtr, " Amount
shkzg LIKE bsid-shkzg, " Debit/Credit Indication
budat LIKE bsid-budat, " Posting date
kostl LIKE bsid-kostl, " Cost center
opnbl LIKE bsid-dmbtr, " Opening Balance Amount
Clsbl LIKE bsid-dmbtr, " Closing balnce Amount
UMSKS like bsid-UMSKS,
END OF wa_opn.
Edited by: Alvaro Tejada Galindo on Apr 25, 2008 4:48 PM
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |