学习内容描述:利用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'EXPORTINGcontrollingarea = <fs_data>-fkber                       "控制范围language        = ls_languageTABLEScostcenterlist  = lt_costcenterlistreturn          = lt_return.IF lt_return IS INITIAL.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = '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 错误。
收获与总结:
修改成本中心的冻结字段赋值需要注意的三种情况:
- 冻结 "X" ;
- 解除冻结 “!”(英文的!);
- 不做处理 “ ”。
反思与计划:下一篇写创建利润中心。
学习时间:20240720
学习天数:3年20天