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

Year-to-date summarization

Former Member
0 Likes
1,301

Hi,

I have to get the Year-to-date amount on an ALV output for a GL account. Is there any FM to do it?... Currently Iam just getting the output for the period that I put in selection screen.

Thank you,

SB.

Hi,

I have to get the Year-to-date amount on an ALV output for a GL account. Is there any FM to do it?... Currently Iam just getting the output for the period that I put in selection screen.

Thank you,

SB.

3 REPLIES 3
Read only

Former Member
0 Likes
981

Hi,

Can anyone help me pls.

Thank You,

SB.

Read only

Former Member
0 Likes
981

Hi

You have to use the filed symbols for this purpose.

see the sample code

report zfgldr0010

line-size 122

line-count 60

no standard page heading

message-id zndc.

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

  • Database Tables

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

tables: bsis, " Accounting: Secondary Index for G/L Accounts

ska1, " GL Account Master

t001, " Company Codes

csks, " Cost Centers Master

setnode, " Cost Center Group Hierarchy

setleaf. " Cost Center Group Hierarchy

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

  • Declaration of Internal Tables

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

  • Internal Table to fetch the Opex Budget & Capex Actual Data

data: begin of it_bud_tab occurs 0,

lednr like cosp-lednr, " Ledger No

objnr like cosp-objnr, " Object No

gjahr like cosp-gjahr, " Fiscal Year

wrttp like cosp-wrttp, " Actuals

versn like cosp-versn, " Version

twaer like cosp-twaer, " Currency

perbl like cosp-perbl, " Period Block

kstar like cosp-kstar, " Cost Element/GL A/C No

wog001 like cosp-wog001, " Total Value

wog002 like cosp-wog002, " Total Value

wog003 like cosp-wog001, " Total Value

wog004 like cosp-wog002, " Total Value

wog005 like cosp-wog001, " Total Value

wog006 like cosp-wog002, " Total Value

wog007 like cosp-wog001, " Total Value

wog008 like cosp-wog002, " Total Value

wog009 like cosp-wog001, " Total Value

wog010 like cosp-wog002, " Total Value

wog011 like cosp-wog001, " Total Value

wog012 like cosp-wog002, " Total Value

end of it_bud_tab.

  • Internal Table to fetch the Settlement Costs(Opex-Actual)

data: begin of it_set_tab occurs 0,

kokrs like coep-kokrs, " Controlling Area

belnr like coep-belnr, " Acc Document

buzei like coep-buzei, " Line Item

perio like coep-perio, " Period Block

wkgbtr like coep-wkgbtr, " Value in CO Curr

lednr like coep-lednr, " Ledger No

objnr like coep-objnr, " Object No

gjahr like coep-gjahr, " Fiscal Year

wrttp like coep-wrttp, " Actuals

versn like coep-versn, " Version

kstar like coep-kstar, " Cost Element

beknz like coep-beknz, " Dr/Cr Indicator

parob1 like coep-parob1, " Partner Object

end of it_set_tab.

  • Internal Table to fetch the COBRB data(Settlement rules)

data: begin of cobrb_tab occurs 0,

objnr like cobrb-objnr, " Object No

rec_objnr1 like cobrb-rec_objnr1, " Ref Object No

bureg like cobrb-bureg, " Dostribution Rule

lfdnr like cobrb-lfdnr, " Sequence No

perbz like cobrb-perbz, " Settlement Rule

konty like cobrb-konty, " Acct Assign Category

bukrs like bsis-bukrs, " Company Code

kostl like bsis-kostl, " Cost Center

end of cobrb_tab.

  • Internal Table to Settlement Actual Costs for Cost center & GL

data: begin of set_act_tab occurs 0,

kostl like csks-kostl, " Cost Center

hkont like bsis-hkont, " GL Account No

amt_atd like bsis-dmbtr, " YTD Actual

end of set_act_tab.

  • Internal Table to Settlement Actual Costs for Cost center

data: begin of set1_act_tab occurs 0,

kostl like csks-kostl, " Cost Center

hkont like bsis-hkont, " GL Account No

amt_atd like bsis-dmbtr, " YTD Actual

end of set1_act_tab.

  • Internal Table to Capex Budget Figures

data: begin of cap_tab occurs 0,

belnr like coej-belnr, " Accounting Doc No

buzei like coej-buzei, " Line Item No

objnr like coej-objnr, " Object No

wrttp like bpej-wrttp, " Value Type

gjahr like coej-gjahr, " Fiscal Year

wtjhr like bpej-wtjhr, " budget Value

end of cap_tab.

  • Internal Table to Segragate the Budget Figures(Full Year and YTD)

data: begin of cap1_tab occurs 0,

gjahr like coej-gjahr, " Fiscal Year

kostl(10) type n, " Cost Center

hkont(10) type n, " GL Account No

amt_fy like coej-wkf001, " Full Year Amount

amt_ytd like coej-wkf001, " Ytd Amount

end of cap1_tab.

  • Internal Table to Sum up the Budget Figures(Full Year and YTD)

data: begin of cap2_tab occurs 0,

gjahr like coej-gjahr, " Fiscal Year

kostl(10) type n, " Cost Center

amt_fy like coej-wkf001, " Full Year Amount

amt_ytd like coej-wkf001, " Ytd Amount

end of cap2_tab.

  • Internal Table to Segragate the CAPEX YTD data(GL Wise)

data: begin of cap_ytd_tab occurs 0,

gjahr like coej-gjahr, " Fiscal Year

kostl(10) type n, " Cost Center

kstar like coej-kstar, " Cost Element

amt_ytd like coej-wkf001, " Ytd Amount

end of cap_ytd_tab.

  • Internal Table to Segragate the CAPEX YTD data(CC Wise)

data: begin of cap1_ytd_tab occurs 0,

gjahr like coej-gjahr, " Fiscal Year

kostl(10) type n, " Cost Center

amt_ytd like coej-wkf001, " Ytd Amount

end of cap1_ytd_tab.

  • Internal Table to Segragate the Budget Figures(Full Year and YTD)

data: begin of it_ytd_tab occurs 0,

gjahr like cosp-gjahr, " Fiscal Year

kostl like bsis-kostl, " Cost Center

kstar like cosp-kstar, " Cost Element

amt_fy like cosp-wkf001, " Full Year Amount

amt_ytd like coej-wkf001, " Ytd Amount

end of it_ytd_tab.

  • Internal Table to Segragate the Budget Figures(Full Year and YTD)

data: begin of it_ytd1_tab occurs 0,

