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

problem with subroutine- need urgrnt help

selvi1
Explorer
0 Likes
546

hai all,

need help in subroutine.

in a report program,

i had calculated to get the total collection amount and need to generate a list for every day.

on next day that collection amount must come as a poeninig balance at the top of the list.

this i had done using two subroutines.

i have to call the subroutine for opening balance for previous day's collection first. after that in have to calculate the todays collection.

how can i have this please give me a suggession.

thanks in advance.

this is my report.

i want the 'Progressive Total C/O ' from subroutine form f002_item_data. of today to be come in

'Progressive Total B/F -

-


' ,106 w_total_bf. of the subroutine form f001_progressive_total on next day..

here is the code.....

*&----


*

*& Report ZVR023_COLL_STATEMENT *

*& *

*&----


*

*& *

*& *

*&----


*

report zvr023_coll_statement no standard page heading .

*----


*

  • MODULE. MSD *

*----


*

  • Objective : *

  • Program : Updates Tables ( ) Downloads data ( ) *

  • Outputs List ( X ) *

  • Date Created *

  • Author *

  • Location *

  • LDB ..... *

*----


*

  • External Dependencies *

*----


*

  • Amendment History *

*----


*

  • Who Change ID Reason *

  • ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ *

  • XXXXXXXXX AADDMMYYYY Where XXXX = Developers Name................. *

  • AA- Developers Initial ................................ *

*----


*

  • Includes *

*----


*

*INCLUDE : *

*----


*

  • Tables *

*----


*

tables : vbak,bsid,kna1,t001,adrc,vbrk,knvv.

*----


*

  • Types Begin with TY_ *

*----


*

types : begin of ty_cust,

belnr type bseg-belnr,

wrbtr type bseg-wrbtr,

xref1 type bseg-xref1,

kunnr type kna1-kunnr, " sarang

bschl type bseg-bschl,

hkont type bseg-hkont,

end of ty_cust.

types : begin of ty_bp,

kunnr type vbak-kunnr,

bukrs type bseg-bukrs,

budat type bkpf-budat,

end of ty_bp.

types : begin of ty_kna1,

kunnr type kna1-kunnr,

name1 type kna1-name1,

ort01 type kna1-ort01,

end of ty_kna1.

types : begin of ty_lst,

vbeln type vbrk-vbeln, " INVOICE NO

fkart type vbrk-fkart,

posnr type vbrp-posnr ,

fkimg type vbrp-fkimg , " qty

fkdat type vbrk-fkdat, " date

vkorg type vbrk-vkorg, " sales org

vtweg type vbrk-vtweg, " division

spart type vbrk-spart, " distribution

knumv type vbrk-knumv, " Number of the document condition

matnr type vbrp-matnr ,

med_prod type jptmg0-med_prod,

kunrg type vbrk-kunrg,

kwert type konv-kwert,

kbetr type konv-kbetr,

netwr type vbrk-netwr,

    • Address Details

  • KUNRG type vbrk-KUNRG,

name1 type kna1-name1,

stras type kna1-stras,

pstlz type kna1-pstlz,

***

***Added For Billing

bukrs type vbrk-bukrs, " Company code

xblnr type vbrk-xblnr, " Bill Ref

***************

ismpublication type mara-ismpublication,

      • Condition Type

kschl_zj01 type konv-kschl,

kschl_zdis type konv-kschl,

kschl_znet type konv-kschl,

kwert_zj01 type konv-kawrt, " Base Condition

kwert_zdis type konv-kawrt,

kwert_znet type konv-kawrt,

adrnr type kna1-adrnr,

****

end of ty_lst.

types : begin of ty_lst1,

vbeln type vbrk-vbeln, " INVOICE NO

fkart type vbrk-fkart,

fkdat type vbrk-fkdat, " date

fkimg type vbrp-fkimg, " qty

kunrg type vbrk-kunrg, " Payer

fkimg_1 type vbrp-fkimg, " qty

