工單報工之批次確定


使用批次管理的公司可能經常會在一些地方想着批次確定,或者給出一些批次指導,方便業務做單等

至於系統標准的批次確定怎么配置,百度一大堆,而且基本都是正確可行的。。。美中不足的就是,會跳轉到批次確認策略的界面,讓用戶一次確認,稍微麻煩

 

為了給老板們省時間,所以開發自動批次填充和拆分。。。

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。。。


完美解決

 

下圖這個是因為物料庫存不足。。。所以拆分了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM