3.在测试转账业务或详述订单处理过程程中经常使用到事务,那么什么是事务? 事务有哪些特性,主要的作用是什么?

1) FI相关的重点设计:FI相对各家公司都比较规范和一致流程概念较弱。

会计科目表:要根据用户现行的科目体系配合SAP必要的要求,比如GR/IR、各种差异与调整科目等设计絀符合未来需求的科目体系,并且严格定义每个科目的使用规范和核算范围

备 选科目和合并科目要根据需要进行设计,如果要在本地会計准则之外出具符合其他会计准则的报表可以通过备选科目并借助特殊用途分类账实现。如果要使用合并 报表功能可以考虑建立合并科目表。另外会计科目是分两个层次维护的(科目表/公司代码)相应分工也要明确,尤其是集团性公司

应收与应 付流程:包括收款与清账流程、付款与清账流程、未走后勤模块而由财务直接处理的零星***记账流程以及各种对账流程。比如清账是采用部分还是剩余法需偠确 定因为可能会影响对账报表的取数规则、应收票据的背书、贴现等特殊处理流程。另外员工作为供应商管理其借款与报销流程也昰重要流程。同时结合SAP的 特性要确定要用到哪些特别总账标志,实现科目统驭管理

固定资产管理流程:要考虑固定资产主数据维护、資产购置流程(走FI直接购置还是 MM采购流程购置)、在建工程资本化流程。资本性支出预算管理(用内部订单还是WBS实现预算管控)以及预算變更与调整流程固定资产日常交易都是通过业 务类型实现的,可结合客户实际单独建立符合其账务处理要求的业务类型另外折旧方法嘚设计是最复杂也是最重要的内容,要设计折旧表、折旧范围、折旧码以及 定义每种业务处理时总账科目

2) CO相关的重点设计:CO的设计要栲虑公司产品或服务特性以及MES系统实际情况。

利润中心与成本中心:如果管理上需要单独分析某一业务单元盈利情况可以考虑利润中心汾开建立,但不是一定要通过利润中心实现也可通过其他维度。按利润中心出具损益表是相对比较简单但要按利润中心出具资产负债表就比较繁琐了。

成本中心设置如果是管理类的,可以参考公司组织架构进行设计但如果是生产类的,就要考虑成本核算精细化程度鉯及SAP每个成本中心只能定义6个作业类型的功能限制以及PP工作中心设计情况综合考虑

分配与分摊循环:发生的间接费用,是需要按费用性質与受益情况在不同成本中心间进行分配最后通过成本中心提供作业,由生产订单来吸收承担需要设计分配顺序以及分配标准等因素。

标准成本制定的流程:对于新产品其标准成本是如何确定的,要有明确的流程包括BOM与Routing相关量化指标如何提供产品标准成本准确性直接决定了成本差异大小,从而影响实际成本准确度

CO月结流程中除了设计标准的操作和步骤,更重要的是确定月结执行前check list因为CO数据都是來源于后勤与财务,对业务数据检查是重点而CO本身的操作流程倒不是最重要的。

3) MM相关的重点设计:MM设计要考虑CO与SD PP的相关需求

物料编碼与库位设置:尤其是物料编码是最核心最重要的,要明确定义哪些物资是要库存管理哪些是直接费用化管理。库存管理的一定要编码建立主数据费用化的就不需要。

采购处理:采购申请是在系统内还是系统外如何审批。定义不同业务(原料、资产、外包服务)采用哬种采购处理流程和订单类型采购收货数量容差控制等问题。

库房管理:库房的收货和发货涉及不同类型的处理除了定义系统流程,哽重要的是建立库房管理制度以及相应的流转表单确保帐实相符是最核心原则。

***校验流程:确定***校验的岗位要符合职务不相容原则确定***价格与数量的容差控制。

4) SD相关的重点设计:要考虑税务要求、成本与利润分析的相关要求

客 户与信贷管理:客户主数據的分类规则是非常重要的,在设计时首先确定用户对客户有哪些分析维度的要求然后确定如何规划分类,因为有些维度并不一定要通過 客户分类反应而是可以在主数据中通过特性字段满足的。另外信贷管理尤其是集团公司,是集中信贷管理还是分散管理涉及了信鼡控制范围的设计,以及信贷 冻结与释放的流程与审批表单、信用控制点的确定(订单时/发货时)对于集团企业,客户还要考虑如何避免重复建立的问题

价格管理:分析现 行的价格确定是按客户+产品,还是有其他更灵活的定价维度以及报价是含税还是不含税报价。对於单价极低的产品考虑按一定批量数作为价格基数避免价格小 数位数不足。尤其是代工服务企业的报价非常灵活在确定好定价维度后,还要考虑这些维度的信息在订单中如何取得

订单与发货和开票:销售订 单是整个销售业务的源头凭证,决定了客户、产品、数量、价格等重要信息对于按单生产(MTO)或库存式生产(MTS)企业,其销售订单管理流程也是有差 别的销售开票要符合税务要求,包括与金税的接口逻辑***的红冲退回、折让处理对于月末已发货未开票的产品如何处理(虚拟发货取消/寄售方式处理等)等 特殊情况是关键。

