0% found this document useful (0 votes)
50 views27 pages

Zfund Managment

This document describes a report on fund budgets. It defines tables, parameters and data used in the report. These include fund headers, lines, currencies and more. It also describes building a field catalog, populating data, and displaying an ALV report to output the fund budget data.

Uploaded by

Khalid Ahmed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views27 pages

Zfund Managment

This document describes a report on fund budgets. It defines tables, parameters and data used in the report. These include fund headers, lines, currencies and more. It also describes building a field catalog, populating data, and displaying an ALV report to output the fund budget data.

Uploaded by

Khalid Ahmed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 27

REPORT z_budget_r .

TYPE-POOLS: slis.

TABLES: fmbl, "Fund line item


fmbh, "Fund Header
tcurr, " Currency
fmfctr, " Fund Centers
fmci, "Comm Items
fmcit, " Comm Items Text
setheader,
setnode,
setleaf,
bkpf,
fmifiit,
fmifihd,
fmioi,
fmia.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-000.


PARAMETERS: p_fundc LIKE fmfctr-fictr OBLIGATORY.
" p_com LIKE fmci-fipex OBLIGATORY.
SELECT-OPTIONS so_com FOR fmci-fipex.
*SELECT-OPTIONS s_fndc FOR fmfctr-fictr. " Fund Centers
*SELECT-OPTIONS s_fndg FOR setnode-subsetname. " Fund Group
*SELECT-OPTIONS s_com FOR fmci-fipex. " Comm Items
*SELECT-OPTIONS s_comg FOR setnode-setname. " Comm Group
*SELECT-OPTIONS: s_pdate FOR fmbh-postdate OBLIGATORY NO-EXTENSION, "Posting date
* s_pdate2 FOR fmbh-postdate NO-DISPLAY.

PARAMETERS p_m_area TYPE fikrs MATCHCODE OBJECT fikr DEFAULT '1000' OBLIGATORY. "
FM Area
PARAMETERS p_budcat TYPE fmbudcat-budcat OBLIGATORY DEFAULT '9G'. "Budg Catogory
PARAMETERS p_year TYPE gjahr OBLIGATORY. " Fiscal Year
PARAMETERS: p_monat TYPE monat OBLIGATORY.
PARAMETERS p_ver TYPE fmbh-version DEFAULT '0'. " VERSION
PARAMETERS p_crr TYPE tcurr-fcurr OBLIGATORY. " Currency
SELECTION-SCREEN END OF BLOCK blk1.

SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE TEXT-999.


PARAMETERS: p_line RADIOBUTTON GROUP grp1,
p_tot RADIOBUTTON GROUP grp1.
SELECTION-SCREEN END OF BLOCK blk2.

DATA: BEGIN OF t_fmbl OCCURS 0.


INCLUDE STRUCTURE fmbl.
DATA: END OF t_fmbl.
DATA: t_fmbl2 LIKE TABLE OF t_fmbl WITH HEADER LINE.
DATA: BEGIN OF t_entr OCCURS 0,
fundsctr TYPE fistl,
cmmtitem TYPE fm_fipex,
enter_ea TYPE tvalxx9,
docdate TYPE bp_bldat,
END OF t_entr.

*Data: BEGIN OF t_fmbh OCCURS 0.


* include STRUCTURE fmbh.
*data: END OF t_fmbh.

DATA: BEGIN OF t_setnode OCCURS 0.


INCLUDE STRUCTURE setnode.
DATA:
END OF t_setnode.

DATA: BEGIN OF t_fmifiit OCCURS 0.


INCLUDE STRUCTURE fmifiit.
DATA:
END OF t_fmifiit.

DATA: BEGIN OF t_setleaf OCCURS 0.


INCLUDE STRUCTURE setleaf.
DATA:
END OF t_setleaf.
DATA: clc_data TYPE TABLE OF zsds_budget_office2 WITH HEADER LINE.
*DATA : BEGIN OF clc_data OCCURS 0,
* day TYPE d,
* fundsctr TYPE fistl,
* cmmtitem TYPE fm_fipex,
* enter_ea TYPE tvalxx9,
* enter_ea2 TYPE tvalxx9,
* suppl_ea TYPE tvalxx9,
* recei_ea TYPE tvalxx9,
* send_ea TYPE tvalxx9,
* return_ea TYPE tvalxx9,
* enter_ear TYPE tvalxx9,
* suppl_ear TYPE tvalxx9,
* return_ear TYPE tvalxx9,
* process TYPE buku_process,
* budtype TYPE buku_budtype,
* curr TYPE twaer,
* END OF clc_data.
DATA: v_temp TYPE tvalxx9.
DATA: fin_data TYPE TABLE OF zsds_budget_office WITH HEADER LINE.
*DATA : BEGIN OF fin_data OCCURS 0,
* day TYPE d,
* process LIKE fmbl-process,
* budtype LIKE fmbl-budtype,
* fundsctr TYPE fistl,
* fndname TYPE fm_beschr,
* enter_ea TYPE tvalxx9,
* beschr TYPE fm_fipex,
* text1 TYPE fm_mctxt,
* kurs TYPE ukurs_curr,
* FFACT TYPE FFACT_CURR,
* cur_bdg TYPE tvalxx9,
* enter_ea2 TYPE tvalxx9,
* suppl_ea TYPE tvalxx9,
* send_ea TYPE tvalxx9,
* recei_ea TYPE tvalxx9,
* return_ea TYPE tvalxx9,
* con_bdg TYPE tvalxx9,
* cons_bdg TYPE tvalxx9 ,
* avl_bdg TYPE tvalxx9,
* avl_prs TYPE tvalxx9,
* curr TYPE twaer,
* init TYPE tvalxx9,
* tot_cons TYPE tvalxx9,
* END OF fin_data,
DATA: v_enddate TYPE d,
wa_fmbh TYPE fmbh.

