创建成本中心和修改成本中心
T-CODE:KS01
输入控制范围
输入有效期起始日期
填入必填项
点击保存。
修改成本中心, T-CODE:KS02
BAPI_COSTCENTER_CREATEMULTIPLE:创建成本中心
BAPI_COSTCENTER_CHANGEMULTIPLE:修改成本中心
DATA: LT_COSTCENTERLIST TYPE TABLE OF BAPI0012_CCINPUTLIST,
LS_COSTCENTERLIST TYPE BAPI0012_CCINPUTLIST.
DATA: LS_LANGUAGE TYPE BAPI0015_10.
DATA: LS_OUT LIKE LINE OF ET_OUT.
DATA: LV_FLAG TYPE C.
****判断成本中心是否存在
SELECT COUNT(*) FROM CSKS WHERE KOKRS = '1000' AND KOSTL = I_KOSTL AND DATAB = I_DATAB.
IF SY-SUBRC <> 0.
**---------当成本中心不存在时,创建成本中心
LS_LANGUAGE-LANGU = SY-LANGU. "语言代码
LS_COSTCENTERLIST-COSTCENTER = I_KOSTL. "成本中心
LS_COSTCENTERLIST-VALID_FROM = I_DATAB. "有效期起始日期
LS_COSTCENTERLIST-VALID_TO = '99991231'. "有效期截至日期
LS_COSTCENTERLIST-PERSON_IN_CHARGE = 'YLB'. "负责人
LS_COSTCENTERLIST-COSTCENTER_TYPE = 'L'. "成本中心类型
LS_COSTCENTERLIST-COSTCTR_HIER_GRP = '1000'."层次结构范围
LS_COSTCENTERLIST-COMP_CODE = '1000'. "公司代码
LS_COSTCENTERLIST-CURRENCY = 'CNY'. "货币
LS_COSTCENTERLIST-NAME = I_KTEXT. "描述
APPEND LS_COSTCENTERLIST TO LT_COSTCENTERLIST.
CALL FUNCTION 'BAPI_COSTCENTER_CREATEMULTIPLE'
EXPORTING
CONTROLLINGAREA = '1000' "控制范围
* TESTRUN = ' '
* MASTER_DATA_INACTIVE = ' '
LANGUAGE = LS_LANGUAGE
TABLES
COSTCENTERLIST = LT_COSTCENTERLIST
RETURN = ET_OUT
* EXTENSIONIN =
* EXTENSIONOUT =
.
CLEAR LV_FLAG.
LOOP AT ET_OUT INTO LS_OUT .
IF LS_OUT-TYPE = 'E' OR LS_OUT-TYPE = 'A'.
LV_FLAG = 'X'.
ENDIF.
E_MESS = LS_OUT-MESSAGE && ';' && E_MESS .
CLEAR LS_OUT.
ENDLOOP.
ELSE.
**---------当成本中心存在时,修改成本中心
LS_LANGUAGE-LANGU = SY-LANGU. "语言代码
LS_COSTCENTERLIST-COSTCENTER = I_KOSTL. "成本中心
LS_COSTCENTERLIST-VALID_FROM = I_DATAB. "有效期起始日期
LS_COSTCENTERLIST-VALID_TO = '99991231'. "有效期截至日期
LS_COSTCENTERLIST-PERSON_IN_CHARGE = 'YLB'. "负责人
LS_COSTCENTERLIST-COSTCENTER_TYPE = 'L'. "成本中心类型
LS_COSTCENTERLIST-COSTCTR_HIER_GRP = '1000'. "层次结构范围
LS_COSTCENTERLIST-COMP_CODE = '1000'. "公司代码
LS_COSTCENTERLIST-CURRENCY = 'CNY'. "货币
LS_COSTCENTERLIST-NAME = I_KTEXT. "描述
LS_COSTCENTERLIST-LOCK_IND_ACTUAL_PRIMARY_COSTS = I_BKZKP. "实际初级成本的冻结标志
APPEND LS_COSTCENTERLIST TO LT_COSTCENTERLIST.
CALL FUNCTION 'BAPI_COSTCENTER_CHANGEMULTIPLE'
EXPORTING
CONTROLLINGAREA = '1000' "控制范围
* TESTRUN = ' '
* MASTER_DATA_INACTIVE = ' '
LANGUAGE = LS_LANGUAGE
* RESET_FILLED_FIELDS = ' '
TABLES
COSTCENTERLIST = LT_COSTCENTERLIST
RETURN = ET_OUT
* EXTENSIONIN =
* EXTENSIONOUT =
.
"BAPI_COSTCENTER_CHANGEMULTIPLE:当执行成功时不会返回消息
CLEAR LV_FLAG.
LOOP AT ET_OUT INTO LS_OUT WHERE TYPE = 'E' OR TYPE = 'A'.
LV_FLAG = 'X'.
E_MESS = LS_OUT-MESSAGE && ' ' && E_MESS .
CLEAR LS_OUT.
ENDLOOP.
IF LV_FLAG <> 'X'.
LS_OUT-TYPE = 'S'.
LS_OUT-MESSAGE = '修改成功'.
APPEND LS_OUT TO ET_OUT.
E_MESS = '修改成功'.
ENDIF.
ENDIF.
IF LV_FLAG = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
E_STATUS = 'N'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
E_STATUS = 'Y'.
ENDIF.