fkimg_2 type vbrp-fkimg, " qty

fkimg_3 type vbrp-fkimg, " qty

fkimg_4 type vbrp-fkimg, " qty

fkimg_5 type vbrp-fkimg, " qty

matnr type vbrp-matnr,

med_prod type jptmg0-med_prod,

kwert type konv-kwert,

kbetr type konv-kbetr,

netwr type vbrk-netwr,

    • Address Details

  • KUNRG type vbrk-KUNRG,

name1 type kna1-name1,

stras type kna1-stras,

pstlz type kna1-pstlz,

***

***Added For Billing

bukrs type vbrk-bukrs ,

xblnr type vbrk-xblnr,

***

ismpublication type mara-ismpublication,

****SPLIT FOR RATE

kbetr_1 type konv-kbetr,

kbetr_2 type konv-kbetr,

kbetr_3 type konv-kbetr,

***

      • Condition Type

kschl_zj01 type konv-kschl,

kschl_zdis type konv-kschl,

kschl_znet type konv-kschl,

kwert_zj01 type konv-kawrt, " Base Condition

kwert_zdis type konv-kawrt,

kwert_znet type konv-kawrt,

****

end of ty_lst1.

types : begin of ty_condition,

kschl type konv-kschl, " Condition Type

kwert type konv-kwert, " Condition Value

knumv type konv-knumv, " Document Condi

kposn type konv-kposn,

kbetr type konv-kbetr, " Condition Rate

end of ty_condition.

types : begin of ty_bkpf ,

belnr type bkpf-belnr,

gjahr type bkpf-gjahr,

bukrs type bkpf-bukrs,

end of ty_bkpf.

*----


*

  • Constants Begin with C_ *

*----


*

*CONSTANTS: *

*----


*

  • Data Begin with W_ *

*----


*

data : w_cnt type i .

*DATA : W_DMBTR TYPE BSID-DMBTR. " Open Value

*DATA : W_KWERT TYPE VBRP-FKIMG. " Invoice Value

*DATA : W_QTY_CON TYPE VBRP-FKIMG. " QTY

*DATA : W_TO_QTY_CON TYPE VBRP-FKIMG. " QTY

*DATA : W_DIFF TYPE BSID-DMBTR. " W_DIFF Bt Open & Invoice

*DATA : W_DMBTR_CR TYPE BSID-DMBTR. " Cr Value

*DATA : W_DMBTR_DR TYPE BSID-DMBTR. " Dr Value

*DATA : W_DMBTR_TO TYPE BSID-DMBTR. " Total Value

*DATA : W_KDGRP(2) .

*DATA : W_CNT_IS TYPE I.

*DATA : W_CNT_IS1 TYPE I.

*DATA : W_CNT_IS2 TYPE I.

*DATA : W_CNT_FIRST TYPE I.

*DATA : W_CNT_ITAB TYPE I.

*DATA : W_CNT_FIRST1(2).

*DATA : W_CNT_TAB(62),

  • W_CNT_TAB_HEA(62),

*data: W_CNT_POS TYPE I.

            • Variable for balance window

data : w_open_bal type dmshb_x8,

w_total_bf type dmshb_x8,

w_sub_tot type dmshb_x8,

w_total_co type dmshb_x8,

w_bill_bal type dmshb_x8,

w_drn_bal type dmshb_x8,

w_othr_chr type dmshb_x8,

w_total_bal type dmshb_x8,

w_coll_bal type dmshb_x8,

w_unsd_cr type dmshb_x8, "Unsold Credit

w_inceve type dmshb_x8, "Incentive

w_cr_nt type dmshb_x8. "Cr Note

data : w_pos type bseg-wrbtr. " Total Value

data : w_neg type bseg-wrbtr. " Total Value

data : w_du_start_date like sy-datum,

w_du_end_date like sy-datum .

**vARIABLE DEFINED FOR CONSOLIDATED WINDOW

data : w_prod_cnt type i .

data : w_prod_ch(2) .

