示例,转载至以下地址:
http://blog.csdn.net/yf_sap/archive/2009/07/29/4390435.aspx

要实现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.

转载于:https://www.cnblogs.com/zhumk/archive/2011/02/18/1958087.html

BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40 第二部分相关推荐

  1. BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40

    要实现CJ30更新或者追加项目(WBS)的预算,可以使用如下函数: KBPP_EXTERN_UPDATE_CO 我现在要实现的是修改年度预算和增加总体的预算,如下步骤可以实现需要的功能: 1.     ...

  2. SAP ABAP 业务对象 BUS6041 AssetSubCostRev 后续资产成本和收入 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS6041 AssetSubCostRev 后续资产成本和收入 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS6041 AssetSubC ...

  3. SAP ABAP 业务对象 BUS6038 AssetDownPayment 资产:预付款 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS6038 AssetDownPayment 资产:预付款 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS6038 AssetDownPa ...

  4. SAP ABAP 业务对象 BUS2044 CostEstimate 成本估价 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS2044 CostEstimate 成本估价 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS2044 CostEstimate 成本估价 ...

  5. SAP ABAP 业务对象 BUS1112 CostCenterGroup 成本中心组 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS1112 CostCenterGroup 成本中心组 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS1112 CostCenterGro ...

  6. SAP ABAP 业务对象 BUS6021 AcctngSalesOrder 会计销售订单 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS6021 AcctngSalesOrder 会计销售订单 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS6021 AcctngSales ...

  7. SAP ABAP 业务对象 BUS6022 AcctngSalesQuotation 会计销售配额 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS6022 AcctngSalesQuotation 会计销售配额 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS6022 AcctngS ...

  8. SAP ABAP 业务对象 BUS6043 AssetValueAdjust 资产折旧 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS6043 AssetValueAdjust 资产折旧 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS6043 AssetValueAdj ...

  9. SAP ABAP 业务对象 BUS2080A ServiceNotifBAPIs BAPIs 服务通知 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS2080A ServiceNotifBAPIs BAPIs 服务通知 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS2080A Serv ...

最新文章

  1. 衡量机器学习模型的三大指标:准确率、精度和召回率
  2. STM32f103 can的两个接收fifo使用方法
  3. oracle 分割取值,oracle中的分割函数(split效果)
  4. cobar mysql cluster_Cobar使用文档(可用作MySQL大型集群解决方案)
  5. 二级C选择知识点(部分)
  6. jmeter html 乱码,JMeter3.0图形化HTML报告中文乱码问题处理
  7. c++ 二维数组_二维数组的声明2019_04_18
  8. 【编程练习】复习一下树的遍历
  9. 多重共线性的解决方法之——岭回归与LASSO
  10. 自媒体各大平台收益对比_自媒体推广平台都有哪些?
  11. Eclipse 安装 yml 编辑器插件
  12. 计算机外联管理办法,外联部管理制度
  13. win7计算机操作知识,WIN7系统电脑的常识操作
  14. Web3j使用教程(1)
  15. 微服务项目:尚融宝(42)(核心业务流程:借款额度审批(2))
  16. web前端面试题— 简答题
  17. 有什么PDF阅读器?告诉你三个好用的PDF阅读软件
  18. android_day01
  19. “求同”不是最终目标,英特尔致力打造有“差异”的精彩
  20. b站网页版没有html播放,网页b站能小窗口播放吗?怎么播放?最新版本bilibili小窗口播放器...

热门文章

  1. Android开发笔记(六十四)网页加载与JS调用
  2. Gradle2.0用户指南翻译——第二章. 概述
  3. ubuntu下lvs负载均衡dr模型shell脚本
  4. 七种Spring事务传播特性
  5. 队列-C语言-链表的实现方式
  6. linux windows爆音,如何解决 Windows 服务器远程桌面的爆音问题
  7. Spring-beans-FactoryBean
  8. 计算机系统-电路设计08-T触发器内部电路实现
  9. 小程序textarea的行间距_微信小程序组件:textarea多行输入框解读和分析
  10. 2.4_double-ended_queue_双向队列