库存---历史结存量计算方法
来源:互联网 发布:db数据库修改器汉化版 编辑:程序博客网 时间:2024/05/19 02:28
mard里记载的是当前库存的数量,但是期间并不一定是当月。比如你物料4月一整月都没有库存数量变化(没收没发),那么5月初你看mard里的条目期间数还是4月而非5月。
当某个期间发生货物移动的时候,系统在更新mard数据的之前(这个表是实时更新的),会检查此笔业务过账期间和mard里对应记录的期间是否一致,也就是看这是不是本期间第一笔移动。如果是,copy表mard里对应记录到mardh,然后把mard记录改成当期(也可能是先删后建),然后再作更新数量数据的操作。如果不是第一笔记录,也就是mard期间和mseg期间一致,则不作copy记录只更新mard数量。
有很多人在做库存进销存的时候,感觉期初库存和期末库存比较难搞定,感觉要去取货物移动的数据来获取期初库存和期末库存,其实不然,只要理解原理就可以快速取出期初库存和期末库存。
库存表:MARDH MARD MSKUH MSKU MSLBH MSLB MSKAH MSKA
下面以MARDH MARD为例,如果一个物料在2011年9月份做了一笔货物移动,则会自动在MARDH中更新2011年8月份的期末库存,假如在2011年9月份一直没有做货物移动,则不会更新MARDH中8月份的期末库存。
假如我想获得2011年7月份的库存,则需要先在MARH中查找7月份的库存,找不到找8月份的库存,找不到找9月份的库存,以此类推,最后都找不到,则用MARD中的库存。
* 下面代码为获取8月份的期初库存和8月份的期末库存
PARAMETERS:
* 会计年度
p_gjahr LIKE bkpf-gjahr OBLIGATORY DEFAULT '2011',
* 期间
p_monat LIKE bkpf-monat OBLIGATORY DEFAULT '08'.
DATA:
v_gjahr LIKE bkpf-gjahr, " 上月期间年度
v_monat LIKE bkpf-monat. " 上月期间月份
* 获取上月度年度和月份
IF p_monat = '01'.
v_monat = '12'.
v_gjahr = p_gjahr - 1.
ELSE.
v_monat = p_monat - 1.
v_gjahr = p_gjahr.
ENDIF.
DATA: BEGIN OF typ_mardh,
p_string(6) TYPE c.
INCLUDE STRUCTURE mardh .
DATA: END OF typ_mardh.
DATA: i_mardh LIKE TABLE OF typ_mardh WITH HEADER LINE. " 期末数据
DATA: n_mardh LIKE TABLE OF typ_mardh WITH HEADER LINE. " 当前库存
DATA: m_mardh LIKE TABLE OF typ_mardh WITH HEADER LINE. " 上月期初数据
* 查找库存历史表
SELECT *
FROM mardh
INTO CORRESPONDING FIELDS OF TABLE m_mardh
WHERE ( lfgja > v_gjahr OR ( lfgja = v_gjahr AND lfmon >= v_monat ) ).
LOOP AT m_mardh .
CONCATENATE m_mardh-lfgja m_mardh-lfmon INTO m_mardh-p_string .
MODIFY m_mardh .
IF m_mardh-p_string >= p_estring .
MOVE-CORRESPONDING m_mardh TO i_mardh.
APPEND i_mardh .
ENDIF.
ENDLOOP.
SELECT *
FROM mard
INTO CORRESPONDING FIELDS OF TABLE n_mardh .
LOOP AT n_mardh .
CONCATENATE n_mardh-lfgja n_mardh-lfmon INTO n_mardh-p_string .
MODIFY n_mardh .
MOVE-CORRESPONDING n_mardh TO m_mardh.
APPEND m_mardh .
MOVE-CORRESPONDING n_mardh TO i_mardh.
APPEND i_mardh .
ENDLOOP.
* 期初库存都在表M_MARDH
SORT m_mardh BY matnr werks lgort lfgja lfmon .
DELETE ADJACENT DUPLICATES FROM m_mardh COMPARING matnr werks lgort.
* 期末库存都在表I_MARDH
SORT i_mardh BY matnr werks lgort lfgja lfmon .
DELETE ADJACENT DUPLICATES FROM i_mardh COMPARING matnr werks lgort.- 库存---历史结存量计算方法
- 库存---历史结存量计算方法
- SQL实时库存数量结存
- SQL实时库存数量结存
- SAP MM模块库存结存报表
- 库存、历史库存说明
- 关于历史库存
- ABAP 中历史库存
- 库存现有量
- 材料库存天数的计算方法
- 材料库存天数的计算方法
- 关于异常结存的问题,库存结存为什么会产生数量为0,成本不为0的异常情况
- SAP库存历史库存表更新逻辑
- SAP 查询历史库存事务
- 库存事务处理现有量检查
- 网站并发量的计算方法
- 系统并发量理论计算方法
- 网站并发量的计算方法
- 经纬度转换
- oracle进程说明
- Function object
- ORACLE CTAS(create table as select)使用注意点
- 系统基础考虑-与用户相关
- 库存---历史结存量计算方法
- android MediaScanner详解
- 位操作
- HEW3工程链接错误(L2330 (E) Relocation size overflow )及解决
- silverlgiht DataGird行颜色转换
- 自定义堆栈(回文检测)
- 手机获取验证码的功能
- error: failed to attach to process ID 0
- html命名和css书写顺序