原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
**点击蓝字** 关注我们
一
前言
归纳总结是个好习惯,我们都值得拥有.
每一个业务的开发需求,都是一次归纳的契机.
• 根据业务特定的需求分析,是否可以概括出一个通用需求?
• 特定业务需求是否完全包含在这个通用需求中呢?
• 是否可以根据这个通用需求概括出一个通用处理模型?
• 该模型是否可以解决这一类的业务需求?
• 怎么用特定的语言(ABAP)开发这个模型?
• 怎么给业务最大的自由度去使用这个配置使用这个模型?
如果你是一个业务人员,带着这些问题去和你的开发沟通.(你毛病呀,半天就可以写完的程序,你想整一周?)
如果你是一个开发人员,带着这些问题去和需求提出者沟通(你找事呀,按我的需求做就完事了,要不你来写功能说明书?)
或者,你也会碰到志同道合的. 嗯,这个提议不错, 咱们一起来完善一下这个设计.
尝试更多的去理解业务,去归纳业务,用开发的思想去重建功能设计.
**本文主要介绍一个自定义批次管理体系**
二
自定义批次管理概述
SAP批次管理是一个成熟的解决方案. 启用后,可以精细的管理商品的每个批次信息,并且可以通过批次评估确定不同批次的成本.
在商品出入库的每个环节都需要确定一个批次(出库环节可以通过系统自动执行批次确定,把交货单拆分到批次行),有时还需要根据批次拆分业务单据行.
实际仓库出库时,又不太可能按照批次实物拣配. 这又会给批次库存盘点带来麻烦.
所以在零售企业往往不建议启用系统标准批次管理功能.
但是企业实际管理时,有些业务又需要有批次数据支持,比如
• 供应商库存查询
• 供应商返利计算(基于销售计算对供应商的返利)
• 供应商库存补差(因为供应商降价引起的对零售企业的补偿)
• ...
为了解决这个矛盾,有了这个自定义批次管理体系的开发
三
自定义批次实现方式
• 定义一组表,用于记录采购订单/销售订单/交货单/商品凭证等附带的批次明细
• 定义表ZTMATDOC记录批次出入库明细
• 定义表ZTMCHB记录批次主数据
• 入库时,自动生成一个批次号,补充记录ZTMATDOC及ZTMCHB
• 出库时,按先进先出原则自动分配一个或多个批次号,补充记录ZTMATDOC.
• 构造视图ZVMCHB 通过ZTMATDOC的统计,形成批次库存
四
核心处理逻辑
在商品凭证保存时,根据配置,为每一个商品凭证行生成相应的批次行,这些批次行写入ZTMATDOC,如果必要,同时写入ZTMCHB.形成批次管理的核心数据.
针对不同的移动类型执行不同的处理逻辑
五
困难点
自定义批次管理的基本逻辑似乎并不复杂, 复杂的在于一些特殊的业务场景
• 比如移库移动类型301 系统会自动产生移入方的行. 移入方需要使用移出方分配的批次
• 比如调拨业务,出库方分配的批次需要传递到入库方使用.
• 比如盘盈业务:优先使用已经存在的批次.确实不存在再获取新的批次号
• 比如展示商品:子商品行自动使用父商品行的批次
• 比如冲销业务:使用原单批次信息
• ...
总之在一些特殊的处理细节处需要大量的总结分析与测试来完善逻辑.
六
与外部系统的传递
基本上所有单据传递中都需要附加传递批次信息,因此这些单据都会基于明细表,补充一个批次明细表.基于明细记录批次信息.
这些通过单据传递的批次信息要优先影响系统中的批次使用.
**实际应用中, 最好能避免与外部系统交互批次信息. 由SAP自行按给定规则产生批次数据即可**
七
总结
自定义批次管理是特定项目中产生的需求,是一个相对折衷的方案.
避免由于启用标准SAP批次功能对业务实际操作产生巨大影响,同时又为特定业务产生所需的批次数据.
在零售行业具体使用时,需要通过大量业务测试验证批次数据的准确性.
属于一个费力不讨好,吃饱了撑着的开发行为.
但这又确实是企业项目中的实际需求.
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
**公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群**