Probem in posting Items with serial no.

Hi, I am wsing MBS 3.70. I have a relased prodction order which produces 10 quantity of item x which have serial No…I have routing attched to it. I go to output journal, when i use the funcion explode routing, all the Jorurnal Lines with respect to the routings are created. Then i post the output. When i go and see the produciton order again, it shows that 9 items are reamining and only one is finished. Item ledger entry is also updated by 1 quantity. If i try to post the remaininf item again it does not allows. Have any one faced this problem earlier , plz help. Regards

Hi Interesting one [:D]. I can reproduce it in an inconsistent manner, i.e. I tried it 5 times and it worked once. I suggest you do not flag the final operation as “Finished” as it seems to work fine in this scenario, but it means reporting the final operation 1 short, so you can close it with a quantity (horrible I know, but it works!). I could find no logs for this, so I have logged it with Microsoft.

Hi I have had this accepted as a bug in 3.70. Wait for it wait for it . . . . . . . Fixed in 4.0 - you knew it was coming [:D] In the meantime they recommend you do not flag the last operation as finished on the first pass. Or they have provided me with the following code - as yet untested. The use of Finished has changed from 3.70 to 4.00. In CU22 in 3.70 a combination of the global variable LastOperation and the field Inventory Output Finished is used to decide whether posting of output should happen: The problem in this scenario is that the field Inventory Output Finished is set TRUE when the first serial no. is posted, hereby preventing reaching the call for PostItem for the last 4 serial nos. In 4.0 the field 99000766 Inventory Output Finished has been removed from Table 5406. The field was introduced in the 3.70 project, there is no online help for this field in 3.70. As can be seen the idea of the field was to use it for making sure that output was posted only at the last operation. And as can also be seen this solution does actually not address the root of the problem: to determine which one is the last operation. In 4.0 the code has been changed to make use of a procedure, NextOperationExists, for giving answer to this question. For some reason the procedure NextOperationExists has already been added to CU22 in VSS Rhodes Branch, even though no call has been made for it in the code. Corrections to CU22, 2 code sections changed and procedure NextOperationExists added: Old code 1: .... IF Finished THEN ProdOrderRtngLine."Routing Status" := ProdOrderRtngLine."Routing Status"::Finished ELSE ProdOrderRtngLine."Routing Status" := ProdOrderRtngLine."Routing Status"::"In Progress" LastOperation := (ProdOrderRtngLine."Next Operation No." = '') AND NOT(ProdOrderLine."Inventory Output Finished"); ProdOrderRtngLine.MODIFY; END ELSE LastOperation := TRUE; .... New code 1: .... IF Finished THEN ProdOrderRtngLine."Routing Status" := ProdOrderRtngLine."Routing Status"::Finished ELSE ProdOrderRtngLine."Routing Status" := ProdOrderRtngLine."Routing Status"::"In Progress" LastOperation := (NOT NextOperationExist(ProdOrderRtngLine)); ProdOrderRtngLine.MODIFY; END ELSE LastOperation := TRUE; .... Old code 2: .... IF LastOperation AND ("Output Quantity" <> 0) THEN BEGIN IF Finished THEN BEGIN ProdOrderLine."Inventory Output Finished" := TRUE; ProdOrderLine.MODIFY; END; CheckItemTracking; .... New code 2: .... IF (LastOperation) AND ("Output Quantity" <> 0) THEN BEGIN CheckItemTracking; .... Procedure added: PROCEDURE NextOperationExist@50(ProdOrderRtngLine@1000 : Record 5409) : Boolean; VAR ProdOrderRtngLine2@1001 : Record 5409; BEGIN ProdOrderRtngLine2 := ProdOrderRtngLine; ProdOrderRtngLine2.RESET; ProdOrderRtngLine2.SETRANGE(Status,ProdOrderRtngLine.Status); ProdOrderRtngLine2.SETRANGE("Prod. Order No.",ProdOrderRtngLine."Prod. Order No."); ProdOrderRtngLine2.SETRANGE("Routing No.",ProdOrderRtngLine."Routing No."); ProdOrderRtngLine2.SETRANGE("Routing Reference No.",ProdOrderRtngLine."Routing Reference No."); EXIT(ProdOrderRtngLine2.FIND('>')); END;