DATA: sysdate TYPE gjahr,


lin TYPE i,
ini TYPE i,
knd TYPE c,
v_fundsctr TYPE fistl,
v_cmmtitem TYPE fm_fipex,
v_docdate TYPE bp_bldat,
kurs TYPE ukurs_curr,
enter_ea TYPE tvalxx9,
v_repid LIKE sy-repid,
t_date TYPE sy-datum,
t_date2 TYPE sy-datum,
wa_tcurf TYPE tcurf,
wa_fin LIKE LINE OF fin_data,
fin_data2 LIKE TABLE OF fin_data,
v_year TYPE num4,
wa_curr TYPE tcurx,
v_FFACT TYPE ffact_curr.

"v_docdate LIKE fmbh-docdate.

DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,


fieldcatalog2 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.

DATA: v_events TYPE slis_t_event,


wa_event TYPE slis_alv_event,
it_listheader TYPE slis_t_listheader,
first_date TYPE budat,
end_date TYPE budat,
first_date2 TYPE budat,
end_date2 TYPE budat.

DATA : BEGIN OF dtl_data OCCURS 0,


docno TYPE bued_docnr,
pross TYPE buku_process,
bdgtyp TYPE buku_budtype,
amnt TYPE tvalxx9,
date TYPE bp_bldat,
usr TYPE buku_crtuser,
END OF dtl_data.

INITIALIZATION.
sysdate = sy-datum(4).
p_year = sysdate.
v_repid = sy-repid.

START-OF-SELECTION.
PERFORM decimal_places_for_curr.
PERFORM build_fieldcatalog.
PERFORM event_call.
PERFORM populate_event.
PERFORM get_data USING '1'.
PERFORM clc_data USING '1'.
PERFORM display_alv_report.

*&---------------------------------------------------------------------*
*& Include ZFO_BUDGET_OFFICE_F01
*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*
***INCLUDE ZFO_BUDGET_OFFICE_F01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcatalog .

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'FUNDSCTR'.
fieldcatalog-seltext_m = TEXT-001.
fieldcatalog-col_pos = 1.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

* fieldcatalog-tabname = 'FIN_DATA'.
* fieldcatalog-fieldname = 'FNDNAME'.
* fieldcatalog-seltext_m = text-002.
* fieldcatalog-col_pos = 2.
* fieldcatalog-outputlen = 15.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'BESCHR'.
fieldcatalog-seltext_m = TEXT-003.
fieldcatalog-col_pos = 3.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'TEXT1'.
fieldcatalog-seltext_m = TEXT-004.
fieldcatalog-col_pos = 4.
fieldcatalog-outputlen = 20.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'DAY'.
fieldcatalog-seltext_m = TEXT-005.
fieldcatalog-col_pos = 5.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'KURS'.
fieldcatalog-seltext_m = TEXT-006.
fieldcatalog-col_pos = 6.
fieldcatalog-outputlen = 10.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'ENTER_EA'.
fieldcatalog-seltext_m = TEXT-007.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'SUPPL_EA'.
fieldcatalog-seltext_m = TEXT-008.
fieldcatalog-col_pos = 8.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'RETURN_EA'.
fieldcatalog-seltext_m = TEXT-011.
fieldcatalog-col_pos = 9.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'CON_BDG'.
fieldcatalog-seltext_m = TEXT-012.
fieldcatalog-col_pos = 12.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'CONS_BDG'.
fieldcatalog-seltext_m = TEXT-013.
fieldcatalog-col_pos = 13.
fieldcatalog-outputlen = 12.
IF p_tot IS INITIAL.
fieldcatalog-do_sum = 'X'.
ENDIF.

APPEND fieldcatalog TO fieldcatalog.


CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'AVL_BDG'.
fieldcatalog-seltext_m = TEXT-014.
fieldcatalog-col_pos = 14.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'AVL_PRS'.
fieldcatalog-seltext_m = TEXT-015.
fieldcatalog-col_pos = 15.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'CURR'.
fieldcatalog-seltext_m = TEXT-016.
fieldcatalog-col_pos = 16.
fieldcatalog-outputlen = 5.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'INIT'.
fieldcatalog-seltext_m = TEXT-017.
fieldcatalog-col_pos = 17.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'TOT_CONS'.
fieldcatalog-seltext_m = TEXT-018.
fieldcatalog-col_pos = 18.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = TEXT-019.
fieldcatalog-col_pos = 18.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'PO_AV'.
fieldcatalog-seltext_m = TEXT-020.
fieldcatalog-col_pos = 18.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'PREIS'.
fieldcatalog-seltext_m = TEXT-021.
fieldcatalog-col_pos = 18.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-tabname = 'FIN_DATA'.
fieldcatalog-fieldname = 'PR_AV'.
fieldcatalog-seltext_m = TEXT-022.
fieldcatalog-col_pos = 18.
fieldcatalog-outputlen = 12.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

ENDFORM. " BUILD_FIELDCATALOG


