zoukankan      html  css  js  c++  java
  • 工单报工之批次确定

    使用批次管理的公司可能经常会在一些地方想着批次确定,或者给出一些批次指导,方便业务做单等

    至于系统标准的批次确定怎么配置,百度一大堆,而且基本都是正确可行的。。。美中不足的就是,会跳转到批次确认策略的界面,让用户一次确认,稍微麻烦

    为了给老板们省时间,所以开发自动批次填充和拆分。。。

    1.依旧使用‘批次确认’按钮。

    2.在批次确认的逻辑里增强

    程序 LCOWBFC1  call_batch_determination 这个FORM里。。。结尾的地方

    ENHANCEMENT 1  ZCO15_ENH.    "active version
    "循环内表处理
      DATA:GV_LINE TYPE I."重新生成的两表对应序列
      DATA:VT_MCHB TYPE TABLE OF MCHB.
      DATA:VS_MCHB TYPE MCHB.
      DATA:LV_ERFMG TYPE MB_ERFMG."需求数量
      DATA:LV_LINE TYPE I.
      DATA:LV_FLAG TYPE C.
    
    
      CLEAR:GV_LINE,VT_MCHB[],VS_MCHB,LV_ERFMG,LV_LINE."情况临时变量
    
      DESCRIBE TABLE GT_CONTROL_TAB LINES LV_LINE.
    
      IF SY-TCODE = 'CO15'.
        SORT GT_COMP BY MATNR ASCENDING.
    
        LOOP AT GT_COMP." WHERE MARK = 'X'.
          GV_LINE = GV_LINE + 1."初始化次数
    
          AT NEW MATNR.
            LV_FLAG = 'X'.
            CLEAR:VT_MCHB[].
            ENDAT.
            LV_ERFMG = GT_COMP-ERFMG."将数量存入变量,后续判断使用
    *
    *        IF GT_COMP-CHARG IS NOT INITIAL."排出已经确定的批次
    *          LV_ERFMG = LV_ERFMG - GT_COMP-ERFMG.
    *        ENDIF.
    
    
          IF GT_COMP-MARK EQ 'X' AND GT_COMP-LGORT IS NOT INITIAL
            AND GT_COMP-WERKS IS NOT INITIAL AND GT_COMP-CHARG IS INITIAL.
            "查询所有物料,工厂,库位级别的批次库存
            IF LV_FLAG = 'X'.
              SELECT MATNR WERKS LGORT CHARG CLABS INTO CORRESPONDING FIELDS OF TABLE VT_MCHB
              FROM MCHB WHERE MATNR = GT_COMP-MATNR
                AND WERKS = GT_COMP-WERKS
                AND LGORT = GT_COMP-LGORT
                AND LVORM = ''
                AND CLABS <> 0.
            ENDIF.
    
              SORT VT_MCHB BY CHARG ASCENDING.
    
              LOOP AT VT_MCHB INTO VS_MCHB WHERE CLABS <> 0.
                IF LV_ERFMG > 0."判断是否数量已满足
                  IF VS_MCHB-CLABS >= LV_ERFMG."满足数量要求,选择批次,并把数量置0
                    GT_COMP-CHARG = VS_MCHB-CHARG.
                    VS_MCHB-CLABS = VS_MCHB-CLABS - LV_ERFMG."更新批次剩余数量
                    LV_ERFMG = 0.
                  ELSE."数量不足,使用全部本批次,不足数量循环下一批,并插入行
                    GT_COMP-CHARG = VS_MCHB-CHARG.
                    LV_ERFMG = LV_ERFMG - VS_MCHB-CLABS.
                    GT_COMP-ERFMG = VS_MCHB-CLABS.
                    VS_MCHB-CLABS = VS_MCHB-CLABS - LV_ERFMG."更新批次剩余数量
                    IF VS_MCHB-CLABS < 0.
                      VS_MCHB-CLABS = 0.
                    ENDIF.
                    GT_COMP-IND_ST = GV_LINE.
    
                    INSERT GT_COMP.
                    CLEAR:GT_COMP-CHARG.
                    GT_COMP-ERFMG = LV_ERFMG.
                    GV_LINE = GV_LINE + 1."自增一位
                    LV_LINE = LV_LINE + 1."自增一位
                    GT_CONTROL_TAB-IND_TO_TABLE = LV_LINE.
                    GT_CONTROL_TAB-IND_FOR_START_SORT = LV_LINE.
                    APPEND GT_CONTROL_TAB.
                  ENDIF.
    
                  MODIFY VT_MCHB FROM VS_MCHB.
                ENDIF.
              ENDLOOP.
    
          ENDIF.
    
          GT_COMP-IND_ST = GV_LINE.
          MODIFY GT_COMP.
          CLEAR:LV_FLAG.
       ENDLOOP.
      ENDIF.
    
    ENDENHANCEMENT.

    因为如果配了批次,系统可能还是会跳的策略那个界面,所以找个地方屏蔽

    程序 LV01FFD0    dialog 这个FORM最开始

    ENHANCEMENT 1  ZCO15_ENHS.    "active version
    IF SY-TCODE = 'CO15'.
      no_dialog = 'X'.
    ENDIF.
    ENDENHANCEMENT.

    设置不跳出这个DIALOG。。。


    完美解决

    下图这个是因为物料库存不足。。。所以拆分了

  • 相关阅读:
    Note/Solution 转置原理 & 多点求值
    Note/Solution 「洛谷 P5158」「模板」多项式快速插值
    Solution 「CTS 2019」「洛谷 P5404」氪金手游
    Solution 「CEOI 2017」「洛谷 P4654」Mousetrap
    Solution Set Border Theory
    Solution Set Stirling 数相关杂题
    Solution 「CEOI 2006」「洛谷 P5974」ANTENNA
    Solution 「ZJOI 2013」「洛谷 P3337」防守战线
    Solution 「CF 923E」Perpetual Subtraction
    KVM虚拟化
  • 原文地址:https://www.cnblogs.com/sapSB/p/6023711.html
Copyright © 2011-2022 走看看