[转]SAP无序列号与批次管理的库龄计算

来源:互联网 发布:c语言编程软件中文版 编辑:程序博客网 时间:2024/05/21 01:45

库存账龄指库存物料在仓库的存放时间,可反映出物料周转率与物料需求计划的准确性,是反映企业的供应链的整体效率的绩效指标之一。对于很多使用SAP系统的企业而言,大部分的物料都是没有启用序列号或者批次管理的。在没有启用序列号与批次管理的情况下是无法百分百准确的取得各个物料的在库时间的。只能通过倒推来计算库存账龄,前提条件是物料的出入库严格按先进先出原则执行。


  • 功能说明

    1. 可指定物料号、库存地点、物料组、工厂、MRP控制者等来定位需要查询的物料;
    2. 多区间查询,根据用户每次查询的不同需求,可查询出四个(或更多)时间区间的库存,比如,一次查询到1个月以内、1到2个月、2到3个月、3个月以上的库存数量。
    3. 可查询过去时间点的库存账龄,如现在是2017年1月,想对比2016年1月时的库存账龄与现在的库存账龄数据,以体现这一年的管理改善效果;
    4. 由于某些企业对于制造部门限制查看物料金额的权限,可根据用户的权限来确定报表是显示出物料库存的金额还是库存物料的数量;
  • 输出字段

SAP字段名称SAP对应表/字段备注物料号MARD- MATNR 物料描述MAKT- MAKTX 工厂MARD- WERKS 库存地点MARD-LGORT 基础计量单位MARA- MEINS 物料组MARA- MATKL 物料组描述  总库存量  MRP控制者MARC-DISPO 最后入库日期  最后出库日期  总额  X个月以内(数量) 区间1X至X个月(数量) 区间2X至X个月(数量) 区间3X个月以上(数量) 区间4X个月以内(金额) 区间1X至X个月(金额) 区间2X至X个月(金额) 区间3X个月以上(金额) 区间4

取数逻辑说明

  1. 根据用户输入的“库存时间点”,取当时的库存状态,包括物料、数量、库存地点。 
    1.1 判断用户输入的“库存时间点”是否大于或等于MARD- LFGJA、MARD- LFMON,是:保留该项目,否:由该项目的物料号+工厂+库位,在MARDH表里面找,按区间从近到远排序并逐一对比,找到第一个小于或等于用户输入库存时间点的项目。确定该项目的数量与库存地点(数量假设为N0,下文需要)。 
    注:MARD是物料库存信息的表,如果存放的数据是最后一次发生物料出入库后的数据,每次数据修改后,会将原来的数据复制到表MARDH作为历史数据储存。如要查询的库存时间点为201601,那么只要捉取MARD中期间小于201601的数据,因为MARD中的数据为最新,如果最新的数据小于201601,那么说明在2016年01月以后,该物料的库存都没有发生过更改。 
    1.2 将以上确定的物料+工厂在表MBEW找到对应的项目,判断用户输入“库存时间点”是否大于或等于MBEW- LFGJA、MBEW- LFMON,是:取其价格;否:由物料+工厂在MBEWH里面找,按区间从近到远排序并逐一对比,找到第一个小于或等用户输入库存时间点的项目。取其价格。 
    注:逻辑与上步骤相同。 
    1.3 取价格逻辑:以上步骤确定到的项目,判断MBEW-VPRSV的值,为V,取VERPR,为S,取STPRS。取到的值除以价格单位(PEINH)。得出单价。
  2. 根据用户输入的区间,取最长的时间N。由库存时间点所在月份,往前推N个月。如库存时间点为2016年03月,区间4为5个月以上,取2015年11月至2016年3月这五个月的物料凭证(排除移动类型为311、541、542、543、544和数量为负的凭证)。
  3. 区间(数量)取值逻辑 
    分别汇总各个月份的入库数量。设步骤1取出的库存状态数量为N0。 
    假设用户输入 
    区间1:1个月以内 
    区间2:1到2个月 
    区间3:2到5个月 
    区间4:5个月以上 
    查询库存时间点:2016年3月 
    那么, 
    2016年3月库存数量(设为N0 ),如1000件; 
    2016年3月入库汇总数量(设为N1),如200件; 
    件2016年2月入库汇总数量(设为N2),如200件; 
    2016-1、2015-12、2015-11月入库汇总数量(设为N3),如700件。 
    注:以上各种汇总数量,指的当然是同一物料的。 
    区间1:MIN(N0:N1),取N0和N1中最小值 
    区间2:MAX(MIN(N0-N1,N2),0),取N0-N1与N2中的最小值,如果N0-N1小于0,则取0。 
    区间3:MAX(MIN(N0-N1-N2,N3),0),取N0-N1-N2与N2中的最小值,如果N0-N1-N2小于0,则取0。 
    区间4:N0-区间1-区间2-区间3 
    如2016年3月库存数量为1000,2016年3月入库汇总数量为200,根据先进先出原则,3月入库的这200件,肯定还放在仓库(如果出库也是前面的800件先出),而存放的时间不超过一个月,所以区间1(1个月以内的数量)为200,那么剩下的800件存放的时间就超过一个月了。 
    假设2016年2月入库汇总数量(N2)为200件,取N0-N1(取上面说的剩下的800件)与N2的最小值,800与200对比,200较小,那么1到2个月的数量就是200件,剩下1000-200-200=600件就是超过2个月的了。 
    假设2016年1月入库汇总数量(N3)为700件,取N0-N1-N2(上面剩下的600件)与N3的最小值,3月入了700个,但是我们现在只需要考虑上面剩下的600件,因为有100件已经被发货出库了。所以这600件就是库龄为2到5个月的库存。 
    由于区间4总是多少个月以上,那么除了确定在区间1至区间3的数量,剩下的数量就必然是区间4了。
  4. 区间(金额)取值逻辑 
    根据上步骤确定了各区间的数量,再乘上步骤1-C中取到的金额,得出各区间(金额)的值。
  5. 区间输出值 
    根据用户选项判断是输出金额还是数量,如果金额和数量都选上,每个区间输出两个字段。
转载文章:

http://blog.csdn.net/marcyao/article/details/53433475 

SAP无序列号与批次管理的库龄计算


原创粉丝点击