gjahr like cosp-gjahr, " Fiscal Year

kostl like bsis-kostl, " Cost Center

amt_fy like cosp-wkf001, " Full Year Amount

amt_ytd like coej-wkf001, " Ytd Amount

end of it_ytd1_tab.

  • Internal Table to fetch the Actual YTD Figures

data: begin of it_act_tab occurs 0,

bukrs like bsis-bukrs, " Company Code

hkont like bsis-hkont, " GL Account No

gjahr like bsis-gjahr, " Fiscal Year

belnr like bsis-belnr, " Accounting Doc No

budat like bsis-budat, " Posting Date

waers like bsis-waers, " Currency

kostl like bsis-kostl, " Cost Center

shkzg like bsis-shkzg, " Dr/Cr Indicator

dmbtr like bsis-dmbtr, " Doc Amount

end of it_act_tab.

  • Internal Table to fetch the Actual YTD Figures( GL-SUM)

data: begin of act1_tab occurs 0,

bukrs like bsis-bukrs, " Company Code

kostl like bsis-kostl, " Cost Center

hkont like bsis-hkont, " GL Account No

gjahr like bsis-gjahr, " Fiscal Year

dmbtr like bsis-dmbtr, " Doc Amount

end of act1_tab.

  • Internal Table to fetch the Actual YTD Figures( CC-SUM)

data: begin of act2_tab occurs 0,

bukrs like bsis-bukrs, " Company Code

kostl like bsis-kostl, " Cost Center

gjahr like bsis-gjahr, " Fiscal Year

dmbtr like bsis-dmbtr, " Doc Amount

end of act2_tab.

  • Internal Table to fetch the WBS Data

data: begin of wbs_tab occurs 0,

pspnr like prps-pspnr, " WBS Element

posid like prps-posid, " WBS Structure Element

objnr like prps-objnr, " Object No

psphi like prps-psphi, " Project ID

pbukr like prps-pbukr, " Company Code

pkokr like prps-pkokr, " Controlling Area

fkstl like prps-fkstl, " Cost center

end of wbs_tab.

  • Internal Table to get Capex Actual from Networks

data: begin of net_tab occurs 0,

aufnr like afko-aufnr, " Order No

ftrmi like afko-ftrmi, " Release Date

pronr like afko-pronr, " Project No

aufpl like afvc-aufpl, " Routing No

aplzl like afvc-aplzl, " Counter No

objnr like afvc-objnr, " Object No

projn like afvc-projn, " WBS Element

end of net_tab.

  • Internal Table to get Capex Actual from Orders

data: begin of ord_tab occurs 0,

aufnr like aufk-aufnr, " Order No

aedat like aufk-aedat, " Order Date

kostl like aufk-kostl, " Cost center

objnr like aufk-objnr, " Object No

pspel like aufk-pspel, " WBS Element

end of ord_tab.

  • Internal Table to fetch the Capex Actual Data

data: it_cap_tab like kv02s occurs 0 with header line.

  • Internal Table to store the output of function-G_SET_TREE_IMPORT.

data : ccenter_group_tab like sethier occurs 0 with header line.

  • Internal Table to store the output of function-G_SET_TREE_IMPORT.

data : cost_center_tab like setvalues occurs 0 with header line.

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

  • Declaration of Variables

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

data: v_f_oper_amnt like bsis-wrbtr, " Operations F Year Budget

v_f_depr_amnt like bsis-wrbtr, " Depreciation F Year Budget

v_f_main_amnt like bsis-wrbtr, " Maintenance F Year Budget

v_f_capx_amnt like bsis-wrbtr, " Capex F Year Budget

v_b_oper_amnt like bsis-wrbtr, " Operations Budget YTD

v_b_depr_amnt like bsis-wrbtr, " Depreciation Budget YTD

v_b_main_amnt like bsis-wrbtr, " Maintenance Budget YTD

v_b_capx_amnt like bsis-wrbtr, " Capex Budget YTD

v_a_oper_amnt like bsis-wrbtr, " Operations Actual YTD

v_a_depr_amnt like bsis-wrbtr, " Depreciation Actual YTD

v_a_main_amnt like bsis-wrbtr, " Maintenance Actual YTD

v_a_capx_amnt like bsis-wrbtr, " Capex Actual YTD

v_v_oper_amnt type i, " Operations Variance

v_v_depr_amnt type i, " Depreciation Variance

v_v_main_amnt type i, " Maintenance Variance

v_v_capx_amnt type i, " Capex Variance

v_t_f_amnt type i, " Total F Year Budget

v_t_b_amnt type i, " Total Budget YTD

v_t_a_amnt type i, " Total Actual YTD

v_t_v_amnt type i, " Total Variance

v_gt_f_amnt type i, " GTotal F Year Budget

v_gt_b_amnt type i, " GTotal Budget YTD

v_gt_a_amnt type i, " GTotal Actual YTD

v_gt_v_amnt type i, " GTotal Variance

v_per_oper type i, " % YTD Operations

v_per_depr type i, " % YTD Depreciation

v_per_main type i, " % YTD Maintenance

v_per_capx type i, " % YTD Capex

v_per_tot type i, " % YTD Total

v_per_gtot type i, " % YTD G Total

v_kstar(4) type n, " Cost element

v_yr(2) type c, " Year

v_year(4) type c, " Year

v_lines type i, " Number

v_str(10) type c, " String

v_gl(4) type n, " GL element

v_gl1(10) type n, " GL Account Code

v_mon(2) type n, " Month

v_month(2) type n, " Month

v_day(2) type n, " Day

v_date like sy-datum, " Start Date in Year

v_setid like sethier-setid, " To store Identification of a set

v_subrc like sy-subrc, " Return code

v_settid like rgsbs-setnr. " Identification of a set

data: v_f_oper_amnt1 type i, " Operations F Year Budget

v_f_depr_amnt1 type i, " Depreciation F Year Budget

v_f_main_amnt1 type i, " Maintenance F Year Budget

v_f_capx_amnt1 type i, " Capex F Year Budget

v_b_oper_amnt1 type i, " Operations Budget YTD

v_b_depr_amnt1 type i, " Depreciation Budget YTD

v_b_main_amnt1 type i, " Maintenance Budget YTD

v_b_capx_amnt1 type i, " Capex Budget YTD

v_a_oper_amnt1 type i, " Operations Actual YTD

v_a_depr_amnt1 type i, " Depreciation Actual YTD

v_a_main_amnt1 type i, " Maintenance Actual YTD

