news 2026/5/6 7:56:29

SAP-CPI-SF问题收集005 继承成本中心集成增强方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SAP-CPI-SF问题收集005 继承成本中心集成增强方案

导读

成本中心继承:在SAP组织架构中,部门和财务的成本中心是有关联关系,但是现实生活中,部门也存在大部门与小部门,所以有可能多个部门对于同一个成本中心,为减少成本中心与组织维护的工作量,系统提供一个成本中心继承的概念,用这个概念带来一个问题,就是数据不会存数据库,需要动态读取。今天分享的就是sap2ec的集成成本中心继承增强方案。

作者:vivi,来源:osinnovation

1 osinnovation

例如下图中的岗位,成本中心是继承上级部门的,所以本身自己这层是没有维护对应数据。SAP有继承的概念,因为成本中心在SAP里面是个财务核心概念,所以赋予它很多属性与功能,但是SF系统是个单纯的人力资源系统,成本中心只是一个辅助字段,系统就没有这么复杂的功能,当我们需要把数据传输到SF系统,就需要通过递归找到对于的数据。

在debug标称程序的时候,发现程序是有考虑到这要的情况,但是不知道为什么只是针对职务C类型,对岗位标准的集成代码没有处理,所以思考下,是不是可以参考标准程序复制下面的代码?其实下面这段代码的核心就是436行的函数,这个函数ppome的时候也会进入,所以就是一个帮我们递归找成本中心的函数。找到函数后面就是找到对应的的增强点。

SAP2EC的数据复制增强点主要是下面这个badi,这个badi里面有好几个子节点,分别处理对于的功能,我们需要的是黄色标记的,这里面是状态好的ec字段与sap字段的对于关系与值,所以我们只需要在这个地方修改数据即可。

这个增强有两个方法,一个是关于人事主数据,一个是关于组织主数据的,OM是组织相关的,EMP是人事的,注意这个地方是个循环调用的过程,因为标准集成的SAP2EC是一个表一个表的调用,这个不存在事物的概念,即使一张表出现问题,不影响其他,ec2sap则不然,只要一个错误,整个人的数据不会复制。

增强点只有输入变量,配置的模版,还有就是当前的模版数据,但是我们实际操作的时候,我们发现需要读取其他模版的数据,但是这个地方没有输入变量,所以觉得这个badi设计有点不合理。不过我们可以借用sap的隔山打牛的方法获取变量数据。

比如下图中的我需要读取内表0000的数据,29行就是读取P0000内表的数据,这要即使badi的接口没传入变量的数据,可以借用这个方法解决此问题。

METHOD if_ecpao_erp_emp_data_update~modify_om_object_data. DATA: ls_om_data LIKE LINE OF ct_om_object_data. DATA: lt_costcenters TYPE TABLE OF rhom_costcenters, ls_costcenter TYPE rhom_costcenters, lt_message TYPE TABLE OF bapiret2. data ls_field type ECPAO_S_ECEE_MAP_EMP_DATA. data T_OBJID TYPE HROBJID. LOOP AT ct_om_object_data INTO ls_om_data. IF iv_template_id = if_ecpao_data_constants=>gc_odata_om_department AND ls_om_data-ec_field_id = 'cust_Company' AND iv_otype = 'O'. ls_om_data-value = '1000'. MODIFY ct_om_object_data FROM ls_om_data TRANSPORTING value. ELSEIF iv_template_id = if_ecpao_data_constants=>gc_odata_om_position AND ls_om_data-ec_field_id = 'costCenter' AND iv_otype = 'S'. IF ls_om_data-value IS INITIAL. TRY . CLEAR T_OBJID. ls_field = ct_om_object_data[ ec_field_id = 'code' ]. T_OBJID = CONV #( ls_field-value ). CATCH cx_sy_itab_line_not_found . " MESSAGE '未找到数据' TYPE 'E' . ENDTRY. IF ls_field-value IS NOT INITIAL. CALL FUNCTION 'RH_READ_COSTCENTER_OF_OBJECT' EXPORTING plvar = '01' otype = 'S' objid = T_OBJID keydate = ls_om_data-begda TABLES costcenters = lt_costcenters messages = lt_message. ENDIF. READ TABLE lt_costcenters INTO ls_costcenter INDEX 1. IF ls_costcenter-costcenter IS NOT INITIAL. "CONCATENATE ls_costcenter-contrlarea ls_costcenter-costcenter INTO <fs_objc_data>-value. SAP Note 3449637 - MWCK097658 ls_om_data-value+0(4) = ls_costcenter-contrlarea. ls_om_data-value+4(*) = ls_costcenter-costcenter. ENDIF. MODIFY ct_om_object_data FROM ls_om_data TRANSPORTING value. ENDIF. ELSEIF iv_template_id = if_ecpao_data_constants=>gc_odata_om_position AND ls_om_data-ec_field_id = 'company' AND iv_otype = 'S'. ls_om_data-value = '1000'. MODIFY ct_om_object_data FROM ls_om_data TRANSPORTING value. ENDIF. ENDLOOP. ENDMETHOD.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 7:54:27

ai赋能开发:让快马智能诊断与解决anaconda环境依赖冲突,告别配置噩梦

作为一名经常和Python环境打交道的开发者&#xff0c;我深刻理解Anaconda环境配置的痛点。特别是当项目依赖复杂时&#xff0c;各种包版本冲突简直让人抓狂。最近尝试用AI辅助解决这个问题&#xff0c;发现效果出奇地好&#xff0c;今天就把这套方法分享给大家。 环境诊断的智能…

作者头像 李华
网站建设 2026/5/6 7:50:31

3分钟解决Word参考文献格式难题:APA第7版终极安装指南

3分钟解决Word参考文献格式难题&#xff1a;APA第7版终极安装指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为学术论文的APA格式烦恼吗&…

作者头像 李华
网站建设 2026/5/6 7:49:38

Taotoken的模型广场如何帮助开发者快速选型与对比不同模型能力

Taotoken的模型广场如何帮助开发者快速选型与对比不同模型能力 1. 模型广场的核心功能 Taotoken模型广场为开发者提供了集中查看平台所集成大模型的能力。该界面按照模型厂商、类型和版本进行分类展示&#xff0c;每个模型卡片包含基础信息模块。开发者可以快速浏览模型名称、…

作者头像 李华