*&---------------------------------------------------------------------*
*& Form EVENT_CALL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM event_call .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = v_events.
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. " EVENT_CALL
*&---------------------------------------------------------------------*
*& Form POPULATE_EVENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM populate_event .
READ TABLE v_events INTO wa_event WITH KEY name = 'TOP_OF_PAGE'.
IF sy-subrc EQ 0.
wa_event-form = 'TOP_OF_PAGE'.
MODIFY v_events FROM wa_event TRANSPORTING form WHERE name =
wa_event-form.
ENDIF.

READ TABLE v_events INTO wa_event WITH KEY name = 'USER_COMMAND'.


IF sy-subrc EQ 0.
wa_event-form = 'USER_COMMAND'.
MODIFY v_events FROM wa_event TRANSPORTING form WHERE name =
wa_event-name.
ENDIF.
ENDFORM. " POPULATE_EVENT
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0460 text
*----------------------------------------------------------------------*
FORM get_data USING flag TYPE char1.
IF flag = '1'.
* SELECT * FROM fmbl INTO TABLE t_fmbl
* WHERE fm_area = p_m_area
* AND docyear = p_year
* AND fundsctr = p_fundc
* AND cmmtitem = p_com
* AND budcat = p_budcat.
SELECT * FROM fmbl INTO TABLE t_fmbl2
WHERE fm_area = p_m_area
AND docyear = p_year
AND fundsctr = p_fundc
AND cmmtitem IN so_com
* AND cmmtitem LIKE '3%'
AND budcat = p_budcat.

SORT t_fmbl2 BY fm_area docyear fundsctr cmmtitem.

ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form CLC_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0464 text
*----------------------------------------------------------------------*
FORM clc_data USING flag TYPE char1.
REFRESH t_fmbl.
READ TABLE t_fmbl2 INDEX 1.
v_fundsctr = t_fmbl2-fundsctr.
v_cmmtitem = t_fmbl2-cmmtitem.
LOOP AT t_fmbl2.
IF v_fundsctr = t_fmbl2-fundsctr AND v_cmmtitem = t_fmbl2-cmmtitem.
APPEND t_fmbl2 TO t_fmbl.
ELSE.
PERFORM single_fund_commitment USING flag.
REFRESH t_fmbl.
PERFORM aggregate.
APPEND LINES OF fin_data TO fin_data2.
REFRESH fin_data.
v_fundsctr = t_fmbl2-fundsctr.
v_cmmtitem = t_fmbl2-cmmtitem.
APPEND t_fmbl2 TO t_fmbl.
ENDIF.
ENDLOOP.
PERFORM single_fund_commitment USING flag.
PERFORM aggregate.
APPEND LINES OF fin_data TO fin_data2.

ENDFORM. " CLC_DATA


*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_alv_report .
PERFORM fill_sort.
gd_repid = sy-repid.

LOOP AT fin_data2 ASSIGNING FIELD-SYMBOL(<fs>) .

DATA date TYPE char50 .


date = <fs>-day+0(6) .
CONCATENATE date '%' INTO date .

CONVERT DATE <fs>-day INTO INVERTED-DATE t_date2 .

SELECT SUM( netPR ) FROM ekpo


JOIN ekko ON ekpo~ebeln = ekko~ebeln
INTO <fs>-netpr WHERE ekpo~fistl = <fs>-fundsctr AND ekpo~fipos = <fs>-beschr
"pr
AND ekko~bedat LIKE date .

SELECT SINGLE waers FROM EKkO


JOIN EKpo ON ekko~ebeln = EKpo~ebeln
INTO @DATA(curr2) WHERE ekpo~fistl = @<fs>-fundsctr AND ekpo~fipos = @<fs>-
beschr "pr
AND ekko~bedat LIKE @date .

SELECT SUM( preis ) FROM eban INTO <fs>-preis WHERE fistl = <fs>-fundsctr AND
fipos = <fs>-beschr AND frgkz = 'X' AND badat LIKE date . "po
SELECT SINGLE waers FROM eban INTO @DATA(curr) WHERE fistl = @<fs>-fundsctr AND
fipos = @<fs>-beschr AND frgkz = 'X' AND badat LIKE @date . "po

IF curr NE <fs>-curr . " ****po

SELECT * FROM tcurr CLIENT SPECIFIED


WHERE kurst EQ 'M'
AND fcurr EQ curr
AND tcurr EQ 'USD'
AND gdatu GE t_date2
AND mandt EQ sy-mandt.
<fs>-preis = <fs>-preis * tcurr-ukurs .
ENDSELECT .
ENDIF .

"//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////

IF curr2 NE <fs>-curr . "*****PR

SELECT * FROM tcurr CLIENT SPECIFIED


WHERE kurst EQ 'M'
AND fcurr EQ curr2
AND tcurr EQ 'USD'
AND gdatu GE t_date2
AND mandt EQ sy-mandt.

<fs>-netpr = <fs>-netpr * tcurr-ukurs .

ENDSELECT .
ENDIF .

****************************************************************
<fs>-po_av = <fs>-con_bdg - <fs>-netpr .
<fs>-PR_av = <fs>-con_bdg - <fs>-preis .
<fs>-day = <fs>-day+0(6) .

