当前位置: 首页 > news >正文

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.
http://www.jsqmd.com/news/762343/

相关文章:

  • TypeScript-Babel-Starter 类型检查机制:深入理解 tsc --noEmit 的核心作用
  • 从账单追溯功能看大模型API使用的成本明细
  • SillyTavern桌面版终极指南:三步打造专业AI聊天应用
  • 云原生应用交付利器:Open Component Model (OCM) 核心原理与实践指南
  • GHelper完整指南:轻松掌控你的华硕笔记本性能
  • How to debug the employee master data replication from SAP SuccessFactors Employee Central to ECP
  • 13 - 别再按席位收费了!AI商业模式的“电力革命”与劳动力重构
  • 用RAX3000M路由器搭建Maven私服,给团队共享自研Jar包(附FTP+HTTP配置)
  • 59. YOLOv5原理+实战总结|行人检测工程化落地指南
  • 别再死记硬背了!用Python+Logisim仿真搞定组合逻辑电路(附期末真题实战)
  • Arm Cortex-A710处理器关键错误分析与解决方案
  • JX3Toy终极指南:剑网3智能战斗助手如何提升你的游戏体验
  • 终极指南:免费解锁Windows远程桌面多用户并发连接的完整解决方案
  • 从《我的世界》联机到远程桌面:手把手教你用端口转发搞定一切
  • 零基础Python入门:用快马平台5分钟搭建你的第一个可运行程序原型
  • Windows窗口置顶神器:轻松掌握AlwaysOnTop高效工作法
  • 开源MCP服务器实现AI对话成本优化:文本压缩技术解析与实战
  • VGG-T3三维重建技术:高精度离线建模实践指南
  • SmartSnap自验证智能体框架解析与应用实践
  • 常用办公终端配置信息 - yi
  • 实战指南:基于快马平台生成开箱即用的影刀商城全栈项目源码
  • ESP32-C5开发板双频WiFi 6与多协议物联网开发实战
  • 开源LLM应用监控平台llm.report:从部署到实战的全链路指南
  • 手把手教你用AD9361+Zynq FPGA实现2ASK无线收发(含MATLAB生成正弦表)
  • AI智能体研究线程管理器:轻量级状态管理与自动化集成指南
  • 实测翻车!XDMA读写速度不达标?用Windows设备管理器一招定位是PCIE降级还是代码问题
  • 别再傻傻调延时了!用STM32F103的PWM+DMA驱动WS2812B,效果稳如老狗
  • Uniapp应用上架微信开放平台,你的“应用官网”和“应用截图”真的过关了吗?
  • 如何在3分钟内零代码实现抖音直播弹幕数据采集?DouyinLiveWebFetcher完整指南
  • 维基百科知识质量评估框架解析与实践