data : w_prod_rate type i .

***

*----


*

  • Infotypes ( HR Module Specific) *

*----


*

*INFOTYPES : *

*----


*

  • Internal tables Begin with IT_ *

*----


*

data : it_bp type table of ty_bp with header line,

it_bp1 type table of ty_bp with header line,

it_bp2 type table of ty_bp with header line,

it_bp3 type table of ty_bp with header line,

it_kna1 type table of ty_kna1 with header line,

it_cust type table of ty_cust with header line,

it_cust1 type table of ty_cust with header line,

it_bkpf type table of ty_bkpf with header line,

it_cust2 type table of ty_cust with header line,

it_cust3 type table of ty_cust with header line.

data : it_pos like rfposxext occurs 1 with header line,

it_check like rfposxext occurs 1 with header line,

it_pos_bc1 like rfposxext occurs 1 with header line,

it_pos_bc like rfposxext occurs 1 with header line,

it_pos_nc like rfposxext occurs 1 with header line,

it_pos1 like rfposxext occurs 1 with header line,

it_sec like rfposxext occurs 1 with header line.

data : it_bal like rfposxext occurs 1 with header line.

data : w_text(100) type c.

data : w_cnt1(3).

data : l_date like mara-ismpublperiod .

data : p_date1 like jkpaz-jkpavon.

data : l_day_c(2).

data : l_month_c(2).

data : l_base_yr_c(4).

data : w_text1(100) type c.

data : w_text2(100) type c.

*----


*

  • Field Symbols Begin with FS_ *

*----


*

*FIELD-SYMBOLS: *

field-symbols: type ty_condition.

*----


*

  • Insert *

*----


*

*INSERT : *

*----


*

  • Select Options Begin with SO_ *

*----


*

selection-screen skip 1.

selection-screen: begin of block b1 with frame title text-001.

select-options : so_bukrs for vbrk-bukrs no intervals no-extension obligatory .

select-options : so_kunrg for vbrk-vkorg no intervals no-extension obligatory,

so_vkbur for knvv-vkbur no intervals no-extension ,

so_fkdat for bsid-budat no-extension obligatory ,

so_bdat1 for bsid-budat no-display ,

so_bdat3 for bsid-budat no-display ,

so_kunnr for kna1-kunnr no-display.

selection-screen: end of block b1.

*----


*

  • Parameters Begin with PR_ *

*----


*

*PARAMETERS : *

*----


*

selection-screen begin of block b3 with frame title text-003.

parameters pr_3 radiobutton group rad1.

parameters pr_4 radiobutton group rad1.

selection-screen end of block b3.

selection-screen begin of block b2 with frame title text-002.

parameters pr_1 radiobutton group rad.

parameters pr_2 radiobutton group rad.

selection-screen end of block b2.

*----


*

*INITIALISATION :

*----


*

  • At selection-screen *

*----


*

*AT SELECTION-SCREEN.

***********************************************************************

  • S T A R T O F S E L E C T I O N *

***********************************************************************

start-of-selection.

if pr_3 is not initial.

  • Code commented/added by Praveen on 20.07.2006

  • SELECT kunnr INTO CORRESPONDING FIELDS OF TABLE it_bp1 FROM knvv

  • WHERE vkorg IN so_kunrg

  • AND kunnr GE '0004000000'

  • AND kunnr LE '0004999999'.

select kunnr into corresponding fields of table it_bp1 from knvv

where vkorg in so_kunrg

and aufsd <> '01'

and kunnr ge '0004000000'

and kunnr le '0004999999' .

  • and

  • PLTYP ne 'HB'.

*ends here

endif.

if pr_4 is not initial.

clear so_kunnr[].

clear so_kunnr.

so_kunnr-sign = 'I'.

so_kunnr-option = 'BT'.

so_kunnr-low = '0001000000'.

so_kunnr-high = '0001999999'.

append so_kunnr.

so_kunnr-sign = 'I'.

so_kunnr-option = 'BT'.