ENDLOOP .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program = gd_repid
* i_callback_user_command = 'USER_COMMAND'
* i_callback_top_of_page = 'TOP_OF_PAGE'
* is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_sort = it_sort[]
* it_special_groups = gd_tabgroup
* IT_EVENTS = GT_XEVENTS
i_save = 'A'
* is_variant = z_template
TABLES
t_outtab = fin_data2
EXCEPTIONS
program_error = 1
OTHERS = 2.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*& Form GET_CONSUMED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FLAG text
*----------------------------------------------------------------------*
FORM get_consumed USING flag TYPE char1.

DATA : calc LIKE kurs,


cons LIKE fin_data-cons_bdg,
v_ebeln LIKE eban-ebeln,
v_calcc TYPE char10,
v_num TYPE n LENGTH 3,
v_dec TYPE n LENGTH 3.
CLEAR: fin_data-cons_bdg,
v_ebeln,
bkpf,
fmifiit,
fmifihd.

SELECT * FROM fmifiit


WHERE gjahr = p_year
AND fistl = fin_data-fundsctr
AND fipex = fin_data-beschr
AND rldnr = '9B'
AND zhldt BETWEEN fin_data-day AND v_enddate.

CLEAR: bkpf,
fmifihd.

SELECT SINGLE *
FROM fmifihd
WHERE fmbelnr = fmifiit-fmbelnr
AND fikrs = '1000'.

IF sy-subrc = 0.
SELECT SINGLE *
FROM bkpf
WHERE belnr = fmifihd-awref
AND bukrs = fmifihd-bukrs
AND gjahr = fmifiit-gjahr.
ENDIF.

calc = bkpf-kursf.
IF p_crr = 'USD'.
ADD fmifiit-fkbtr TO fin_data-cons_bdg.
ELSEIF bkpf-waers = p_crr.
CLEAR cons.
cons = ( fmifiit-fkbtr * wa_tcurf-ffact ) / calc.
ADD cons TO fin_data-cons_bdg.
ELSE.
CLEAR cons.
cons = ( fmifiit-fkbtr * wa_tcurf-ffact ) / kurs.
ADD cons TO fin_data-cons_bdg.
ENDIF.
* IF calc <> kurs AND kurs <> 1 AND calc IS NOT INITIAL .
* CLEAR cons.
* cons = ( fmifiit-fkbtr * wa_tcurf-ffact ) / calc.
* ADD cons TO
* ELSE.
* CLEAR cons.
* cons = ( fmifiit-fkbtr * wa_tcurf-ffact ) / kurs.
* ADD cons TO fin_data-cons_bdg.
* ENDIF.
* fin_data-cons_bdg = fin_data-cons_bdg + fmifiit-fkbtr .
ENDSELECT.
* fin_data-cons_bdg = ( fin_data-cons_bdg * wa_tcurf-ffact ) / kurs.

SELECT * FROM fmioi


WHERE fikrs = '1000'
AND budat BETWEEN fin_data-day AND v_enddate
AND gjahr = p_year
AND fistl = fin_data-fundsctr
AND fipex = fin_data-beschr
AND zhldt BETWEEN fin_data-day AND v_enddate
AND wrttp IN ('50','51','65','81','82').

CLEAR: calc .
IF p_crr <> fmioi-twaer.
SELECT SINGLE wkurs FROM ekko INTO calc WHERE ebeln = fmioi-refbn .

IF calc <> kurs AND kurs <> 1 AND calc IS NOT INITIAL .

CLEAR cons.
v_calcc = calc.
SPLIT v_calcc AT '.' INTO v_num v_dec.
IF v_num > 0.
cons = ( fmioi-trbtr * wa_tcurf-ffact ) / calc.
ELSE.
cons = ( fmioi-trbtr * wa_tcurf-ffact ) * calc.
ENDIF.
IF fmioi-twaer <> p_crr.
cons = cons / kurs.
ENDIF.
ADD cons TO fin_data-cons_bdg.
ELSE.
SELECT SINGLE ebeln
FROM eban
INTO v_ebeln
WHERE banfn = fmioi-refbn.
IF sy-subrc = 0.
SELECT SINGLE wkurs FROM ekko INTO calc WHERE ebeln = v_ebeln .

IF calc <> kurs AND kurs <> 1 AND calc IS NOT INITIAL .
CLEAR cons.
v_calcc = calc.
SPLIT v_calcc AT '.' INTO v_num v_dec.
IF v_num > 0.
cons = ( fmioi-trbtr * wa_tcurf-ffact ) / calc.
ELSE.
cons = ( fmioi-trbtr * wa_tcurf-ffact ) * calc.
ENDIF.
IF fmioi-twaer <> p_crr.
cons = cons / kurs.
ENDIF.
ADD cons TO fin_data-cons_bdg.
ENDIF.
ELSE.
CLEAR cons.
cons = ( fmioi-fkbtr * wa_tcurf-ffact ) / kurs.
ADD cons TO fin_data-cons_bdg.
ENDIF.

ENDIF.

ELSE.
CLEAR cons.
cons = fmioi-trbtr.
IF wa_curr IS NOT INITIAL.
IF wa_curr-currdec = 3.
DIVIDE cons BY 10.
ENDIF.
ENDIF.
ADD cons TO fin_data-cons_bdg.
ENDIF.

* fmioi-trbtr = ( fmioi-trbtr * wa_tcurf-ffact ) / kurs.


* fin_data-cons_bdg = fin_data-cons_bdg + fmioi-trbtr.
ENDSELECT.

SELECT * FROM fmia


