SAP 库存查询算法
SAP 的后台有关库存的表,是一种很有意思的表。库存表分两种,一种是当前库存表,另一种是历史库存表。例如有MARD\MCHB\MSPR\MKOL等表,对应的历史库存表就是MARDH\MCHBH\MSPRH\MKOLH。当前库存表表示的是,某款物料在当前时间的库存,表里的年份月份字段表示的是某款物料从当时到现在的库存,也就是说从当时到现在一直没有发生过物料移动。举个例子,某物料在当前表里的年份月份字段是201006,则表示这款物料从2010年6月到系统当前时间一直都没有做过出入库。数量不变。
而历史库存表表示的是,某款物料在历史上的库存记录。如某款物料在201006是10个,201105是6个,201201是7个,则表示这款物料在上述3个时间发生过物料移动。
那么这就会引发一个问题,如果有一个报表需求,要求按照时间月份来查询物料在当期的库存。这个时候遵循的原则是,先到历史库存表里面去找。最好是从前往后推,即从某物料的最早的记录往屏幕输入时间推。如果推不到,则根据屏幕输入的年份月份查找当前库存表。
以下是核心算法的代码。
LOOP AT gt_mard.
LOOP AT gt_mardh WHERE matnr = gt_mard-matnr
AND werks = gt_mard-werks
AND lgort = gt_mard-lgort.
CHECK gt_mardh-lfgja => p_lfgja.
IF gt_mardh-lfgja = p_lfgja.
CHECK gt_mardh-lfmon => p_lfmon.
ENDIF.
g_lbkum = gt_mardh-labst + gt_mardh-umlme
+ gt_mardh-insme + gt_mardh-einme + gt_mardh-speme
+ gt_mardh-retme .
mark = ‘X’.
EXIT.
* endif.
ENDLOOP.
IF mark IS INITIAL.
g_lbkum = gt_mard-labst + gt_mard-umlme
+ gt_mard-insme + gt_mard-einme + gt_mard-speme
+ gt_mard-retme .
ENDIF.
gt_list-matnr = gt_mard-matnr.
gt_list-werks = gt_mard-werks.
gt_list-lgort = gt_mard-lgort.
gt_list-labst = g_lbkum.
gt_list-dispo = gt_mard-dispo.
COLLECT gt_list.
CLEAR mark.
CLEAR g_lbkum.
ENDLOOP.
gt_mard 是与mard 同样结构内表,gt_mardh是与mardh同样结构的内表。
核心算法就是通过mardh的年份来推到屏幕输入年份,如果推到了,就继续推月份,两者如果都能推到,则mardh的这条物料记录就是该屏幕输入月的库存;否则,就以当前库存mard中的数据作为该屏幕输入时间的库存。
SAP 库存查询算法的更多相关文章
- 算法模板——sap网络最大流 1(非递归+邻接矩阵)
实现功能:首行输入N,M,S,T,代表这张图N个点,M条边,源点为S,汇点为T:接下来T行输入个边的出发点.终点和权值:输出最大流 原理:sap网络流算法(详见百度百科,个人觉得这个模板已经不错了,虽 ...
- UE4物理模块(三)---碰撞查询(下)SAP/MBP/BVH算法简介
在上一文中介绍了碰撞查询的配置方法: Jerry:UE4物理模块(三)---碰撞查询(上)zhuanlan.zhihu.com 本篇介绍下UE4的各种零大小的射线检测,以及非零大小(带体积)的射线检 ...
- ISPA
来自CSDN的Rachel Zhang 4. Improved SAP 算法 本次介绍的重头戏.通常的 SAP 类算法在寻找增广路时总要先进行 BFS,BFS 的最坏情况下复杂度为 O(E),这样使得 ...
- ACM/ICPC 之 网络流入门-Ford Fulkerson与SAP算法(POJ1149-POJ1273)
第一题:按顾客访问猪圈的顺序依次构图(顾客为结点),汇点->第一个顾客->第二个顾客->...->汇点 //第一道网络流 //Ford-Fulkerson //Time:47M ...
- 最大流算法----(SAP 和 EK)
EK算法的核心 反复寻找源点 s 到汇点 t 之间的增广路径,若有,找出增广路径上每一段的最小值delta,若无,则结束. 寻找增广路径时用BFS来找,并且更新残留网的值. 找到delta后,则使最大 ...
- POJ 2455 网络流 基础题 二分+网络流 dicnic 以及 sap算法
Secret Milking Machine Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8189 Accepted: ...
- 网络流 最大流—最小割 之SAP算法 详解
首先引入几个新名词: 1.距离标号: 所谓距离标号 ,就是某个点到汇点的最少的弧的数量(即边权值为1时某个点到汇点的最短路径长度). 设点i的标号为level[i],那么如果将满足level[i]=l ...
- HDU 3657 Game (SAP | Dinic | EK 三种算法的比较)
Game Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hiho一下 第115周:网络流一•Ford-Fulkerson算法 (Edmond-Karp,Dinic,SAP)
来看一道最大流模板水题,借这道题来学习一下最大流的几个算法. 分别用Edmond-Karp,Dinic ,SAP来实现最大流算法. 从运行结过来看明显SAP+当前弧优化+gap优化速度最快. hi ...
随机推荐
- UVa 1213 (01背包变形) Sum of Different Primes
题意: 选择K个质数使它们的和为N,求总的方案数. 分析: 虽然知道推出来了转移方程, 但还是没把代码敲出来,可能基本功还是不够吧. d(i, j)表示i个素数的和为j的方案数,则 d(i, j) = ...
- BZOJ_1022_[SHOI2008]_小约翰的游戏John_(博弈论_反Nim游戏)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1022 反Nim游戏裸题.详见论文<组合游戏略述——浅谈SG游戏的若干拓展及变形>. ...
- BZOJ3451: Tyvj1953 Normal
题解: 好神的一道题.蒟蒻只能膜拜题解. 考虑a对b的贡献,如果a是a-b路径上第一个删除的点,那么给b贡献1. 所以转化之后就是求sigma(1/dist(i,j)),orz!!! 如果不是分母的话 ...
- vijos1194 Domino
vijos上的题解: 1.因为每个格子不是被覆盖就是没被覆盖,状态只有0 1两种,m<=5,所以可以将每一列的状态压缩,看作一个二进制数.2.矩阵G表示从I状态到J状态的路径条数,自乘N次为长度 ...
- TreeList 实现多表头
1. 先上图: 2. 再上代码: 原码
- Birt时间参数添加My97日历控件
首先,思路: 引用My97.js然后为时间参数的textbox添加onclick事件 1.将My97添加到项目中的webcontent目录下(如图:) 2.添加My97引用 在项目路径下找到该文件\w ...
- Android UI设计系统-android selector 开始自定义样式
Selector的结构描述: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:a ...
- 【转】Windows搭建Eclipse+JDK+SDK的Android
原文网址:http://blog.csdn.net/sunboy_2050/article/details/6336480 一 相关下载 (1) Java JDK下载: 进入该网页: http://j ...
- Fine Uploader文件上传组件
最近在处理后台数据时需要实现文件上传.考虑到对浏览器适配上采用Fine Uploader. Fine Uploader 采用ajax方式实现对文件上传.同时在浏览器中直接支持文件拖拽[对浏览器版本有要 ...
- ViewPager 滑动页(二)
需求:滑动展示页,能够使用本地数据,及获取服务器数据进行刷新操作,并实现页面自动切换: 效果图: 实现分析: 1.目录结构: 代码实现: 1.PosterView.java package com.j ...