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

T-CODE:KS01

输入控制范围

输入有效期起始日期

填入必填项

点击保存。

修改成本中心, 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.

<think>好的,我现在需要帮助用户解答如何在SAP中查看成本中心修改日志表的问题。首先,我要理清用户的需求。用户提到“成本中心修改日志表”,这可能涉及SAP中成本中心主数据的变更记录。根据已有的引用内容,特别是引用[2]提到SAP HCM中Z表的日志修改记录,以及大部分配置表有日志功能,但并非所有。这提示我需要确认成本中心主数据表是否启用了日志功能。 接下来,我需要回忆SAP中日志功能的一般配置方法。通常,表日志需要在SE13(技术设置)中启用。对于标准表如成本中心相关的表,比如CSKS(成本中心主数据表)或相关配置表,需要检查其是否开启了日志记录。如果表没有启用日志,用户可能无法直接查询修改记录。 然后,用户可能需要通过事务代码SE16或SE16N来查看表日志。例如,使用SE16N输入表名,并可能结合变更文档对象(如BAPI_COSTCENTER)来查看变更记录。此外,可能需要使用SCU3事务代码,这是SAP提供的标准工具,用于显示表变更记录,根据日期、用户等筛选条件。 另外,引用[1]提到通过ALV程序让用户自行查询修改记录,这可能涉及开发自定义报表,如果标准功能无法满足需求。但用户可能更希望使用标准方法,因此需要优先考虑标准事务代码如SCU3或SE16N结合日志表。 需要注意的是,成本中心修改可能涉及多个相关表的变更,比如CSKS(成本中心主数据)、CSKA(成本要素会计)等,需要确认这些表是否已启用日志。如果未启用,可能需要先激活日志,但这可能需要系统配置权限。 总结步骤可能包括:1. 确认相关表是否启用日志;2. 使用SCU3或SE16N查询日志;3. 如无日志,考虑配置或开发自定义报表。同时,提醒用户权限问题,以及可能需要基础配置调整。</think>在SAP系统中查询成本中心修改日志表的方法可通过以下步骤实现: ### 一、确认表日志功能是否启用 1. **检查成本中心相关表的日志配置** - 成本中心主数据存储在表$CSKS$(成本中心主表)$CSKA$(成本要素会计表)中 - 使用事务码$SE13$输入表名$CSKS$,查看"Technical Settings"中是否勾选"Log Data Changes"[^2] - 若未启用日志,需联系BASIS团队激活表的日志记录功能 ### 二、使用标准工具查询修改记录 2. **通过SCU3事务码查询** ``` SCU3 → 输入表名(如CSKS)→ 设置时间范围/用户 → 执行 ``` - 可查看字段级修改记录,包含旧值/新值、修改时间、操作者等信息[^2] 3. **通过SE16N直接查询日志表** - 成本中心修改日志存储在表$CDHDR$(抬头表)$CDPOS$(行项目表) ```sql SELECT * FROM CDHDR WHERE OBJECTCLAS = 'KOSTL' AND OBJECTID = '[成本中心编号]' ``` - 关联$CDPOS$表可获取详细字段变更记录[^4] ### 三、特殊场景处理 4. **配置类修改追踪** - 成本中心分配参数文件(如$OKB9$)的修改 - 使用事务码$SM30$维护时,系统会自动生成$TCODE$字段记录[^3] 5. **增强型查询(需要开发支持)** - 可参考引用[1]创建ALV报表程序,将$CDHDR/CDPOS$数据可视化展示 - 示例SQL逻辑: ```abap SELECT h~objectid h~udate h~utime h~username p~fname p~value_new p~value_old INTO TABLE lt_log FROM cdhdr AS h JOIN cdpos AS p ON h~changenr = p~changenr WHERE h~objectclas = 'KOSTL' AND h~objectid IN s_kostl ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值