BAPI KBPP EXTERN UPDATE CO TCODE CJ30/CJ40

news/2024/7/3 1:05:50
               

要实现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://blog.csdn.net/jiangjunshow


http://www.niftyadmin.cn/n/3653863.html

相关文章

使用NetBeans IDE 5.5创建向导控制台

本教程将向您展示如何使用NetBeans IDE 5.5 GUI Builder创建一个向导式控制台。在本教程中&#xff0c;我们将创建一个示例任务调度向导。阅读完本文之后&#xff0c;您应该能够很容易地建立简单或复杂的向导式UI组件。需要时间&#xff1a;20&#xff0d;30分钟先决条件l …

SAP 物料分类账常用表

MLCD 物料帐透明表CKMLCR 物料分类帐&#xff1a;期间汇总记录值CKMLPR 物料价格MLIT Material LedgerDocument: Items 含有物料号和成本估算号再分享一下我老师大神的人工智能教程吧。零基础&#xff01;通俗易懂&#xff01;风趣幽默&#xff01;还带黄段子&…

ERROR 1205 HY000 Lock wait timeout exceeded try restarti

前言&#xff1a;朋友咨询我说执行简单的update语句失效&#xff0c;症状如下&#xff1a;mysql> update order_info set province_id15 ,city_id 1667 where order_from10 and order_out_sn1407261241xxxx;ERROR 1205 (HY000): Lock wait timeout exceeded; try restart…

推荐引擎:从搜索到发现

搜索是你明确地知道自己要找什么东西时所做的事情&#xff0c;而发现是你并不明确地知道一些好东西存于世上的时候&#xff0c;这些东西主动找到了你。 以“发现”为主要功能的网站正如雨后春笋般在互联网上崭露头角。许多公司推出了能够帮助消费者找到新网站、新唱片或者新朋友…

推荐引擎机制的前提、基本方式和典型应用

推荐机制的两种方式&#xff1a;1、基于用户行为&#xff1b;2、基于产品基因&#xff1b;推荐机制建立的前提&#xff1a;1、用户行为数据记录&#xff1b;2、产品特性基因构成&#xff1b; 1、基于用户行为&#xff1a;案例amazon&#xff08;亚马逊&#xff09; 亚马逊的推荐…

MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)

前言&#xff1a; 关于多级别菜单栏或者权限系统中部门上下级的树形遍历&#xff0c;oracle中有connect by来实现&#xff0c;mysql没有这样的便捷途径&#xff0c;所以MySQL遍历数据表是我们经常会遇到的头痛问题&#xff0c;下面通过存储过程来实现。1&#xff0c;建立…

网站推荐机制中的艺术、科学与商务问题

网站推荐机制是电子商务或内容网站的核心功能之一。例如你在一个网站买了一本书后&#xff0c;网站会推荐其他你可能会感兴趣的书。这被认为是亚马逊等电子商务巨头成功的关键。本文对几个出色的推荐系统进行了较透彻的分析。2006年10月&#xff0c;Netflix搞了一次不寻常的有奖…

MySQL事务控制语句(学习笔记)

MySQL事务控制语句 在mysql命令行的默认下&#xff0c;事务都是自动提交的&#xff0c;sql语句提交后马上会执行commit操作。因此开启一个事务必须使用begin&#xff0c;start transaction&#xff0c;或者执行 set autocommit0; 可以使用的事务控制语句start transcti…