v_a_capx_amnt1 type i. " Capex Actual YTD

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

  • Declaration of Constants

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

constants : c_i type c value 'I', " Sign

c_x type c value 'X', " Sign

c_d type c value 'D', " Type

c_h type c value 'H', " Credit Ind

c_s type c value 'S', " Type

c_o type c value 'O', " Type

c_a type c value 'A', " Type

c_01(2) type n value '01', " Month

c_opt1(2) type c value 'EQ', " Option

c_opt2(2) type c value 'BT', " Option

c_dot(3) type c value '...', " Dots

c_or(2) type c value 'OR', " Type

c_ks(2) type c value 'KS', " Type

c_mon(2) type n value '01', " Month

c_ndc like setnode-setname value 'NDC', " CC Group

c_glno like coej-versn value '000', " For GL No

c_versn1 like coej-versn value '100', " Value

c_kokrs like coej-kokrs value '1000', " Controlling Area

c_wrttp like coej-wrttp value '01', " Value Type

c_wrttp1 like coej-wrttp value '41', " Value Type

c_wrttp2 like coej-wrttp value '04', " Value Type

c_versn like coej-versn value '000', " Version

c_kbud like bpej-vorga value 'KBUD', " Activity

c_kbfr like bpej-vorga value 'KBFR', " Activity

c_kbn0 like bpej-vorga value 'KBN0', " Activity

c_it_bud_tab_wog0(15) value 'IT_BUD_TAB-WOG0',

c_prart like prps-prart value 'CA', " Project Type

c_psin like afvc-steus value 'PSIN', " Control Key

c_lednr like cosp-lednr value '00', " Ledger

c_lednr1 like bpej-lednr value '0002', " Ledger

c_class1 like setnode-setclass value '0101', " Class

c_class2 like setnode-subclass value '1000', " Subclass

c_thous type i value '1000', " Number

c_settab like rgsbs-table value 'CCSS', " Table for set

c_cctfld like t800s-feld value 'KOSTL'. " Field name

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

  • Declaration of Ranges

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

ranges: rn_kostl for csks-kostl. " Cost Centers

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

  • Selection Screen

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

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

parameters : p_bukrs like t001-bukrs

default '1000'," Company Code

p_gjahr like bsis-gjahr

default sy-datum+0(4), " Fiscal Year

p_date like bsis-budat obligatory. " Date

selection-screen end of block b1.

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

parameters : p_cgrup like setnode-setname. " Cost Center Group

select-options: s_kostl for csks-kostl. " Cost Center

selection-screen end of block b2.

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

select-options :

s_opers for ska1-saknr obligatory, " Operns & Support GL A/C

s_deprc for ska1-saknr obligatory, " Depreciation GL A/C

s_mmain for ska1-saknr obligatory, " Major Maintenance GL A/C

s_capex for ska1-saknr obligatory. " Capital Expenditure GL A/C

selection-screen end of block b3.

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

  • Initialization

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

initialization.

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

  • At selection-screen

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

at selection-screen.

  • Validate the Selection Screen fields

perform validate_screen.

  • Value request for Cost Center Group.

at selection-screen on value-request for p_cgrup .

  • Get the F4 Help for Cost center Group

perform set_auswaehlen(sapfk00b) using c_settab c_cctfld

changing p_cgrup v_subrc

v_settid.

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

  • Start-of-Selection

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

start-of-selection.

  • Clear all the Variables in the Program

perform clear_var.

  • Get the Cost Centers from Cost Center Group.

perform get_cc_values.

  • Get the Budget data from database Table COSP

perform get_budget_data.

  • Get the Settlement Costs data from database Tables COBRB,COSP

perform get_cobrb_data.

  • Get the Actual YTD data from database Table BSIS

perform get_act_ytd_data.

  • Get the WBS Element Data

perform get_wbs_data.

  • Get the Networks and Activities for the WBS

perform get_net_ord_data.

  • Get the WBS Budget data from database Tables BPEJ

perform get_cap_budget_data.

  • Get the WBS Actual YTD data for WBS

perform get_cap_act_ytd_data.

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

  • Top-of-page

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

top-of-page.

  • Write the Report and Column Headings

perform top_of_page.

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

  • End-of-Selection

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

end-of-selection.

  • D-splay the Output Report.

perform display_report.

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

  • Form-Routines

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

&----


*& Form validate_screen

&----


  • Validation of selection Screen fields

----


form validate_screen.

  • Validation of Company Code

clear t001.

if not p_bukrs is initial.

select single bukrs

into t001-bukrs

from t001

where bukrs eq p_bukrs.

if sy-subrc <> 0.

message e999 with 'Incorrect Company Code'(033).

endif.

endif.

  • Validation of GL Account Code( P & L Operations )

clear ska1.

if not s_opers[] is initial.

select saknr up to 1 rows

into ska1-saknr

from ska1

where saknr in s_opers

and ktopl = c_kokrs

and xbilk = ' '.

endselect.

if sy-subrc <> 0.

message e999 with

'Incorrect GL Account for Operations and Support Cost'(034).

endif.

endif.

  • Validation of GL Account Code( P & L Depreciation)

clear ska1.

if not s_deprc[] is initial.

select saknr up to 1 rows

into ska1-saknr

from ska1

where saknr in s_deprc

and ktopl = c_kokrs

and xbilk = ' '.

endselect.

if sy-subrc <> 0.

message e999 with

'Incorrect GL Account for Depreciation'(035).

endif.

endif.

  • Validation of GL Account Code( P & L Maintenance)

clear ska1.

if not s_mmain[] is initial.

select saknr up to 1 rows

into ska1-saknr

from ska1

where saknr in s_mmain

and ktopl = c_kokrs

and xbilk = ' '.

endselect.

if sy-subrc <> 0.

message e999 with

'Incorrect GL Account for Major Maintenance'(036).

endif.

endif.

  • Validation of GL Account Code (Balance Sheet-Capex)

clear ska1.

if not s_capex[] is initial.

select saknr up to 1 rows

into ska1-saknr

from ska1

where saknr in s_capex

and ktopl = c_kokrs

and xbilk = c_x.

endselect.

if sy-subrc <> 0.

message e999 with

'Incorrect GL Account for Capital Expenditures'(037).

endif.

endif.

  • Validation of Cost Center Group

if not p_cgrup is initial .

clear setleaf-setname.

select setname up to 1 rows

from setleaf

into setleaf-setname

where setname eq p_cgrup and

setclass = c_class1 and

subclass = c_class2.

endselect.

if sy-subrc <> 0.

