日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要實現CJ30更新或者追加項目(WBS)的預算,可以使用如下函數:?KBPP_EXTERN_UPDATE_CO

?我現在要實現的是修改年度預算和增加總體的預算,如下步驟可以實現需要的功能:

1、????DATA:?lt_bpak?TYPE?STANDARD?TABLE?OF?bpak?WITH?HEADER?LINE.

????????DATA:lt_bpak_n?TYPE?STANDARD?TABLE?OF?bpak?WITH?HEADER?LINE.
?? ? ? ?DATA:?lt_retturn?TYPE?STANDARD?TABLE?OF?bapiret2?WITH?HEADER?LINE.

2、?LOOP?AT?gt_itab.
????CLEAR?l_wtjhr.
????DATA:?l_pspnr?LIKE?prps-pspnr.
????CALL?FUNCTION?'CONVERSION_EXIT_ABPSP_INPUT'
??????EXPORTING
????????input?????=?gt_itab-posid
??????IMPORTING
????????output????=?l_pspnr
??????EXCEPTIONS
????????not_found?=?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.

????SELECT?SINGLE?objnr?INTO?lt_bpak-e_objnr?FROM?prps?WHERE?pspnr?=?l_pspnr.
????IF?sy-subrc?EQ?0.
??????lt_bpak-e_vorga?=?'KBUD'.
??????lt_bpak-twaer?=?'CNY'.
??????lt_bpak-wert?=?gt_itab-wtjhr.
??????lt_bpak-e_vorga?=?'KBUD'.
?SELECT?wtjhr?INTO?l_wtjhr?FROM??bpja?
WHERE?objnr?=?lt_bpak-e_objnr?
AND?wrttp?=?'41'??
AND?vorga?=?'KBUD'?
AND?twaer?=?'CNY'?
AND?gjahr?NE?p_gjahr.

????????lt_bpak-wert?=?lt_bpak-wert?+?l_wtjhr.
????????CLEAR?l_wtjhr.
??????ENDSELECT.
??????APPEND?lt_bpak.

??????MOVE-CORRESPONDING?lt_bpak?TO?lt_bpak_n.
??????lt_bpak_n-e_gjahr?=?p_gjahr.
??????lt_bpak_n-wert?=?gt_itab-wtjhr.

??????APPEND?lt_bpak_n.
????ENDIF.
????CLEAR:?lt_bpak,lt_bpak_n.
??ENDLOOP.

**修改總體預算(一定要先修改總體的,不然增強年度預算的時候會檢查總體預算不夠,就會報錯

????CALL?FUNCTION?'KBPP_EXTERN_UPDATE_CO'
???EXPORTING
?????i_budget_activity????????????=?'KBUD'
*?????i_budget_activ_sup_ret???????=?'X'
*?????I_COMMIT_DATA????????????????=?'X'
?????i_delta_amounts??????????????=?''
?????i_rollup_data????????????????=?''
*????I_CHECK_PLAN_DATA????????????=?'X'
*????i_application????????????????=?'P'
????i_commit_all?????????????????=?'X'
*?IMPORTING
*???E_ERRORS_FOUND???????????????=
???TABLES
?????it_bpak??????????????????????=?lt_bpak[]
?????it_return????????????????????=?lt_retturn[]
??EXCEPTIONS
????no_update????????????????????=?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.

**修改年度預算

????REFRESH?lt_retturn.
??CALL?FUNCTION?'KBPP_EXTERN_UPDATE_CO'
???EXPORTING
?????i_budget_activity????????????=?'KBUD'
*?????i_budget_activ_sup_ret???????=?'X'
*?????I_COMMIT_DATA????????????????=?'X'
?????i_delta_amounts??????????????=?''
?????i_rollup_data????????????????=?''
*????I_CHECK_PLAN_DATA????????????=?'X'
????i_application????????????????=?'P'
????i_commit_all?????????????????=?'X'
*?IMPORTING
*???E_ERRORS_FOUND???????????????=
???TABLES
?????it_bpak??????????????????????=?lt_bpak_n[]
?????it_return????????????????????=?lt_retturn[]
??EXCEPTIONS
????no_update????????????????????=?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.

注意點:

1、一定要先修改頂層WBS,再一層一層往下修改,不然的話,檢查上層預算不夠,就會報錯

2、i_delta_amounts這個參數等于'X'的話,就是追加,等于'',就是修改

3、i_rollup_data這個參數等于'X'的話,就會自動往上層的WBS上加預算,等于'',就不會自動加

4、另外個人覺得這個函數寫的有一點點問題,函數里面有個???SORT?it_bpak?BY?e_ges?DESCENDING?.

??但是,當我們是修改總體預算的時候,E_GES都是'X',那么排序的時候就會亂掉,有可能會把底層的WBS放到上面,上層的WBS放到下面,這個時候再修改預算的時候,尤其是一個新的wbs,就會報錯說,下層WBS預算大于上層WBS預算,我找了很久參數,也沒實現這個問題,于是自己把標準程序改了一下,變成了?SORT?it_bpak?BY?e_ges?DESCENDING?E_OBJNR?ASCENDING.


總結

以上是生活随笔為你收集整理的BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。