zoukankan      html  css  js  c++  java
  • SAP 库存查询算法

    SAP 的后台有关库存的表,是一种很有意思的表。库存表分两种,一种是当前库存表,另一种是历史库存表。例如有MARDMCHBMSPRMKOL等表,对应的历史库存表就是MARDHMCHBHMSPRHMKOLH。当前库存表表示的是,某款物料在当前时间的库存,表里的年份月份字段表示的是某款物料从当时到现在的库存,也就是说从当时到现在一直没有发生过物料移动。举个例子,某物料在当前表里的年份月份字段是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中的数据作为该屏幕输入时间的库存。

  • 相关阅读:
    每天进步一点点-->函数fseek() 使用方法
    几种更新(Update语句)查询的方法
    hibernate批量删除和更新数据
    Android ViewPager使用具体解释
    Linux curses库使用
    安装numpy、nltk问题汇总
    android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
    Eclipse中SVN的安装步骤(两种)和用法
    Intent用法
    Tomcat全攻略
  • 原文地址:https://www.cnblogs.com/qlp1982/p/3449639.html
Copyright © 2011-2022 走看看