clear setnode-setname.

select setname up to 1 rows

from setnode

into setnode-setname

where setname eq p_cgrup and

setclass = c_class1 and

subclass = c_class2.

endselect.

if sy-subrc <> 0.

message e999 with

'Enter Correct Cost Center Group'(038).

endif.

endif.

endif.

  • Validation of Cost Center

clear csks.

if not s_kostl[] is initial.

select kostl up to 1 rows

into csks-kostl

from csks

where kostl in s_kostl

and kokrs = c_kokrs.

endselect.

if sy-subrc <> 0.

message e999 with

'Enter Correct Cost Center Code'(039).

endif.

endif.

  • Enter either Cost Center Group or Values

if not p_cgrup is initial and not s_kostl[] is initial.

message e999 with

'Enter either Cost Center Group or Values'(040).

endif.

  • Validation of Date

if p_date+0(4) ne p_gjahr.

message e999(zndc) with

'Please Enter the date in same Fiscal Year'(020).

endif.

  • To enter only last day of the month

clear: v_month, v_day, v_year.

v_month = p_date+4(2).

v_day = p_date+6(2).

v_year = p_date+0(4).

if ( v_month = '01' or v_month = '03' or v_month = '05' or

v_month = '07' or v_month = '08' or v_month = '10' or

v_month = '12' ).

if v_day ne '31'.

message e999(zndc) with

'Enter Last date of the Month'(022).

endif.

elseif ( v_month = '04' or v_month = '06' or v_month = '09' or

v_month = '11' ).

if v_day ne '30'.

message e999(zndc) with

'Enter Last date of the Month'(022).

endif.

elseif v_month = '02'.

if v_year eq '2004' or v_year eq '2008'.

if v_day ne '29'.

message e999(zndc) with

'Enter Last date of the Month'(022).

endif.

else.

if v_day ne '28'.

message e999(zndc) with

'Enter Last date of the Month'(022).

endif.

endif.

endif.

endform. " validate_screen

&----


*& Form get_cc_values

&----


  • Get the Cost Centers from Cost Center Group

----


form get_cc_values.

  • Populate the Cost Centers from Cost Center Group

if s_kostl[] is initial.

if p_cgrup is initial.

p_cgrup = c_ndc.

else.

p_cgrup = p_cgrup.

endif.

  • Concatenating Setnode table setclass,subclass fields and

  • Cost Center Group

concatenate c_class1 c_class2 p_cgrup

into v_setid.

  • Calling function module to get SET_HIERARCHY & SET_VALUES

perform frm_g_set_tree_import tables ccenter_group_tab[]

cost_center_tab[]

using v_setid.

loop at cost_center_tab.

rn_kostl-low = cost_center_tab-from.

rn_kostl-high = cost_center_tab-to.

rn_kostl-sign = c_i.

if rn_kostl-low = rn_kostl-high.

rn_kostl-option = c_opt1.

else.

rn_kostl-option = c_opt2.

endif.

append rn_kostl.

endloop.

clear v_setid.

  • endif.

else.

rn_kostl[] = s_kostl[].

endif.

endform. "get_cc_values

&----


*& FORM FRM_G_SET_TREE_IMPORT

&----


  • Subroutine to call the function G_SET_TREE_IMPORT.

----


form frm_g_set_tree_import

tables ccenter_group_tab structure sethier

cost_center_tab structure setvalues

using p_v_setid.

call function 'G_SET_TREE_IMPORT'

exporting

  • CLIENT = SY-MANDT

  • FIELDNAME = ' '

  • LANGU = SY-LANGU

  • NO_DESCRIPTIONS = ' '

  • NO_RW_INFO = ' '

setid = p_v_setid

  • TABNAME = ' '

  • NO_VARIABLE_REPLACEMENT = ' '

  • ROOT_HEADER_ONLY = ' '

  • NO_TABLE_BUFFERING = ' '

  • MAX_HIER_LEVEL = 99

  • DATE_FROM =

  • DATE_TO =

  • IMPORTING

  • SET_NOT_TRANSPARENT =

tables

set_hierarchy = ccenter_group_tab

set_values = cost_center_tab

  • EXCEPTIONS

  • SET_NOT_FOUND = 1

  • ILLEGAL_FIELD_REPLACEMENT = 2

  • ILLEGAL_TABLE_REPLACEMENT = 3

  • OTHERS = 4

.

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. "frm_g_set_tree_import

&----


*& Form clear_var

&----


  • Clear all the Variables in the program

----


form clear_var.

  • Clear/Initialize all the Variables

clear: v_f_oper_amnt1, v_f_depr_amnt1, v_f_main_amnt1,

v_f_capx_amnt1, v_b_oper_amnt1, v_b_depr_amnt1,

v_b_main_amnt1, v_b_capx_amnt1, v_a_oper_amnt1,

v_a_depr_amnt1, v_a_main_amnt1, v_a_capx_amnt1,

v_f_oper_amnt, v_f_depr_amnt, v_f_main_amnt,

v_f_capx_amnt, v_b_oper_amnt, v_b_depr_amnt,

v_b_main_amnt, v_b_capx_amnt, v_a_oper_amnt,

v_a_depr_amnt, v_a_main_amnt, v_a_capx_amnt,

v_v_oper_amnt, v_v_depr_amnt, v_v_main_amnt,

v_v_capx_amnt, v_t_f_amnt, v_t_b_amnt,

v_t_a_amnt, v_t_v_amnt, v_gt_f_amnt,

v_gt_b_amnt,v_gt_a_amnt,v_gt_v_amnt,

v_per_oper, v_per_depr, v_per_main,

v_per_capx, v_per_tot, v_per_gtot.

endform. "clear_var

&----


*& Form get_budget_data

&----


  • Get the Budget Data from Database Table COSP

----


form get_budget_data.

  • Form Local data

data: l_period(2) type n,

l_name(35) type c,

l_monat type i .

l_monat = p_date+4(2).

  • Field Symbols

field-symbols <fs>.

clear it_bud_tab.

refresh it_bud_tab.

select lednr " Ledger No

objnr " Object No

gjahr " Fiscal Year

wrttp " Actuals

versn " Version

twaer " Currency

perbl " Period Block

kstar " Cost Element/GL A/C No

wog001 " Total Value

wog002 " Total Value

wog003 " Total Value

wog004 " Total Value

wog005 " Total Value

wog006 " Total Value

wog007 " Total Value

wog008 " Total Value

wog009 " Total Value

wog010 " Total Value

wog011 " Total Value

