PS CJ37/CJ38/CJ34 增加/返回/转借预算

目录

CJ37增加预算

CJ38返回预算

CJ34转借预算


01

CJ37增加预算

1、补充预算

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

bd86dfdae59541319611e3a8ba4037aa.png

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

80c9bc36b48d69179aa0fdbdc323d0fb.png

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

8071ac927e94902d11de59b373cecb5a.png

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.
"--------------------@斌将军--------------------
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值