源代码文件: SplitReservedLot.apl相关窗口: frmSplitReservedLot2问题描述: 批号拆分时,可任意拆分批号,会导致拆分后批号资料不正确例子: 批号(1900-1) 有5道工序(10/20../50) 数量为20若批号1900-1未做到20工序,就在20工序拆分会导致资料不正确;
PS: 目前2K4/SP4版本未能做到在工序上拆分,这是我们后来客户化的地方也就是在RESERVED_LOT_BATCH_TAB表里增加一新FIELD: Parent_Operation_No表示此子批号从父批号的某道工序开始拆分的资料后续会讲WIP的部分,基本上来说按批号管理的IFS'S WIP资料都不准确;
解决方法:在拆分批号APPLY时检查此批号在此道工序上的WIP是否够用?接上例,假设拆分前资料 OPERATION_NO LOT_NO OUTPUT WIP10 1900-1 20 0 =>表示第10工序已经完工20 1900-1 15 5 =>表示第20工序上有WIP数量为530 1900-1 0 15 =>表示第30工序上有WIP数量为15此时在此10工序应该不允许拆分批号,20工序至多只能拆分5个数量;30工序至多只能拆分15个数量;具体实现:1) 写一CheckQty函数:检查WIP数量是否够,不通过nCheck=1;否则nCheck=0;Function: CheckQty Description: Returns Parameters Static Variables Local variables Number: nRowI Number: nRowJ Number: nSum Number: nOpNoI Number: nOpNoJ Number: nWip Actions Set nSum= 0 Set nRowI = TBL_MinRow --两层LOOP,此处为外LOOP While SalTblFindNextRow(hWndTbl, nRowI, 0, ROW_MarkDeleted) Call SalTblSetContext(hWndTbl, nRowI) Set nSum= 0 Set nOpNoI = hWndTbl.colnParentOperationNo Set nWip = hWndTbl.colnWipQty Set nRowJ = TBL_MinRow --此处为内LOOP While SalTblFindNextRow(hWndTbl, nRowJ, 0, ROW_MarkDeleted) Call SalTblSetContext(hWndTbl, nRowJ) Set nOpNoJ = hWndTbl.colnParentOperationNo --相同OPERATION_NO,统计拆分数量 If nOpNoI = nOpNoJ Set nSum = nSum + hWndTbl.colnReservedQty --拆分数量超过WIP数量,返回1 If nSum > nWip Set nCheck = 1 Return TRUE Set nCheck = 0 Return FALSE2)修改PM_DataSourceSaveOn PM_DataSourceSave If wParam =METHOD_Execute If dfnQtySplit > nOrigReservedQty Call AlertBox(TranslateConstant(TEXT_SplitResLot_QtySplit) , CAPTION_Error, INFO_Ok ) Return FALSE --增加此处调用 Call CheckQty() --检查不通过,错误对话框 If nCheck = 1 Call AlertBox(TranslateConstant(TEXT_SplitResLot_QtyWip) , CAPTION_Error, INFO_Ok ) Return FALSE ..以下省略