目录
CJ37增加预算
CJ38返回预算
CJ34转借预算
01
—
CJ37增加预算
1、补充预算
调用事务代码CJ37,输入要增加的WBS要素的预算,点击保存即可
2、代码示例
预算补充代码,调用函数:KBPP_EXTERN_UPDATE_CO
其中预算增加减少的参数,可参考以下介绍
"参数 I_BUDGET_ACTIVITY 是业务交易,支持以下这些业务交易。
"原始预算
"– KBUD 预算修改(TCODE:CJ30/CJ32)
"– KBN0 预算补充(TCODE:CJ37)
"– KBR0 预算返回(TCODE:CJ38)
"
"总体规划
"– KSTP 总收入(TCODE:CJ40)
"– KSTR(仅项目 TCODE:CJ42)
"--------------------@斌将军--------------------
SELECT
pspnr,
posid,
objnr
FROM prps
INTO TABLE @DATA(lt_prps)
FOR ALL ENTRIES IN @lt_ysbc
WHERE posid = @lt_ysbc-posid. //WBS
IF lt_prps IS NOT INITIAL.
SORT lt_prps BY posid.
"参数 I_BUDGET_ACTIVITY 是业务交易,支持以下这些业务交易。
"原始预算
"– KBUD 预算修改(TCODE:CJ30/CJ32)
"– KBN0 预算补充(TCODE:CJ37)
"– KBR0 预算返回(TCODE:CJ38)
"
"总体规划
"– KSTP 总收入(TCODE:CJ40)
"– KSTR(仅项目 TCODE:CJ42)
LOOP AT lt_ysbc INTO ls_ysbc.
READ TABLE lt_prps INTO DATA(ls_prps) WITH KEY posid
= ls_ysbc-posid BINARY SEARCH.
IF sy-subrc EQ 0.
CLEAR:ls_bpak.
ls_bpak-e_objnr = ls_prps-objnr.
ls_bpak-twaer = 'CNY'.
ls_bpak-wert = ls_ysbc-wtges.
"ls_bpak-e_ges = 'X'.
"ls_bpak-e_versn = '001'.
"ls_bpak-e_wrttp = '01'.
APPEND ls_bpak TO lt_bpak.
ENDIF.
CLEAR:ls_ysbc.
ENDLOOP.
CALL FUNCTION 'KBPP_EXTERN_UPDATE_CO'
EXPORTING
i_budget_activity = 'KBN0'
i_budget_activ_sup_ret = ' '
i_delta_amounts = 'X'
i_rollup_data = 'X'
i_check_plan_data = 'X'
i_commit_all = 'Y'
IMPORTING
e_errors_found = lv_oax
TABLES
it_bpak = lt_bpak
it_return = lt_return
EXCEPTIONS
no_update = 1
OTHERS = 2.
IF lv_oax IS INITIAL.
e_return-type = 'S'.
e_return-message = '预算维护成功'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
e_return-type = 'E'.
e_return-message = '预算维护失败'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
ELSE.
e_return-type = 'E'.
e_return-message = '未维护对应的WBS'.
RETURN.
ENDIF.
"--------------------@斌将军--------------------
02
—
CJ38返回预算
1、预算返回
调用事务代码CJ38,输入要返回预算的WBS,输入要返回的金额,点击保存即可
2、代码示例
预算补充代码,调用函数:KBPP_EXTERN_UPDATE_CO
"--------------------@斌将军--------------------
CALL FUNCTION 'KBPP_EXTERN_UPDATE_CO'
EXPORTING
i_budget_activity = 'KBR0'
i_budget_activ_sup_ret = ' '
i_delta_amounts = 'X'
i_rollup_data = 'X'
i_check_plan_data = 'X'
i_commit_all = 'Y'
IMPORTING
e_errors_found = lv_oax
TABLES
it_bpak = lt_bpak
it_return = lt_return
EXCEPTIONS
no_update = 1
OTHERS = 2.
IF lv_oax IS INITIAL.
e_return-type = 'S'.
e_return-message = '预算减少成功'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
e_return-type = 'E'.
e_return-message = '预算减少失败'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
"--------------------@斌将军--------------------
03
—
CJ34转借预算
1、预算转借
输入事务代码CJ34,输入发出预算和接收预算的WBS单元,输入对应的金额,点击保存即可
2、代码示例
预算转借代码,调用函数:KBPP_EXTERN_UPDATE
"--------------------@斌将军--------------------
SELECT
pspnr,
posid,
objnr
FROM prps
INTO TABLE @DATA(lt_prps)
FOR ALL ENTRIES IN @lt_yszj
WHERE posid = @lt_yszj-outwbs
OR posid = @lt_yszj-inwbs.
IF lt_prps IS NOT INITIAL.
SORT lt_prps BY posid.
LOOP AT lt_yszj INTO ls_yszj.
CLEAR:ls_bpak.
READ TABLE lt_prps INTO DATA(ls_prps) WITH KEY
posid = ls_yszj-outwbs BINARY SEARCH.
IF sy-subrc EQ 0.
ls_bpak-s_objnr = ls_prps-objnr."借出
ENDIF.
READ TABLE lt_prps INTO ls_prps WITH KEY posid
= ls_yszj-inwbs BINARY SEARCH.
IF sy-subrc EQ 0.
ls_bpak-e_objnr = ls_prps-objnr."借入
ENDIF.
"ls_bpak-s_vorga = 'KBUS'.
"ls_bpak-e_vorga = 'KBUE'.
ls_bpak-bldat = ls_yszj-bldat."凭证日期
ls_bpak-s_ges = 'X'."总价值
ls_bpak-e_ges = 'X'."总价值
ls_bpak-s_profil = '800001'."预算参数文件
ls_bpak-e_profil = '800001'.
ls_bpak-wert = ls_yszj-wtges.
ls_bpak-twaer = 'CNY'.
APPEND ls_bpak TO lt_bpak.
CLEAR:ls_yszj.
ENDLOOP.
CALL FUNCTION 'KBPP_EXTERN_UPDATE'
EXPORTING
* IMP_CARRY_OVER = ' '
* IMP_CHECK = ' '
imp_commit = 'X'
imp_fcode = ' '
* IMP_SUPRESS_AVA_CHECK = ' '
imp_tcode = 'CJ34'
* IMP_UNAME = ' '
TABLES
imp_bpak = lt_bpak
* imp_bpak_per = lt_bpak_per
return = lt_return.
CLEAR:lv_message.
LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
lv_message = lv_message && ls_return-message.
CLEAR:ls_return.
ENDLOOP.
IF lv_message IS INITIAL.
e_return-type = 'S'.
e_return-message = '预算转借成功'.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
e_return-type = 'E'.
e_return-message = '预算转借失败:' && lv_message.
* CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
ELSE.
e_return-type = 'E'.
e_return-message = '未维护对应的WBS'.
RETURN.
ENDIF.
"--------------------@斌将军--------------------