wog012 " Total Value

into table it_bud_tab

from cosp

where lednr = c_lednr and

gjahr = p_gjahr and

wrttp = c_wrttp and

versn = c_versn and

beknz in (c_d,c_s).

if sy-subrc = 0.

  • Segragate the Budget Figures(Full Year and YTD)

loop at it_bud_tab.

if it_bud_tab-objnr+0(2) eq c_ks.

move-corresponding it_bud_tab to it_ytd_tab.

it_ytd_tab-kostl = it_bud_tab-objnr+6(10).

it_ytd_tab-amt_fy = it_bud_tab-wog001 + it_bud_tab-wog002 +

it_bud_tab-wog003 + it_bud_tab-wog004 +

it_bud_tab-wog005 + it_bud_tab-wog006 +

it_bud_tab-wog007 + it_bud_tab-wog008 +

it_bud_tab-wog009 + it_bud_tab-wog010 +

it_bud_tab-wog011 + it_bud_tab-wog012.

  • Get the YTD Budget using Field Symbols

do l_monat times.

l_period = sy-index.

concatenate c_it_bud_tab_wog0 l_period

into l_name.

assign (l_name) to <fs>.

it_ytd_tab-amt_ytd = it_ytd_tab-amt_ytd +

<fs>.

enddo.

collect it_ytd_tab.

clear it_ytd_tab.

endif.

endloop.

sort it_ytd_tab by gjahr kostl kstar.

  • Cost Center wise Sum Up of Costs

loop at it_ytd_tab.

at end of kostl.

sum.

move-corresponding it_ytd_tab to it_ytd1_tab.

append it_ytd1_tab.

endat.

clear it_ytd1_tab.

endloop.

sort it_ytd1_tab by gjahr kostl.

  • Segragate the Budget Figures into different Accounts/Cost elements

loop at it_ytd_tab.

if it_ytd_tab-kostl in rn_kostl.

  • Budget Full Year and YTD (Operations & Support Cost)

if not s_opers[] is initial.

if it_ytd_tab-kstar in s_opers.

v_f_oper_amnt = v_f_oper_amnt + it_ytd_tab-amt_fy.

v_b_oper_amnt = v_b_oper_amnt + it_ytd_tab-amt_ytd.

endif.

endif.

  • Budget Full Year and YTD (Depreciation)

if not s_deprc[] is initial.

if it_ytd_tab-kstar in s_deprc.

v_f_depr_amnt = v_f_depr_amnt + it_ytd_tab-amt_fy.

v_b_depr_amnt = v_b_depr_amnt + it_ytd_tab-amt_ytd.

endif.

endif.

  • Budget Full Year and YTD (Major Maintainance)

if not s_mmain[] is initial.

if it_ytd_tab-kstar in s_mmain.

v_f_main_amnt = v_f_main_amnt + it_ytd_tab-amt_fy.

v_b_main_amnt = v_b_main_amnt + it_ytd_tab-amt_ytd.

endif.

endif.

endif.

endloop.

  • Convert the Amount fields to nearest Thousand

v_f_oper_amnt1 = v_f_oper_amnt / c_thous .

v_f_depr_amnt1 = v_f_depr_amnt / c_thous .

v_f_main_amnt1 = v_f_main_amnt / c_thous .

v_b_oper_amnt1 = v_b_oper_amnt / c_thous .

v_b_depr_amnt1 = v_b_depr_amnt / c_thous .

v_b_main_amnt1 = v_b_main_amnt / c_thous .

endif.

endform. "get_budget_data

&----


*& Form get_cobrb_data

&----


  • Get the Settlement Data from Database Table COBRB

----


form get_cobrb_data.

clear cobrb_tab.

refresh cobrb_tab.

select objnr " Object No

rec_objnr1 " Ref Object No

bureg " Dostribution Rule

lfdnr " Sequence No

perbz " Settlement Rule

konty " Acct Assign Category

bukrs " Company Code

kostl " Cost Center

into table cobrb_tab

from cobrb

where kostl in rn_kostl.

sort cobrb_tab by objnr rec_objnr1.

delete adjacent duplicates from cobrb_tab comparing objnr.

  • Get the Settlement Costs from COEP Table

clear it_set_tab.

refresh it_set_tab.

if not cobrb_tab[] is initial.

select kokrs " Controlling Area

belnr " Acc Document

buzei " Line Item

perio " Period Block

wkgbtr " Value in CO Curr

lednr " Ledger No

objnr " Object No

gjahr " Fiscal Year

wrttp " Actuals

versn " Version

kstar " Cost Element

beknz " Dr/Cr Indicator

parob1 " Partner Object

into table it_set_tab

from coep

for all entries in cobrb_tab

where lednr = c_lednr and

wrttp = c_wrttp2 and

versn = c_versn and

gjahr = p_gjahr and

objnr = cobrb_tab-objnr and

parob1 = cobrb_tab-rec_objnr1 and

beknz in (c_o, c_a).

endif.

  • Settlement Actual Costs

loop at cobrb_tab.

if cobrb_tab-objnr+0(2) eq c_or.

loop at it_set_tab where objnr = cobrb_tab-objnr

and parob1 = cobrb_tab-rec_objnr1.

set_act_tab-kostl = cobrb_tab-kostl.

set_act_tab-hkont = it_set_tab-kstar.

  • Get the Actual Settlement Costs YTD Amount

if it_set_tab-perio between c_mon and v_month.

set_act_tab-amt_atd = set_act_tab-amt_atd +

abs( it_set_tab-wkgbtr ).

endif.

collect set_act_tab.

clear set_act_tab.

endloop.

endif.

endloop.

sort set_act_tab by kostl hkont.

  • Sum Up the Settlement Costs-CC wise

loop at set_act_tab.

at end of kostl.

read table set_act_tab index sy-tabix.

sum.

move-corresponding set_act_tab to set1_act_tab.

append set1_act_tab.

endat.

clear set1_act_tab.

endloop.

sort set1_act_tab by kostl.

delete set1_act_tab where amt_atd = 0.

endform. "get_cobrb_data

&----


*& Form get_act_ytd_data

&----


  • Get the Actual YTD Data from Database Table BSIS

----


form get_act_ytd_data.

clear it_act_tab.

refresh it_act_tab.

select

bukrs " Company Code

hkont " GL Account No

gjahr " Fiscal Year

belnr " Accounting Doc No

budat " Posting Date

waers " Currency

kostl " Cost Center

shkzg " Dr/Cr Indicator

dmbtr " Doc Amount