WHERE rfistl = fin_data-fundsctr
AND rfipex = fin_data-beschr
AND ryear = p_year
AND budat BETWEEN fin_data-day AND v_enddate.
fmia-tsl = ( fmia-tsl * wa_tcurf-ffact ) / kurs.
fin_data-cons_bdg = fin_data-cons_bdg + fmia-tsl.
ENDSELECT.
fin_data-con_bdg = fin_data-enter_ea + fin_data-suppl_ea - fin_data-return_ea.
fin_data-avl_bdg = fin_data-con_bdg + fin_data-cons_bdg.

IF flag = '1'.
fin_data-tot_cons = fin_data-cons_bdg.
ELSE.
fin_data-tot_cons = fin_data-tot_cons + fin_data-cons_bdg.
ENDIF.
IF fin_data-con_bdg <> 0.
IF flag = '1'.
fin_data-init = fin_data-con_bdg.
fin_data-avl_prs = ( fin_data-avl_bdg / fin_data-con_bdg ) * 100.
IF fin_data-avl_prs LE 0.
fin_data-avl_prs = 0.
ENDIF.

ELSE.
IF wa_fin-con_bdg <> 0.
fin_data-avl_prs = ( fin_data-avl_bdg / wa_fin-con_bdg ) * 100.
ENDIF.
IF fin_data-avl_prs LE 0.
fin_data-avl_prs = 0.
ENDIF.
ENDIF.

ENDIF.
fin_data-day = fin_data-day ."+0(6).
ENDFORM. " GET_CONSUMED
*&---------------------------------------------------------------------*
*& Form GET_EXCHANGE_RATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_exchange_rate .
IF p_crr IS NOT INITIAL.

CONVERT DATE fin_data-day


INTO INVERTED-DATE t_date.
SELECT * FROM tcurr CLIENT SPECIFIED
WHERE kurst EQ 'M'
AND fcurr EQ p_crr
AND tcurr EQ 'USD'
AND gdatu GE t_date
AND mandt EQ sy-mandt.

kurs = tcurr-ukurs.
SELECT SINGLE * FROM tcurf INTO wa_tcurf
WHERE kurst EQ 'M'
AND fcurr EQ p_crr
AND tcurr EQ 'USD'
AND gdatu GE t_date.
EXIT.
ENDSELECT.
ELSE.
kurs = 1.
ENDIF.

IF wa_tcurf-ffact = 0.
wa_tcurf-ffact = 1.
ENDIF.
IF kurs = 0.
kurs = 1.
ENDIF.
fin_data-kurs = kurs.
IF fin_data-ffact IS NOT INITIAL AND wa_tcurf-ffact IS NOT INITIAL
AND fin_data-ffact <> wa_tcurf-ffact.
v_ffact = fin_data-ffact.
ENDIF.
fin_data-ffact = wa_tcurf-ffact.
IF wa_fin IS NOT INITIAL.
fin_data-enter_ea = wa_fin-avl_bdg.
IF fin_data-kurs <> wa_fin-kurs.
fin_data-enter_ea = wa_fin-avl_bdg * wa_fin-kurs / fin_data-kurs.
ENDIF.
ENDIF.
ENDFORM. " GET_EXCHANGE_RATE
*&---------------------------------------------------------------------*
*& Form GET_LAST_DAY_OF_MONTH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_last_day_of_month .
fin_data-curr = p_crr.
CALL FUNCTION 'SG_PS_GET_LAST_DAY_OF_MONTH'
EXPORTING
day_in = fin_data-day
IMPORTING
last_day_of_month = v_enddate
EXCEPTIONS
day_in_not_valid = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " GET_LAST_DAY_OF_MONTH
*&---------------------------------------------------------------------*
*& Form GET_SUPPLIED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_supplied .
CLEAR fin_data-suppl_ea.
LOOP AT t_fmbl WHERE process = 'SUPL' AND budtype = 'PMS1'.
SELECT SINGLE docdate
FROM fmbh
INTO v_docdate
WHERE fm_area = t_fmbl-fm_area
AND docyear = t_fmbl-docyear
AND docnr = t_fmbl-docnr
AND docdate BETWEEN fin_data-day AND v_enddate.
IF sy-subrc = 0.
CLEAR enter_ea.
enter_ea = t_fmbl-tval01 + t_fmbl-tval02 + t_fmbl-tval03
+ t_fmbl-tval04 + t_fmbl-tval05 + t_fmbl-tval06
+ t_fmbl-tval07 + t_fmbl-tval08 + t_fmbl-tval09
+ t_fmbl-tval10 + t_fmbl-tval11 + t_fmbl-tval12.
fin_data-suppl_ea = fin_data-suppl_ea +
( abs( enter_ea ) * wa_tcurf-ffact ) / kurs.
ENDIF.
ENDLOOP.

fin_data-con_bdg = fin_data-enter_ea + fin_data-suppl_ea.

CLEAR fin_data-return_ea.
LOOP AT t_fmbl WHERE process = 'RETN' AND budtype = 'PMS1'.
SELECT SINGLE docdate
FROM fmbh
INTO v_docdate
WHERE fm_area = t_fmbl-fm_area
AND docyear = t_fmbl-docyear
AND docnr = t_fmbl-docnr
AND docdate BETWEEN fin_data-day AND v_enddate.
IF sy-subrc = 0.
CLEAR enter_ea.
enter_ea = t_fmbl-tval01 + t_fmbl-tval02 + t_fmbl-tval03
+ t_fmbl-tval04 + t_fmbl-tval05 + t_fmbl-tval06
+ t_fmbl-tval07 + t_fmbl-tval08 + t_fmbl-tval09
+ t_fmbl-tval10 + t_fmbl-tval11 + t_fmbl-tval12.

