创建成本中心和修改成本中心

T-CODE:KS01

输入控制范围

创建成本中心和修改成本中心_第1张图片

输入有效期起始日期

创建成本中心和修改成本中心_第2张图片

填入必填项

创建成本中心和修改成本中心_第3张图片

点击保存。

修改成本中心, T-CODE:KS02

 

BAPI_COSTCENTER_CREATEMULTIPLE:创建成本中心

BAPI_COSTCENTER_CHANGEMULTIPLE:修改成本中心

 

DATALT_COSTCENTERLIST TYPE TABLE OF  BAPI0012_CCINPUTLIST,
        LS_COSTCENTERLIST TYPE BAPI0012_CCINPUTLIST.
  DATALS_LANGUAGE TYPE BAPI0015_10.
  DATALS_OUT LIKE LINE OF ET_OUT.
  DATALV_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.

你可能感兴趣的:(SAP,BAPI)