into table it_act_tab

from bsis

where bukrs eq p_bukrs and

gjahr eq p_gjahr and

budat le p_date and

kostl in rn_kostl.

if sy-subrc = 0.

sort it_act_tab by bukrs hkont.

loop at it_act_tab.

if it_act_tab-shkzg = c_h.

it_act_tab-dmbtr = it_act_tab-dmbtr * -1.

endif.

move-corresponding it_act_tab to act1_tab.

collect act1_tab.

clear act1_tab.

endloop.

sort act1_tab by bukrs kostl hkont.

endif.

  • Cost Center wise Sum Up of Costs

loop at act1_tab.

at end of kostl.

sum.

move-corresponding act1_tab to act2_tab.

append act2_tab.

endat.

clear act2_tab.

endloop.

sort act2_tab by gjahr kostl.

  • Seperate the different Actual YTD Expenditures

loop at act1_tab.

  • Actual YTD (Operations & Support Cost)

if not s_opers[] is initial.

if act1_tab-hkont in s_opers.

v_a_oper_amnt = v_a_oper_amnt + act1_tab-dmbtr.

endif.

endif.

  • Actual YTD (Depreciation)

if not s_deprc[] is initial.

if act1_tab-hkont in s_deprc.

v_a_depr_amnt = v_a_depr_amnt + act1_tab-dmbtr.

endif.

endif.

  • Actual YTD (Major Maintainance)

if not s_mmain[] is initial.

if act1_tab-hkont in s_mmain.

v_a_main_amnt = v_a_main_amnt + act1_tab-dmbtr.

endif.

endif.

endloop.

  • Opex Settlement Actual Costs

loop at set_act_tab.

  • Actual YTD (Operations & Support Cost)

if not s_opers[] is initial.

if set_act_tab-hkont in s_opers.

v_a_oper_amnt = v_a_oper_amnt + set_act_tab-amt_atd.

endif.

endif.

  • Actual YTD (Depreciation)

if not s_deprc[] is initial.

if set_act_tab-hkont in s_deprc.

v_a_depr_amnt = v_a_depr_amnt + set_act_tab-amt_atd.

endif.

endif.

  • Actual YTD (Major Maintainance)

if not s_mmain[] is initial.

if set_act_tab-hkont in s_mmain.

v_a_main_amnt = v_a_main_amnt + set_act_tab-amt_atd.

endif.

endif.

endloop.

  • Convert Amount Fields to nearest thousands

v_a_oper_amnt1 = v_a_oper_amnt / c_thous .

v_a_depr_amnt1 = v_a_depr_amnt / c_thous .

v_a_main_amnt1 = v_a_main_amnt / c_thous .

endform. " get_act_ytd_data

&----


*& Form get_wbs_data

&----


  • Get the WBS Element Data

----


form get_wbs_data.

clear wbs_tab.

refresh wbs_tab.

select pspnr " WBS Element

posid " WBS Structure Element

objnr " Object No

psphi " Project ID

pbukr " Company Code

pkokr " Controlling Area

fkstl " Cost Center

into table wbs_tab

from prps

where pbukr = p_bukrs and

pkokr = c_kokrs and

fkstl in rn_kostl and

prart = c_prart.

  • Consider only the Same Year WBS Elements Data

loop at wbs_tab.

v_yr = wbs_tab-posid+5(2).

if v_yr <> p_gjahr+2(2) .

delete wbs_tab index sy-tabix.

endif.

clear: v_yr, v_gl.

endloop.

sort wbs_tab by pspnr posid.

endform. "get_wbs_data

&----


*& Form get_net_ord_data

&----


  • Get the Network, Orders Data for the WBS

----


form get_net_ord_data.

  • Get the Network data

clear: net_tab, ord_tab.

refresh: net_tab, ord_tab.

if not wbs_tab[] is initial.

select a~aufnr " Order No

a~ftrmi " Release Date

a~pronr " Project No

b~aufpl " Routing No

b~aplzl " Counter No

b~objnr " Object No

b~projn " WBS Element

into table net_tab

from afko as a join afvc as b

on aaufpl eq baufpl

for all entries in wbs_tab

where a~pronr eq wbs_tab-psphi and

b~projn eq wbs_tab-pspnr and

b~steus eq c_psin.

  • Get the Orders data

select aufnr " Order No

aedat " Order Date

kostl " Cost center

objnr " Object No

pspel " WBS Element

into table ord_tab

from aufk

for all entries in wbs_tab

where pspel eq wbs_tab-pspnr.

endif.

endform. "get_net_ord_data

&----


*& Form get_cap_budget_data

&----


  • Get the Budget Data from Database Table BPEJ

----


form get_cap_budget_data.

  • Get the Full Year budget from BPEJ Table

clear cap_tab.

refresh cap_tab.

select belnr " Accounting Doc No

buzei " Line Item No

objnr " Object No

wrttp " Value type

gjahr " Fiscal Year

wtjhr " budget Value

into table cap_tab

from bpej

where lednr = c_lednr1 and

wrttp = c_wrttp1 and

gjahr = p_gjahr and

versn = c_versn and

vorga in (c_kbud,c_kbfr,c_kbn0).

sort cap_tab by belnr buzei objnr wrttp.

  • Separate the Full Year and YTD Budgets

loop at wbs_tab.

v_gl = wbs_tab-posid+7(4).

v_mon = wbs_tab-posid+11(2).

concatenate v_gl c_glno c_versn1 into v_gl1.

loop at cap_tab where gjahr = p_gjahr and

objnr = wbs_tab-objnr.

cap1_tab-gjahr = cap_tab-gjahr.

cap1_tab-kostl = wbs_tab-posid+2(3).

if cap_tab-wrttp = c_wrttp1.

if v_gl = v_kstar.

cap1_tab-amt_fy = cap1_tab-amt_fy + cap_tab-wtjhr.

endif.

if v_mon between c_wrttp and v_month.

if v_gl <> v_kstar or v_gl1 in s_capex.

cap1_tab-hkont = v_gl1.

cap1_tab-amt_ytd = cap1_tab-amt_ytd + cap_tab-wtjhr.

endif.

endif.

endif.

endloop.

append cap1_tab.

clear:v_gl, v_gl1, cap1_tab.

endloop.

sort cap1_tab by gjahr kostl hkont.

  • Cost Center wise totals

loop at cap1_tab.

at end of kostl.

sum.

move-corresponding cap1_tab to cap2_tab.

append cap2_tab.

endat.

clear cap2_tab.

endloop.

