2012 Mar 21 12:36 PM
Hello All,
I am using this function Module 'FMKU_0050_CREATE_WITH_COMMIT ' for budget update for all period but
I want to update periodically through this function module, pass this period but not able update period wise.
Can you suggest me how pass the period in this function.
Code :
LOOP AT IT_FINAL INTO WA_FINAL.
v_tabix = sy-tabix.
read table it_bud into wa_bud with key COMMITITEM = WA_FINAL-racct.
if sy-subrc = 0.
WA_ITEMDATA-FUNDS_CTR = wa_bud-FUNDCENTRE.
endif.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = WA_FINAL-RACCT
IMPORTING
OUTPUT = WA_FINAL-RACCT
.
WA_ITEMDATA-CMMT_ITEM = WA_FINAL-RACCT.
WA_ITEMDATA-MEASURE = MEASURE. " FUNDED PROGRAMME
WA_ITEMDATA-TRANS_CURR = 'INR'.
WA_ITEMDATA-TOTAL_AMOUNT = WA_FINAL-NETSALE.
WA_ITEMDATA-ITEM_NUM = v_tabix.
WA_ITEMDATA-FISC_YEAR = year.
WA_ITEMDATA-BUDCAT = '9F'.
WA_ITEMDATA-BUDTYPE = 'TEST'.
WA_ITEMDATA-FUND = 'EXP'.
WA_ITEMDATA-DISTKEY = '1'.
WA_ITEMDATA-VALTYPE = 'B1'.
APPEND WA_ITEMDATA TO IT_ITEMDATA.
ENDLOOP.
describe table it_itemdata lines lin.
*ENDIF.
"FETCHING ALL THE DATA INTO HEADER-DATA
WA_HEADDATA-FM_AREA = 'CPIL'.
WA_HEADDATA-VERSION = '000'.
WA_HEADDATA-DOCDATE = sy-datum.
WA_HEADDATA-DOCTYPE = '0001'.
WA_HEADDATA-DOCSTATE = '1'.
WA_HEADDATA-PROCESS = 'ENTR'.
APPEND WA_HEADDATA TO IT_HEADDATA.
*data : BUDGETING_PERIOD TYPE BUKU_PERIOD.
BUDGETING_PERIOD = period.
" fetthing period data
wa_PERIOD_DATA-ITEM_NUM = lin + 1 .
wa_PERIOD_DATA-BUDGETING_PERIOD = BUDGETING_PERIOD.
append wa_PERIOD_DATA to it_PERIOD_DATA.
"FUNCTION MODULE FOR PASS ALL THE VALUE THROUGH BAPI AND COMMIT WORK
CALL FUNCTION 'FMKU_0050_CREATE_WITH_COMMIT'
EXPORTING
LANGUAGE = 'E'
header_data = WA_HEADDATA
TESTRUN = testrun
IMPORTING
FMAREA = FMAREA
DOCUMENTYEAR = DOCUMENTYEAR
DOCUMENTNUMBER = DOCUMENTNUMBER
tables
item_data = IT_ITEMDATA[]
* SENDER_ITEM_DATA =
PERIOD_DATA = it_PERIOD_DATA[]
* SENDER_PERIOD_DATA =
* LONG_TEXT =
* EXTENSION_IN =
return = IT_RETURN[]
.
"TO DISPLAY MESSAGES IN THE OUTPUT SCREEN
LOOP AT IT_RETURN INTO WA_RETURN.
WRITE:/ WA_RETURN-TYPE,
WA_RETURN-ID,
WA_RETURN-MESSAGE.
ENDLOOP.
Regards
Raju
2012 Mar 21 12:48 PM
First of all remove the function from loop.
Use function BAPI_0050_CREATE
Populate the internal tables inside the loop and call the bapi outside the loop.
In your case the value passed to wa_PERIOD_DATA-ITEM_NUM must be same as WA_ITEMDATA-ITEM_NUM = v_tabix.
2012 Mar 22 6:41 AM
Hi,
Thanks for your reply.
I use this function Module Still not able to pass Period.
Please send me sample code for updating periodically.
2014 Jul 11 11:15 AM
Hi mahapatra,
This function is ok,Under is part of source code.
*****header info
wa_header-fm_area = ls_data-fm_area.
*****转换版本格式
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = ls_data-version
importing
output = ls_data-version.
wa_header-version = ls_data-version.
wa_header-docdate = sy-datum.
wa_header-doctype = 'SF00'.
wa_header-docstate = '1'.
wa_header-process = 'ENTR'.
*****item & period info
l_num = l_num + 1.
ls_item-item_num = l_num.
condense ls_item-item_num.
ls_item-fisc_year = ls_data-fisc_year.
ls_item-budcat = '9F'.
ls_item-budtype = 'BI'.
ls_item-fund = ls_data-fund.
ls_item-funds_ctr = ls_data-funds_ctr.
ls_item-cmmt_item = ls_data-cmmt_item.
ls_item-trans_curr = 'CNY'.
ls_item-trans_curr_iso = 'CNY'.
if ls_data-budget_period = 0. "if budget_period is 0,need input total amount
ls_item-total_amount = ls_data-total_amount.
ls_item-distkey = '1'.
endif.
ls_item-valtype = 'B1'. "预算 未确认
* ls_item-budget_period = ls_data-budget_period.
append ls_item to lt_item.
clear:ls_item.
if ls_data-budget_period ne 0.
ls_period-item_num = l_num.
condense ls_period-item_num.
ls_period-budgeting_period = ls_data-budget_period.
ls_period-period_amount = ls_data-total_amount.
append ls_period to lt_period.
clear:ls_period.
endif.