fin_data-return_ea = fin_data-return_ea +
( enter_ea * wa_tcurf-ffact ) / kurs.

* fin_data-return_ea = fin_data-return_ea +
* ( abs( enter_ea ) * wa_tcurf-ffact ) / kurs.
ENDIF.
ENDLOOP.

fin_data-con_bdg = fin_data-enter_ea - fin_data-return_ea.

ENDFORM. " GET_SUPPLIED


*&---------------------------------------------------------------------*
*& Form GET_DESCRIPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_description .
SELECT SINGLE beschr FROM fmfctrt INTO fin_data-fndname
WHERE fictr = fin_data-fundsctr.

SELECT SINGLE text1 FROM fmcit INTO fin_data-text1


WHERE fipex = fin_data-beschr.
ENDFORM. " GET_DESCRIPTION
*&---------------------------------------------------------------------*
*& Form FILL_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_sort .
CLEAR it_sort.
it_sort-spos = '01'.
it_sort-fieldname = 'FUNDSCTR'.
it_sort-tabname = 'FIN_DATA'.
APPEND it_sort.

CLEAR it_sort.
it_sort-spos = '02'.
it_sort-fieldname = 'BESCHR'.
it_sort-tabname = 'FIN_DATA'.
APPEND it_sort.

CLEAR it_sort.
it_sort-spos = '03'.
it_sort-fieldname = 'TEXT1'.
it_sort-tabname = 'FIN_DATA'.

APPEND it_sort.
ENDFORM. " FILL_SORT
*&---------------------------------------------------------------------*
*& Form GET_ENTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FLAG text
*----------------------------------------------------------------------*
FORM get_enter USING flag.
DATA: v_found.
CLEAR v_found.
IF flag = '1'.
LOOP AT t_fmbl WHERE process = 'ENTR' AND budtype = 'PMS'.
SELECT SINGLE *
FROM fmbh
INTO wa_fmbh
WHERE fm_area = t_fmbl-fm_area
AND docyear = t_fmbl-docyear
AND docnr = t_fmbl-docnr
AND docdate BETWEEN fin_data-day AND v_enddate.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
v_found = 'X'.
MOVE-CORRESPONDING t_fmbl TO fin_data.
fin_data-beschr = t_fmbl-cmmtitem.
PERFORM get_description.
CLEAR enter_ea.
enter_ea = t_fmbl-tval01 + t_fmbl-tval02 +
t_fmbl-tval03 + t_fmbl-tval04 + t_fmbl-tval05 +
t_fmbl-tval06 + t_fmbl-tval07 + t_fmbl-tval08 + t_fmbl-
tval09 + t_fmbl-tval10 +
t_fmbl-tval11 + t_fmbl-tval12 .
* enter_ea = abs( enter_ea ).
enter_ea = enter_ea * -1 .
fin_data-enter_ea = fin_data-enter_ea + ( enter_ea * wa_tcurf-ffact ) /
kurs.
* fin_data-enter_ea = fin_data-enter_ea + ( abs( enter_ea ) * wa_tcurf-
ffact ) / kurs.
ENDLOOP.
IF v_found = space.
fin_data-fundsctr = v_fundsctr.
fin_data-beschr = v_cmmtitem.
PERFORM get_description.
ENDIF.
ELSE.
IF v_ffact IS NOT INITIAL AND v_ffact <> 0.
fin_data-enter_ea = fin_data-enter_ea * wa_tcurf-ffact / v_ffact.
CLEAR v_ffact.
ENDIF.
LOOP AT t_fmbl WHERE process = 'ENTR' AND budtype = 'PMS1'.
SELECT SINGLE *
FROM fmbh
INTO wa_fmbh
WHERE fm_area = t_fmbl-fm_area
AND docyear = t_fmbl-docyear
AND docnr = t_fmbl-docnr
AND docdate BETWEEN fin_data-day AND v_enddate.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
CLEAR enter_ea.
enter_ea = t_fmbl-tval01 + t_fmbl-tval02 +
t_fmbl-tval03 + t_fmbl-tval04 + t_fmbl-tval05 +
t_fmbl-tval06 + t_fmbl-tval07 + t_fmbl-tval08 + t_fmbl-
tval09 + t_fmbl-tval10 +
t_fmbl-tval11 + t_fmbl-tval12 .
* enter_ea = abs( enter_ea ).

enter_ea = enter_ea * -1 .
fin_data-enter_ea = fin_data-enter_ea + ( enter_ea * wa_tcurf-ffact ) /
kurs.
* fin_data-enter_ea = fin_data-enter_ea + ( abs( enter_ea ) * wa_tcurf-
ffact ) / kurs.

