** 目录 **
CJ37增加预算 CJ38返回预算
CJ34转借预算
—
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."--------------------@斌将军--------------------
—
CJ38返回预算
** 1、预算返回 **
调用事务代码CJ38,输入要返回预算的WBS,输入要返回的金额,点击保存即可
** 2、代码示例 **
预算补充代码,调用函数: KB PP_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."--------------------@斌将军--------------------—
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."--------------------@斌将军--------------------