so_kunnr-low = '0002000000'.

so_kunnr-high = '0002999999'.

append so_kunnr.

so_kunnr-sign = 'I'.

so_kunnr-option = 'BT'.

so_kunnr-low = '0007000000'.

so_kunnr-high = '0007999999'.

append so_kunnr.

  • Code commented/added by Praveen on 20.07.2006

select kunnr into corresponding fields of table it_bp1 from knvv

where vkorg in so_kunrg and

kunnr in so_kunnr and

vkbur in so_vkbur.

  • AND kunnr GE '0001000000'

  • AND kunnr LE '0001999999' .

select kunnr into corresponding fields of table it_bp1 from knvv

where vkorg in so_kunrg and

aufsd <> '01' and

kunnr in so_kunnr and

vkbur in so_vkbur.

  • AND kunnr GE '0001000000'

  • AND kunnr LE '0001999999' .

  • ends here

endif.

if pr_1 = 'X'.

perform cust_prog.

perform cust_line.

perform f001_progressive_total.

perform f002_item_data.

elseif pr_2 = 'X'.

perform cust_line.

perform f002_item_data.

endif.

*&----


*

*& Form cust_prog

*&----


*

  • text

*----


*

form cust_prog.

clear it_bp3[].

p_date1 = so_fkdat-low.

call function 'Z_VF053_DATE_GET_YEAR_MONTH'

exporting

i_date = p_date1

importing

e_dd = l_day_c

e_month = l_month_c

e_year = l_base_yr_c.

ranges so_bdat2 for bsid-budat.

clear : so_bdat3[].

if l_day_c > 01.

l_day_c = '01'.

concatenate l_base_yr_c l_month_c l_day_c into l_date.

so_bdat2-low = l_date.

so_bdat2-high = so_fkdat-low - 1.

else.

so_bdat2-low = '00000000'.

so_bdat2-high = '00000000'.

endif.

so_bdat2-sign = 'I'.

so_bdat2-option = 'BT'.

append so_bdat2 to so_bdat3.

select kunnr bukrs budat into corresponding fields of table it_bp3 from bsid

for all entries in it_bp1

where bukrs in so_bukrs

and kunnr = it_bp1-kunnr

and budat in so_bdat3.

select kunnr bukrs budat

appending corresponding fields of table it_bp3

from bsad

for all entries in it_bp1

where bukrs in so_bukrs

and kunnr = it_bp1-kunnr

and budat in so_bdat3.

sort it_bp3 by kunnr .

delete adjacent duplicates from it_bp3 comparing kunnr.

sort it_bp3 by kunnr .

clear w_total_bf.

endform. "cust_prog

*&----


*

*& Form cust_line

*&----


*

  • text

*----


*

form cust_line.

clear it_bp[].

select kunnr bukrs budat

into corresponding fields of table it_bp

from bsid

for all entries in it_bp1

where bukrs in so_bukrs

and kunnr = it_bp1-kunnr

and budat in so_fkdat.

select kunnr bukrs budat

appending corresponding fields of table it_bp

from bsad

for all entries in it_bp1

where bukrs in so_bukrs

and kunnr = it_bp1-kunnr

And budat in so_fkdat.

sort it_bp by kunnr .

delete adjacent duplicates from it_bp comparing kunnr.

sort it_bp by kunnr .

endform. "cust_line

*&----


*

*& Form f001_progressive_total

*&----


*

  • text

*----


*

form f001_progressive_total.

if not it_bp3[] is initial.

clear : w_text ,w_cnt,p_date1,l_base_yr_c, l_month_c,l_day_c,l_date.

  • w_cnt1 = sy-tabix .

*

  • CONCATENATE w_cnt1 ' Feaching Data ' INTO w_text.

*

*

  • CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

  • EXPORTING

  • text = w_text.

ranges so_bdat2 for bsid-bldat.

clear : so_bdat1[].

p_date1 = so_fkdat-low.

call function 'Z_VF053_DATE_GET_YEAR_MONTH'