sort cap2_tab by gjahr kostl.

delete cap2_tab where amt_fy = 0 and amt_ytd = 0.

  • Segregate the Budget,YTD Budget and Actual YTD Amounts

loop at cap2_tab.

v_f_capx_amnt = v_f_capx_amnt + cap2_tab-amt_fy.

v_b_capx_amnt = v_b_capx_amnt + cap2_tab-amt_ytd.

endloop.

v_f_capx_amnt1 = v_f_capx_amnt / c_thous.

v_b_capx_amnt1 = v_b_capx_amnt / c_thous.

endform. "get_cap_budget_data

&----


*& Form get_cap_act_ytd_data

&----


  • Get the Actual YTD Data from Database Table COSP

----


form get_cap_act_ytd_data.

  • Get the Actual Costs for CAPEX

call function 'K_CO_OBJECT_BALANCE_GET'

exporting

par_gjah1 = p_gjahr

  • PAR_POPE1 =

  • PAR_GJAH2 =

  • PAR_POPE2 =

par_kokrs = c_kokrs

  • FLG_DBCRD =

flg_settl = c_x

  • FLG_FYEAR =

  • FLG_POPER =

  • FLG_DINFO =

  • FLG_NOALV = 'X'

tables

  • PTA_WRTTP =

  • PTA_AWVRS =

  • PTA_VALTY =

  • PTA_OBJNR =

tab_kv02s = it_cap_tab

  • exceptions

  • system_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.

  • Segregate the YTD Actual figures

loop at wbs_tab.

v_gl = wbs_tab-posid+7(4).

concatenate v_gl c_glno into v_gl1.

if v_gl1 in s_capex.

cap_ytd_tab-kostl = wbs_tab-posid+2(3).

cap_ytd_tab-gjahr = p_gjahr.

cap_ytd_tab-kstar = v_gl1.

read table it_cap_tab with key objnr = wbs_tab-objnr

wrttp = c_wrttp2

beknz = ' '.

if sy-subrc = 0.

cap_ytd_tab-amt_ytd = it_cap_tab-wogxx.

endif.

  • Read the Networks data to get the actual costs

loop at net_tab where pronr = wbs_tab-psphi and

projn = wbs_tab-pspnr.

read table it_cap_tab with key objnr = net_tab-objnr

wrttp = c_wrttp2

beknz = ' '.

if sy-subrc = 0.

cap_ytd_tab-amt_ytd = cap_ytd_tab-amt_ytd + it_cap_tab-wogxx.

endif.

endloop.

  • Read the Orders data to get the actual costs

loop at ord_tab where pspel = wbs_tab-pspnr.

read table it_cap_tab with key objnr = ord_tab-objnr

wrttp = c_wrttp2

beknz = ' '.

if sy-subrc = 0.

cap_ytd_tab-amt_ytd = cap_ytd_tab-amt_ytd + it_cap_tab-wogxx.

endif.

endloop.

collect cap_ytd_tab.

clear cap_ytd_tab.

endif.

endloop.

sort cap_ytd_tab by gjahr kostl.

  • Cost center wise totals(Capex YTD Actual)

loop at cap_ytd_tab.

at end of kostl.

read table act1_tab index sy-tabix.

sum.

move-corresponding cap_ytd_tab to cap1_ytd_tab.

append cap1_ytd_tab.

endat.

clear cap1_ytd_tab.

endloop.

sort cap1_ytd_tab by gjahr kostl.

delete cap1_ytd_tab where amt_ytd = 0.

  • Segregate the Budget,YTD Budget and Actual YTD Amounts

loop at cap1_ytd_tab.

if cap1_ytd_tab-kostl in rn_kostl.

v_a_capx_amnt = v_a_capx_amnt + cap1_ytd_tab-amt_ytd.

endif.

endloop.

v_a_capx_amnt1 = v_a_capx_amnt / c_thous.

endform. " get_cap_act_ytd_data

&----


*& Form top_of_page

&----


  • Write the Report and Column Headings

----


form top_of_page.

skip.

format color col_heading on.

write: /1(122) 'NATIONAL DRILLING COMPANY'(002) centered,

/1(122) 'Total Expenditures Report'(003) centered.

format color off.

concatenate p_date+0(4) c_01 c_01 into v_date.

write: /2 'Company Code :'(024), p_bukrs,

90 'Report Run Date:'(032), sy-datum,

/2 'Fiscal Year :'(025), p_gjahr,

90 'Time :'(030), sy-uzeit,

/2 'Year to Date From :'(026), v_date ,

'To'(028), p_date,

90 'User :'(031), sy-uname.

if not p_cgrup is initial.

write: /2 'Cost Center Group :'(019), p_cgrup.

endif.

if not s_kostl[] is initial.

if s_kostl-high is initial.

write: /2 'Cost Center :'(023),

s_kostl-low.

else.

write: /2 'Cost Center From :'(027),

s_kostl-low+7(3),'To'(028), s_kostl-high.

endif.

endif.

if not s_opers[] is initial.

if s_opers-high is initial.

clear: v_str, v_lines.

describe table s_opers lines v_lines.

if v_lines gt 1.

concatenate s_opers-low+3(7) c_dot into v_str.

write: /2 'Operations & Support Costs GL A/C :'(041),

v_str.

else.

write: /2 'Operations & Support Costs GL A/C :'(041),

s_opers-low.

endif.

else.

clear: v_str, v_lines.

describe table s_opers lines v_lines.

if v_lines gt 1.

concatenate s_opers-high+3(7) c_dot into v_str.

write: /2 'Operations & Support Costs GL A/C From :'(042),

s_opers-low+3(7), 'To'(028), v_str.

else.

write: /2 'Operations & Support Costs GL A/C From :'(042),

s_opers-low+3(7), 'To'(028), s_opers-high.

endif.

endif.

endif.

if not s_deprc[] is initial.

if s_deprc-high is initial.

write: /2 'Depreciation GL A/C Code :'(043),

s_deprc-low.

else.

write: /2 'Depreciation GL A/C Code From :'(044),

s_deprc-low+3(7), 'To'(028), s_deprc-high.

endif.

endif.

if not s_mmain[] is initial.

if s_mmain-high is initial.

write: /2 'Major Maintenance GL A/C Code :'(045),

s_mmain-low.

else.

write: /2 'Major Maintenance GL A/C Code From :'(046),

s_mmain-low+3(7), 'To'(028), s_mmain-high.

endif.

endif.

if not s_capex[] is initial.

if s_capex-high is initial.