5) PM相关的重点:设備维护功能要考虑设备与FI固定资产的关联的实现设备功能位置与维修工作中心设定。预防性维修与日常维修的处理流程维修申请单记錄的内容与状态管理,以及维修订单如何收集各种维修费用维修订单领料流程等。

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

点击上方“程序员小灰”,选择“置顶公众号”

有趣有内涵的文章第一时间送达!

————————————

在一系列微服务系统当中假如不存在分布式事务,会发生什么呢让我们以互联网中常用的交易业务为例子:

上图中包含了库存和订单两个独立的微服务,每个微服务维护了自己的数据库在交易系统的业务逻辑中,一个商品在下单之前需要先調用库存服务进行扣除库存,再调用订单服务创建订单记录。

正常情况下两个数据库各自更新成功,两边数据维持着一致性

但是,在非正常情况下有可能库存的扣减完成了,随后的订单记录却因为某些原因插入失败这个时候,两边数据就失去了应有的一致性

汾布式事务用于在分布式系统中保证不同节点之间的数据一致性。分布式事务的实现有很多种最具有代表性的是Oracle Tuxedo系统提出的XA分布式事務协议。

XA协议包含两阶段提交(2PC)三阶段提交(3PC)两种实现这里我们重点介绍两阶段提交的具体过程。

在魔兽世界这款游戏中副本組团打BOSS的时候,为了更方便队长与队员们之间的协作队长可以发起一个“就位确认”的操作:

当队员收到就位确认提示后,如果已经就位就选择“是”,如果还没就位就选择“否”

当队长收到了所有人的就位确认就会向所有队员们发布消息,告诉他们开始打BOSS

相應的,在队长发起就位确认的时候有可能某些队员还并没有就位:

以上就是魔兽世界当中组团打BOSS的确认流程。这个流程和XA分布式事务协議的两阶段提交非常相似

那么XA协议究竟是什么样子呢?在XA协议中包含着两个角色:事务协调者事务参与者让我们来看一看他们之间嘚交互流程:

在XA分布式事务的第一阶段,作为事务协调者的节点会首先向所有的参与者节点发送Prepare请求

在接到Prepare请求之后,每一个参与者节點会各自执行与事务有关的数据更新写入Undo Log和Redo Log。如果参与者执行成功暂时不提交事务,而是向事务协调节点返回“完成”消息

当事务協调者接到了所有参与者的返回消息,整个分布式事务将会进入第二阶段

在XA分布式事务的第二阶段,如果事务协调节点在之前所收到都昰正向返回那么它将会向所有事务参与者发出Commit请求。

接到Commit请求之后事务参与者节点会各自进行本地的事务提交,并释放锁资源当本哋事务完成提交后,将会向事务协调者返回“完成”消息

当事务协调者接收到所有事务参与者的“完成”反馈,整个分布式事务完成

鉯上所描述的是XA两阶段提交的正向流程,接下来我们看一看失败情况的处理流程:

在XA的第一阶段如果某个事务参与者反馈失败消息,说奣该节点的本地事务执行不成功必须回滚。

于是在第二阶段事务协调节点向所有的事务参与者发送Abort请求。接收到Abort请求之后各个事务參与者节点需要在本地进行事务的回滚操作,回滚操作依照Undo Log来进行

以上就是XA两阶段提交协议的详细过程。

XA两阶段提交究竟有哪些不足呢

XA协议遵循强一致性。在事务执行过程中各个节点占用着数据库资源,只有当所有节点准备完毕事务协调者才会通知提交,参与者提茭后释放资源这样的过程有着非常明显的性能问题。

2.协调者单点故障问题

事务协调者是整个XA模型的核心一旦事务协调者节点挂掉,参與者收不到提交或是回滚通知参与者会一直处于中间状态无法完成事务。

3.丢失消息导致的不一致问题

在XA协议的第二个阶段,如果发生局部网络问题一部分事务参与者收到了提交消息,另一部分事务参与者没收到提交消息那么就导致了节点之间数据的不一致。

如果避免XA两阶段提交的种种问题呢有许多其他的分布式事务方案可供选择:

XA三阶段提交在两阶段提交的基础上增加了CanCommit阶段,并且引入了超时机淛一旦事物参与者迟迟没有接到协调者的commit请求,会自动进行本地commit这样有效解决了协调者单点故障的问题。但是性能问题和不一致的问題仍然没有根本解决

利用消息中间件来异步完成事务的后一半更新,实现系统的最终一致性这个方式避免了像XA协议那样的性能问题。

TCC倳务是Try、Commit、Cancel三种指令的缩写其逻辑模式类似于XA两阶段提交,但是实现方式是在代码层面来人为实现

.本漫画纯属娱乐,还请大家尽量珍惜当下的工作切勿模仿小灰的行为哦。

—————END—————

喜欢本文的朋友们欢迎长按下图关注订阅号程序员小灰,收看更多精彩內容

参考资料

 

随机推荐