exporting

i_date = p_date1

importing

e_dd = l_day_c

e_month = l_month_c

e_year = l_base_yr_c.

if l_day_c > 01.

l_day_c = '01'.

concatenate l_base_yr_c l_month_c l_day_c into l_date.

so_bdat2-low = l_date.

so_bdat2-high = so_fkdat-low - 1.

else.

l_day_c = so_fkdat-low.

so_bdat2-low = l_date.

so_bdat2-high = '00000000'.

endif.

so_bdat2-sign = 'I'.

so_bdat2-option = 'BT'.

append so_bdat2 to so_bdat1.

export so_bdat1 to memory id 'DATE1'.

export it_bp3 to memory id 'IT_BP3'.

clear : so_bdat1, it_bp3.

submit z_rfitemar1

with x_aisel = 'X'

with x_norm = 'X'

with dd_bukrs-low = so_bukrs-low "#EC *

and return.

clear : it_pos[], it_pos .

import it_pos from memory id 'zit_pos'.

free memory id 'zit_pos'.

delete it_pos where blart <> 'DZ'.

        • Here Plz Clear all the varible to avoid overlap

clear : w_open_bal,w_du_start_date,w_du_end_date.

select belnr bukrs gjahr into corresponding fields of table it_bkpf

from bkpf for all entries in it_pos where belnr = it_pos-belnr and gjahr = it_pos-gjahr

and bukrs = it_pos-bukrs and xreversal = ' '.

endif.

loop at it_pos.

clear it_bkpf.

read table it_bkpf with key bukrs = it_pos-bukrs belnr = it_pos-belnr gjahr = it_pos-gjahr.

if sy-subrc eq 0.

append it_pos to it_check.

endif.

endloop.

it_pos[] = it_check[].

***opening bal

    • since runtime error is coming while summing the alternate way is being used ... done by jayakumar on 11 10 06

    • LOOP AT it_pos .

    • SUM .

    • w_open_bal = it_pos-dmshb .

    • EXIT .

    • ENDLOOP .

**

loop at it_pos .

  • read table it_cust3 with key belnr = it_pos-belnr.

  • it_pos-dmshb = it_cust3-wrbtr.

w_open_bal = w_open_bal + it_pos-dmshb .

endloop .

if w_open_bal < 0 .

w_open_bal = w_open_bal * -1.

endif.

w_total_bf = w_total_bf + w_open_bal.

  • endif.

write :20 'Progressive Total B/F -

-


' ,106 w_total_bf.

skip 1 .

endform. "f001_progressive_total

*&----


*

*& Form f002_item_data

*&----


*

  • text

*----


*

form f002_item_data.

if not it_bp[] is initial.

select * into corresponding fields of table it_kna1 from kna1

for all entries in it_bp

where kunnr = it_bp-kunnr .

export so_fkdat to memory id 'DATE'.

export it_bp to memory id 'IT_BP'.

clear : so_fkdat, it_bp.

submit z_rfitemar1

with x_aisel = 'X'

with x_norm = 'X'

with dd_bukrs-low = so_bukrs-low "#EC *

and return.

  • DELETE it_pos WHERE u_xreversal <> ' '.

clear : it_pos[], it_pos .

import it_pos from memory id 'zit_pos'.

free memory id 'zit_pos'.

delete it_pos where blart <> 'DZ'.

sort it_pos by belnr.

  • APPEND LINES OF it_pos TO it_pos1.

  • DELETE ADJACENT DUPLICATES FROM it_pos COMPARING belnr." commented by sarang

clear : it_cust[], it_cust.

if not it_pos[] is initial.

select belnr wrbtr xref1 kunnr bschl

into corresponding fields of table it_cust

from bseg

for all entries in it_pos

where belnr = it_pos-belnr

and bukrs = it_pos-bukrs

and gjahr = it_pos-gjahr

and bschl in ('15','40') .

it_cust2[] = it_cust[].

delete it_cust where bschl ne 15.