ENDLOOP.
ENDIF.
ENDFORM. " GET_ENTER
*&---------------------------------------------------------------------*
*& Form SINGLE_FUND_COMMITMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM single_fund_commitment USING flag.
DO p_monat TIMES.
CASE sy-index.
WHEN '1'.
CLEAR fin_data.
CONCATENATE p_year '0101' INTO fin_data-day.
PERFORM get_last_day_of_month.
CLEAR wa_fin.
PERFORM get_exchange_rate.
PERFORM get_enter USING flag.
PERFORM get_supplied.
PERFORM get_consumed USING flag.
APPEND fin_data.
WHEN '2'.
CLEAR fin_data.
READ TABLE fin_data INDEX 1 INTO wa_fin.
fin_data = wa_fin.
CONCATENATE p_year '0201' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '3'.
CLEAR fin_data.
READ TABLE fin_data INDEX 2 INTO wa_fin.
fin_data = wa_fin.
CONCATENATE p_year '0301' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '4'.
CLEAR fin_data.
READ TABLE fin_data INDEX 3 INTO wa_fin.
fin_data = wa_fin.
CONCATENATE p_year '0401' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '5'.
CLEAR fin_data.
READ TABLE fin_data INDEX 4 INTO wa_fin.
fin_data = wa_fin.
CONCATENATE p_year '0501' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '6'.
CLEAR fin_data.
READ TABLE fin_data INDEX 5 INTO wa_fin.
fin_data = wa_fin.
CONCATENATE p_year '0601' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '7'.
CLEAR fin_data.
READ TABLE fin_data INDEX 6 INTO wa_fin.
fin_data = wa_fin.
* v_year = p_year + 1.
CONCATENATE p_year '0701' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '8'.
CLEAR fin_data.
READ TABLE fin_data INDEX 7 INTO wa_fin.
fin_data = wa_fin.
* v_year = p_year + 1.
CONCATENATE p_year '0801' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '9'.
CLEAR fin_data.
READ TABLE fin_data INDEX 8 INTO wa_fin.
fin_data = wa_fin.
CONCATENATE p_year '0901' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '10'.
CLEAR fin_data.
READ TABLE fin_data INDEX 9 INTO wa_fin.
fin_data = wa_fin.
CONCATENATE p_year '1001' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '11'.
CLEAR fin_data.
READ TABLE fin_data INDEX 10 INTO wa_fin.
fin_data = wa_fin.
CONCATENATE p_year '1101' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_supplied.
PERFORM get_enter USING '2'.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN '12'.
CLEAR fin_data.
READ TABLE fin_data INDEX 11 INTO wa_fin.
fin_data = wa_fin.
CONCATENATE p_year '1201' INTO fin_data-day.
PERFORM get_last_day_of_month.
PERFORM get_exchange_rate.
PERFORM get_enter USING '2'.
PERFORM get_supplied.
CLEAR wa_fin.
READ TABLE fin_data INDEX 1 INTO wa_fin.
PERFORM get_consumed USING '2'.
APPEND fin_data.

WHEN OTHERS.
ENDCASE.
ENDDO.

ENDFORM. " SINGLE_FUND_COMMITMENT


*&---------------------------------------------------------------------*
*& Form AGGREGATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM aggregate .
IF p_line IS NOT INITIAL.
" do nothing
ELSE.
LOOP AT fin_data.
IF sy-tabix = p_monat.
wa_fin = fin_data.
EXIT.
ENDIF.
ENDLOOP.
DELETE fin_data WHERE table_line <> wa_fin.
ENDIF.
ENDFORM. " AGGREGATE
*&---------------------------------------------------------------------*
*& Form DECIMAL_PLACES_FOR_CURR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM decimal_places_for_curr .
CLEAR wa_curr.
SELECT SINGLE *
FROM tcurx
INTO wa_curr
WHERE currkey = p_crr.
ENDFORM. " DECIMAL_PLACES_FOR_CURR

* INCLUDE zfo_budget_office_f01.

