ABAP:创建/修改成本中心

学习内容描述:利用SAP的标准BAPI创建/修改成本中心

业务参考文档:【SAP-CO】成本中心的创建、变更与删除_sap ks01 函数-CSDN博客


重点知识:标准BAPI的调用

1、创建:BAPI_COSTCENTER_CREATEMULTIPLE

  DATA: lt_costcenterlist TYPE TABLE OF  bapi0012_ccinputlist,
        ls_costcenterlist TYPE bapi0012_ccinputlist.
  DATA: ls_language TYPE bapi0015_10.

  DATA: lt_return         TYPE STANDARD TABLE OF bapiret2.
  DATA: ls_return         TYPE bapiret2.    

    ls_language-langu = sy-langu.                                      "语言代码
    ls_costcenterlist-costcenter             = <fs_data>-kostl.       "成本中心
    ls_costcenterlist-valid_from             = <fs_data>-startdate.  "有效期起始日期
    ls_costcenterlist-valid_to               = <fs_data>-enddate.    "有效期截至日期
    ls_costcenterlist-name                   = <fs_data>-name.       "一般姓名
    ls_costcenterlist-descript               = <fs_data>-describe.   "描述
*  ls_costcenterlist-person_in_charge_user  = <fs_data>-verak_user.    "负责的用户
    ls_costcenterlist-person_in_charge       = <fs_data>-verapc.     "负责人
    ls_costcenterlist-costcenter_type        = <fs_data>-type.       "成本中心类型
    ls_costcenterlist-costctr_hier_grp       = <fs_data>-khinr.      "层次结构范围
    ls_costcenterlist-comp_code              = <fs_data>-bukrs.    "公司代码
    ls_costcenterlist-currency               = <fs_data>-waers.      "货币
    ls_costcenterlist-profit_ctr             = <fs_data>-prctr.      "利润中心
    ls_costcenterlist-func_area_long         = <fs_data>-fkber.  "功能范围
    ls_costcenterlist-lock_ind_actual_primary_costs         = <fs_data>-bkzkp.  "实际初级成本的冻结标志
    ls_costcenterlist-lock_ind_plan_primary_costs         = <fs_data>-pkzkp.  "计划初级成本冻结标志
    ls_costcenterlist-lock_ind_act_secondary_costs         = <fs_data>-bkzks.  "实际次级成本的冻结标志
    ls_costcenterlist-lock_ind_plan_secondary_costs         = <fs_data>-pkzks.  "计划次级成本冻结标志
    ls_costcenterlist-lock_ind_actual_revenues         = <fs_data>-bkzer.  "实际收入登记的冻结标志
    ls_costcenterlist-lock_ind_plan_revenues         = <fs_data>-pkzer.  "计划收入冻结标志

    APPEND ls_costcenterlist TO lt_costcenterlist.

    CALL FUNCTION 'BAPI_COSTCENTER_CREATEMULTIPLE'
      EXPORTING
        controllingarea = <fs_data>-fkber                       "控制范围
        language        = ls_language
      TABLES
        costcenterlist  = lt_costcenterlist
        return          = lt_return.

    IF lt_return IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
      ls_out-id  = <fs_data>-kostl.      		 " 成本中心
      ls_out-msg =  '成本中心创建成功'.  	 "消息
      ls_out-status = '1'.  				"状态 0失败,1成功
      APPEND ls_out TO lt_out.
      CLEAR ls_out.
    ELSE.
      LOOP AT lt_return INTO ls_return.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ls_out-id   = <fs_data>-kostl .     "成本中心
        ls_out-msg = ls_out-msg && '//' && ls_return-message.  "消息
        ls_out-status = '0'.                 "状态 0失败,1成功
      ENDLOOP.
      APPEND ls_out TO lt_out.
      CLEAR ls_out.
    ENDIF.

2、修改:BAPI_COSTCENTER_CHANGEMULTIPLE

修改和创建逻辑大体相同,不过有个巨坑,就是“实际初级成本的冻结标志”、“计划初级成本冻结标志”、“实际次级成本的冻结标志”、“计划次级成本冻结标志”、“实际收入登记的冻结标志”、“计划收入冻结标志”这6个字段,在修改时,传值要注意:解除冻结标识要传“!”,传空 不做任何处理,传“X”是冻结。


难点知识:标准报错的解释。

        报错信息:等级被等级而不能更改。(吐槽:每个字都认识,连起来就是不知道说的啥)

        原因:层次结构范围 khinr 错误。


收获与总结:

        修改成本中心的冻结字段赋值需要注意的三种情况:

  1. 冻结        "X" ;
  2. 解除冻结  “!”(英文的!);
  3. 不做处理  “ ”。

反思与计划:下一篇写创建利润中心。


学习时间:20240720


学习天数:3年20天

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值