delete it_cust2 where bschl ne 40.

sort it_pos by konto.

else.

write : 20 '**No Transaction to Display**'.

endif.

  • DELETE it_pos WHERE u_xreversal = 'X'.

tables bkpf.

loop at it_pos.

select single * from bkpf where belnr = it_pos-belnr and bukrs = it_pos-bukrs and gjahr = it_pos-gjahr and xreversal = ' '.

if sy-subrc = 0.

append it_pos to it_pos_bc1.

endif.

endloop.

clear it_pos.

it_pos[] = it_pos_bc1[].

sort it_pos by konto belnr xref3.

loop at it_pos.

read table it_cust2 with key belnr = it_pos-belnr.

on change of it_pos-konto or "IT_CUST2-xref1 or

it_pos-belnr.

it_pos_bc[] = it_pos[].

delete it_pos_bc[] where konto ne it_pos-konto.

delete it_pos_bc[] where belnr ne it_pos-belnr.

loop at it_pos_bc.

sum.

exit.

endloop.

append it_pos_bc to it_pos_nc.

endon.

endloop.

free it_pos.

it_pos[] = it_pos_nc[].

data : w_amt1 type bseg-dmbtr,

w_amt2 type bseg-dmbtr.

clear : w_amt1 , w_amt2.

sort it_pos by budat belnr konto.

data : w_ch(5) type c,

w_i type i.

w_i = 0.

loop at it_pos where shkzg = 'H' .

clear w_text.

w_i = w_i + 1 .

w_ch = w_i.

read table it_cust with key belnr = it_pos-belnr kunnr = it_pos-konto.

read table it_kna1 with key kunnr = it_pos-konto .

  • CONCATENATE it_kna1-name1 INTO w_text.

w_text = it_kna1-name1.

  • CONDENSE w_text NO-GAPS.

write : / w_ch left-justified , 07 it_pos-budat ,20 it_pos-belnr(10) ,31 it_pos-konto(10),42 w_text(60).

read table it_cust2 with key belnr = it_pos-belnr.

if it_cust2-xref1 = 'Cash Payment' or it_cust2-xref1 = 'Cash'.

if it_pos-dmshb < 0 .

  • it_pos-dmshb = it_pos-dmshb * -1 .

it_pos-dmshb = it_cust2-wrbtr.

else. "+PM28072006

  • it_pos-dmshb = it_pos-dmshb * -1 . "+PM28072006

it_pos-dmshb = it_cust2-wrbtr.

endif.

write : 72 it_pos-dmshb.

w_amt1 = w_amt1 + it_pos-dmshb.

else.

if it_pos-dmshb < 0 .

  • it_pos-dmshb = it_pos-dmshb * -1 .

it_pos-dmshb = it_cust2-wrbtr.

else. "+PM28072006

  • it_pos-dmshb = it_pos-dmshb * -1."+PM28072006

it_pos-dmshb = it_cust2-wrbtr.

endif.

write : 87 it_pos-dmshb.

w_amt2 = w_amt2 + it_pos-dmshb.

endif .

endloop .

else.

write : 20 '**No Transaction to Display**'.

endif.

clear : it_cust1[] ,w_pos .

it_cust1[] = it_cust[] .

sort it_cust1 by wrbtr.

delete it_cust1 where xref1 <> 'Cash Payment' .

delete it_cust1 where xref1 <> 'Cash' .

loop at it_cust1.

sum .

w_pos = it_cust1-wrbtr .

exit .

endloop .

clear :it_cust1[],w_neg .

it_cust1[] = it_cust[] .

sort it_cust1 by wrbtr.

delete it_cust1 where xref1 = 'Cash Payment' .

delete it_cust1 where xref1 = 'Cash' .

loop at it_cust1.

sum .

w_neg = it_cust1-wrbtr .

exit .

endloop .

if w_pos < 0.

w_pos = w_pos * -1 .

else. "+PM28072006

w_pos = w_pos * -1. "+PM28072006