*TYPE-POOLS: slis.
*
*
*
*
*PARAMETERS: fund LIKE fmfctr-fictr ,
* p_com LIKE fmci-fipex .
*
*TYPES:BEGIN OF STR,
* RFUNDSCTR TYPE FMBL-fundsctr,
* RCMMTITEM TYPE FMBL-cmmtitem ,
* MONTH(2) TYPE C ,
* TVAL01 type FMBL-tval01 ,
* TVAL02 type FMBL-tval01 ,
* TVAL03 type FMBL-tval01 ,
** TVAL04 type FMBL-tval01 ,
** TVAL05 type FMBL-tval01 ,
** TVAL06 type FMBL-tval01 ,
** TVAL07 type FMBL-tval01 ,
** TVAL08 type FMBL-tval01 ,
** TVAL09 type FMBL-tval01 ,
** TVAL10 type FMBL-tval01 ,
** TVAL11 type FMBL-tval01 ,
** TVAL12 type FMBL-tval01 ,
* netPR TYPE EKPO-NETPR ,
* PREIS type eban-PREIS ,
*
* END OF STR.
*
*
*
*DATA: it_sort TYPE slis_t_sortinfo_alv,
* wa_sort TYPE slis_sortinfo_alv.
*
* DATA IT TYPE TABLE OF STR WITH HEADER LINE .
*DATA : wa_fcat TYPE slis_fieldcat_alv,
* it_fcat TYPE slis_t_fieldcat_alv,
* wa_layout TYPE slis_layout_alv,
* wa_key TYPE slis_keyinfo_alv.
*
*
*IF fund IS NOT INITIAL .
*
*select RFUNDSCTR RCMMTITEM from FMAVCT into CORRESPONDING FIELDS OF TABLE it
where RFUNDSCTR = fund .
*
*
*ELSE .
*
*select RFUNDSCTR RCMMTITEM from FMAVCT into CORRESPONDING FIELDS OF TABLE it
where RCMMTITEM = p_com .
*
*
*
*
*ENDIF .
*
*LOOP AT IT .
*
*DO 12 TIMES .
*
*IT-rfundsctr = IT-rfundsctr .
*it-rcmmtitem = it-rcmmtitem .
*IT-month = SY-INDEX .
*CONDENSE IT-month .
*
*
*if IT-month = '1' .
*select SINGLE TSL01 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL01 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*if IT-month = '2' .
*select SINGLE TSL02 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL02 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*
*if IT-month = '3' .
*select SINGLE TSL03 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL03 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*if IT-month = '4' .
*select SINGLE TSL04 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL04 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*if IT-month = '5' .
*select SINGLE TSL05 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL05 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*if IT-month = '6' .
*select SINGLE TSL06 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL06 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*
*if IT-month = '7' .
*select SINGLE TSL07 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL07 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*if IT-month = '8' .
*select SINGLE TSL08 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL08 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*
*if IT-month = '9' .
*select SINGLE TSL09 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL09 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*if IT-month = '10' .
*select SINGLE TSL10 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL10 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*if IT-month = '11' .
*select SINGLE TSL11 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL11 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*if IT-month = '12' .
*select SINGLE TSL12 from FMAVCT into it-tval01 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '0'.
*select SINGLE TSL12 from FMAVCT into it-tval02 where RFUNDSCTR = IT-RFUNDSCTR
and RCMMTITEM = it-RCMMTITEM AND RRCTY = '1'.
*IT-TVAL03 = IT-tval01 - IT-TVAL02 .
*endif .
*
*SELECT SINGLE netPR FROM EKPO INTO it-netpr WHERE fistl = IT-RFUNDSCTR AND fipos =
it-RCMMTITEM.
*
*select SINGLE PREIS from eban into it-preis WHERE fistl = IT-RFUNDSCTR AND fipos =
it-RCMMTITEM and frgkz = 'X' .
*
*
*INSERT IT .
*
*ENDDO .
*
*ENDLOOP .
*delete it where month is INITIAL .
*
*
*
*wa_fcat-fieldname = 'RFUNDSCTR' .
*wa_fcat-tabname = 'IT' .
*wa_fcat-seltext_m = 'Fund Center'.
*APPEND wa_fcat TO it_fcat .
*CLEAR wa_fcat .
*
*wa_fcat-fieldname = 'RCMMTITEM'.
*wa_fcat-tabname = 'IT' .
*wa_fcat-seltext_m = 'Commitment Item' .
*APPEND wa_fcat TO it_fcat .
*CLEAR wa_fcat .
*
*
*
*wa_fcat-fieldname = 'MONTH'.
*wa_fcat-tabname = 'IT' .
*wa_fcat-seltext_m = 'Month' .
*APPEND wa_fcat TO it_fcat .
*CLEAR wa_fcat .
*
*
*
*wa_fcat-fieldname = 'TVAL01'.
*wa_fcat-tabname = 'IT' .
*wa_fcat-seltext_m = 'Consumed Budget' .
*wa_fcat-do_sum = 'X' .
*APPEND wa_fcat TO it_fcat .
*CLEAR wa_fcat .
*
*
*
*wa_fcat-fieldname = 'TVAL02'.
*wa_fcat-tabname = 'IT' .
*wa_fcat-seltext_m = 'Consumable Budget' .
*wa_fcat-do_sum = 'X' .
*APPEND wa_fcat TO it_fcat .
*CLEAR wa_fcat .
*
*
*
*
*wa_fcat-fieldname = 'TVAL03'.
*wa_fcat-tabname = 'IT' .
*wa_fcat-seltext_m = 'Available Amount' .
*wa_fcat-do_sum = 'X' .
*APPEND wa_fcat TO it_fcat .
*CLEAR wa_fcat .
*
*
*
*
*wa_fcat-fieldname = 'NETPR'.
*wa_fcat-tabname = 'IT' .
*wa_fcat-seltext_m = 'PO Amount' .
*wa_fcat-do_sum = 'X' .
*APPEND wa_fcat TO it_fcat .
*CLEAR wa_fcat .
*
*
*
*wa_fcat-fieldname = 'PREIS'.
*wa_fcat-tabname = 'IT' .
*wa_fcat-seltext_m = 'PR Amount' .
*wa_fcat-do_sum = 'X' .
*
*APPEND wa_fcat TO it_fcat .
*CLEAR wa_fcat .
*****************************************
*wa_sort-fieldname = 'RFUNDSCTR' .
*wa_sort-up = 'X' .
*wa_sort-subtot = 'X' .
*APPEND wa_sort TO IT_SORT .
*
*
*wa_sort-fieldname = 'RCMMTITEM' .
*wa_sort-up = 'X' .
*wa_sort-subtot = 'X' .
*APPEND wa_sort TO IT_SORT .
*****************************************
*
*CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
* EXPORTING
*i_callback_program = sy-repid
*it_fieldcat = it_fcat
*it_sort = it_sort
*
*TABLES
*t_outtab = it[]
*.
*
*
*
*
*
*
*
**loop at it ASSIGNING FIELD-SYMBOL(<fs>) .
**
**SELECT SINGLE netPR FROM EKPO INTO <fs>-netpr WHERE fistl = IT-fundsctr AND fipos
= IT-cmmtitem .
**
**select SINGLE PREIS from eban into <fs>-preis WHERE fistl = IT-fundsctr AND fipos
= IT-cmmtitem and frgkz = 'X' .
**
**
**endloop .

You might also like