write: /2 'Capital Expenditure GL A/C Code :'(047),

s_capex-low.

else.

write: /2 'Capital Expenditure GL A/C Code From :'(048),

s_capex-low+3(7),'To'(028), s_capex-high.

endif.

endif.

write /97 text-004.

write /1(122) sy-uline.

format color col_heading on.

write: /1 sy-vline,

42 sy-vline, 43(31) 'BUDGET'(005) centered,

74 sy-vline, 90 sy-vline,

106 sy-vline,122 sy-vline.

write: /1 sy-vline,2(40) 'Description'(006) centered,

42 sy-vline, 43(31) sy-uline,

74 sy-vline, 75(15) 'Actual'(007) centered,

90 sy-vline, 91(15) 'Variance'(008) centered,

106 sy-vline,107(15) 'Percentage'(009) centered,

122 sy-vline.

write: /1 sy-vline,

42 sy-vline, 43(15) 'Full Year'(010) centered,

58 sy-vline, 59(15) 'Y.T.D'(011) centered,

74 sy-vline, 75(15) 'Y.T.D'(011) centered,

90 sy-vline, 91(15) 'Y.T.D'(011) centered,

106 sy-vline,107(15) 'Y.T.D'(011) centered,

122 sy-vline.

write /1(122) sy-uline.

format color off.

endform. " top_of_page

&----


*& Form Display_report

&----


  • Write the Report Output

----


form display_report.

format color col_normal.

write: /1 sy-vline, 2(40) 'Expenditures'(012),

42 sy-vline, 58 sy-vline,

74 sy-vline, 90 sy-vline,

106 sy-vline,122 sy-vline.

write: /1 sy-vline, 2(12) sy-uline,

42 sy-vline, 58 sy-vline,

74 sy-vline, 90 sy-vline,

106 sy-vline,122 sy-vline.

write: /1 sy-vline, 2(40) 'Operations & Support Cost'(013),

42 sy-vline, 43(15) v_f_oper_amnt1,

58 sy-vline, 59(15) v_b_oper_amnt1,

74 sy-vline, 75(15) v_a_oper_amnt1.

v_v_oper_amnt = v_b_oper_amnt1 - v_a_oper_amnt1.

if v_b_oper_amnt1 ne 0.

v_per_oper = v_v_oper_amnt * 100 / v_b_oper_amnt1.

endif.

write: 90 sy-vline, 91(15) v_v_oper_amnt,

106 sy-vline,107(10) v_per_oper,

122 sy-vline.

write: /1 sy-vline, 2(40) 'Depreciation'(014),

42 sy-vline, 43(15) v_f_depr_amnt1,

58 sy-vline, 59(15) v_b_depr_amnt1,

74 sy-vline, 75(15) v_a_depr_amnt1.

v_v_depr_amnt = v_b_depr_amnt1 - v_a_depr_amnt1.

if v_b_depr_amnt1 ne 0.

v_per_depr = v_v_depr_amnt * 100 / v_b_depr_amnt1.

endif.

write: 90 sy-vline, 91(15) v_v_depr_amnt,

106 sy-vline,107(10) v_per_depr,

122 sy-vline.

write: /1 sy-vline, 2(40) 'Major Maintenance'(015),

42 sy-vline, 43(15) v_f_main_amnt1,

58 sy-vline, 59(15) v_b_main_amnt1,

74 sy-vline, 75(15) v_a_main_amnt1 .

v_v_main_amnt = v_b_main_amnt1 - v_a_main_amnt1.

if v_b_main_amnt1 ne 0.

v_per_main = v_v_main_amnt * 100 / v_b_main_amnt1.

endif.

write: 90 sy-vline, 91(15) v_v_main_amnt,

106 sy-vline,107(10) v_per_main,

122 sy-vline.

write /1(122) sy-uline.

v_t_f_amnt = v_f_oper_amnt1 + v_f_depr_amnt1 + v_f_main_amnt1.

v_t_b_amnt = v_b_oper_amnt1 + v_b_depr_amnt1 + v_b_main_amnt1.

v_t_a_amnt = v_a_oper_amnt1 + v_a_depr_amnt1 + v_a_main_amnt1.

v_t_v_amnt = v_v_oper_amnt + v_v_depr_amnt + v_v_main_amnt.

if v_t_b_amnt ne 0.

v_per_tot = v_t_v_amnt * 100 / v_t_b_amnt.

endif.

format color off.

write: /1 sy-vline, 2(40) 'Total Operating Expenditures'(016),

42 sy-vline, 43(15) v_t_f_amnt,

58 sy-vline, 59(15) v_t_b_amnt,

74 sy-vline, 75(15) v_t_a_amnt,

90 sy-vline, 91(15) v_t_v_amnt,

106 sy-vline,107(10) v_per_tot,

122 sy-vline.

format color col_normal.

write: /1 sy-vline, 2(40) 'Capital Expenditures'(017),

42 sy-vline, 43(15) v_f_capx_amnt1,

58 sy-vline, 59(15) v_b_capx_amnt1,

74 sy-vline, 75(15) v_a_capx_amnt1.

v_v_capx_amnt = v_b_capx_amnt1 - v_a_capx_amnt1.

if v_b_capx_amnt1 ne 0.

v_per_capx = v_v_capx_amnt * 100 / v_b_capx_amnt1.

endif.

write: 90 sy-vline, 91(15) v_v_capx_amnt,

106 sy-vline,107(10) v_per_capx,

122 sy-vline.

format color off.

v_gt_f_amnt = v_t_f_amnt + v_f_capx_amnt1.

v_gt_b_amnt = v_t_b_amnt + v_b_capx_amnt1.

v_gt_a_amnt = v_t_a_amnt + v_a_capx_amnt1.

v_gt_v_amnt = v_t_v_amnt + v_v_capx_amnt.

write /1(122) sy-uline.

format color 3.

write: /1 sy-vline, 2(40) 'Total'(018),

42 sy-vline, 43(15) v_gt_f_amnt,

58 sy-vline, 59(15) v_gt_b_amnt,

74 sy-vline, 75(15) v_gt_a_amnt.

if v_gt_b_amnt ne 0.

v_per_gtot = v_gt_v_amnt * 100 / v_gt_b_amnt.

endif.

write: 90 sy-vline, 91(15) v_gt_v_amnt,

106 sy-vline,107(10) v_per_gtot,

122 sy-vline.

format color off.

write /1(122) sy-uline.

endform. " Display_report

reward points if useful

regards

Anji

Read only

0 Likes
981

Thanx for your help