endif.

if w_neg < 0.

w_neg = w_neg * -1 .

else. "+PM28072006

w_neg = w_neg * -1. "+PM28072006

endif.

write sy-uline(125) .

write : /20 'Total Collection Amount -

-


>'.

write : 76 w_amt1 ,91 w_amt2.

w_sub_tot = w_amt1 + w_amt2.

if w_sub_tot < 0.

w_sub_tot = w_sub_tot * -1.

endif.

write : 106 w_sub_tot.

if pr_1 = 'X'.

w_total_co = w_total_bf + w_sub_tot.

if w_total_co < 0.

w_total_co = w_total_co * -1.

endif.

write : /20 'Progressive Total C/O -

-


>'.

write : 106 w_total_co.

endif.

write sy-uline(125) .

endform. "f002_item_data

***

  • ENDIF .

*END-OF-SELECTION.

***********************************************************************

  • E N D O F S E L E C T I O N *

***********************************************************************

  • At line selection *

*----


*

*AT LINE-SELECTION.

*----


*

  • User Command Processing *

*----


*

*AT USER-COMMAND.

*----


*

  • Top Of Page *

*----


*

top-of-page.

select single * from t001 where bukrs = so_bukrs-low .

select single * from adrc where addrnumber = t001-adrnr . "EC *

write : /05 t001-butxt.

  • CONCATENATE adrc-house_num1 '-' adrc-street INTO w_text1.

  • CONCATENATE adrc-city1 '-' adrc-post_code1 INTO w_text2.

  • WRITE : /05 w_text1 .

  • WRITE : /05 w_text2 .

write : /05 'Sales Organisation:', so_kunrg-low.

write : /05 'Sales Office:', so_vkbur-low.

skip 1.

if pr_3 = 'X'.

write : /05 'Agent Circulation Collection Statement From ' , so_fkdat-low , ' to ' ,so_fkdat-high .

else.

write : /05 'Advertisement Collection Statement From ' , so_fkdat-low , ' to ' ,so_fkdat-high .

endif.

if pr_3 = 'X'.

write 😕 sy-uline(125) .

write :/07 'Date' ,20 'Doc No',31 'Code' ,42 'Agent Name & Place',84 'BY CASH' ,97 'BY CHQ/DD' ,115 'Prog. Total'.

write 😕 sy-uline(125) .

else.

write 😕 sy-uline(125) .

write :/07 'Date' ,20 'Doc No',31 'Code' ,42 'Advertisers Name' , 84 'BY CASH' ,97 'BY CHQ/DD' ,115 'Prog. Total'.

write 😕 sy-uline(125) .

endif .

*----


*

  • End Of Page *

*----


*

END-OF-PAGE.END-OF-PAGE.

1 REPLY 1
Read only

uwe_schieferstein
Active Contributor
0 Likes
501

Hello Selvi

There is no need to use two subroutine. Actually, this would be bad programming. Instead use a switch for your subroutine which determines whether the calculation should be done for the actual and the previous day, e.g.:

PERFORM do_calculation
                                 USING 'X'          " 'X' = calculate for previous day as well
                                 USING p_date   " current date
                          CHANGING gt_list.   " itab with list data

And that's how the subroutine could look like:

FORM do_calculation
                         USING VALUE(ud_calculate_previous_day)  TYPE c
                                    VALUE(ud_date)                             TYPE d
                  CHANGING ct_list    TYPE <table type>.
* define local data
  DATA:
     ld_date_prev  TYPE d,
     lt_list_prev     TYPE <table type>.  " list for previous day

* Do the calculations for the current day
...

  IF ( ud_calculate_previous_day = 'X' ).
    ld_date_prev = ud_date - 1.
    PERFORM do_calculation
                                     USING ' '  " ' ' = no calculation for previous day
                                                ld_date_prev
                              CHANGING lt_list_prev.   " itab with list data
  ENDIF.

* Post-processing after calculation for both days
...
ENDFORM.

Regards

Uwe