PSCJ37CJ38CJ34增加返回转借预算

作者:斌将军 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, 开发, 数据工程
PSCJ37CJ38CJ34增加返回转借预算 - 封面图
PSCJ37CJ38CJ34增加返回转借预算 - 封面图

** 目录 **

CJ37增加预算 CJ38返回预算

CJ34转借预算

CJ37增加预算

** 1、补充预算 **

调用事务代码CJ37,输入要增加的WBS要素的预算,点击保存即可

PSCJ37CJ38CJ34增加返回转借预算 - 封面图
PSCJ37CJ38CJ34增加返回转借预算 - 封面图

** 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,输入要返回的金额,点击保存即可

PSCJ37CJ38CJ34增加返回转借预算 - 封面图
PSCJ37CJ38CJ34增加返回转借预算 - 封面图

** 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单元,输入对应的金额,点击保存即可

PSCJ37CJ38CJ34增加返回转借预算 - 封面图
PSCJ37CJ38CJ34增加返回转借预算 - 封面图

** 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."--------------------@斌将军--------------------

斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「PSCJ37CJ38CJ34增加返回转借预算.md」整理生成,仅用于内部技术分享与学习交流。