ความไม่สมดุลระหว่างรายการคลังสินค้าและรายการบัญชีแยกประเภทสินค้าเกิดขึ้นเมื่อคุณจัดส่งสินค้าชุดที่มีกล่องกาเครื่องหมาย "BOM ชุดบิลด์อัตโนมัติ" ถูกเลือกไว้จากที่ตั้งใน Microsoft Dynamics NAV 2009

นำไปใช้กับ
Dynamics NAV 2009

บทความนี้ใช้กับ Microsoft Dynamics NAV สําหรับทุกภูมิภาค

อาการ

สมมติว่า คุณเลือกกล่องกาเครื่องหมาย ต้องใช้การรับ ของ และ ช่องเก็บบังคับ สําหรับที่ตั้งในกล่องโต้ตอบ บัตรที่ตั้ง ใน Microsoft Dynamics NAV 2009 เมื่อคุณจัดส่งใบสั่งขายสําหรับสินค้าชุดเครื่องมือที่มีการเลือกกล่องกาเครื่องหมาย ชุดสินค้าโดยอัตโนมัติ จากที่ตั้ง ปริมาณที่ไม่ถูกต้องยังคงอยู่ในรายการคลังสินค้า อย่างไรก็ตาม รายการบัญชีแยกประเภทสินค้าแสดงปริมาณที่ถูกต้องสําหรับรายการการขาย มีความไม่สมดุลระหว่างรายการคลังสินค้าและรายการบัญชีแยกประเภทสินค้า
ปัญหานี้เกิดขึ้นในผลิตภัณฑ์ต่อไปนี้:

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1

      

การแก้ปัญหา

ข้อมูลโปรแกรมแก้ไขด่วน

โปรแกรมแก้ไขด่วนที่ได้รับการสนับสนุนจาก Microsoft พร้อมใช้งานแล้ว อย่างไรก็ตาม มีไว้เพื่อแก้ไขปัญหาที่อธิบายไว้ในบทความนี้เท่านั้น นําไปใช้กับระบบที่พบปัญหานี้โดยเฉพาะเท่านั้น โปรแกรมแก้ไขด่วนนี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณไม่ได้รับผลกระทบอย่างร้ายแรงจากปัญหานี้ เราขอแนะนําให้คุณรอ Service Pack 2009 สําหรับ Microsoft Dynamics NAV 2009 ถัดไป หรือ Microsoft Dynamics NAV เวอร์ชันถัดไปที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้

หมายเหตุ ในกรณีพิเศษ ค่าธรรมเนียมสําหรับการโทรติดต่อฝ่ายสนับสนุนตามปกติอาจถูกยกเลิกถ้าผู้เชี่ยวชาญฝ่ายสนับสนุนทางเทคนิคสําหรับ Microsoft Dynamics และผลิตภัณฑ์ที่เกี่ยวข้องระบุว่าการอัปเดตเฉพาะจะแก้ไขปัญหาของคุณได้ ค่าใช้จ่ายในการสนับสนุนปกติจะใช้กับคําถามและปัญหาการสนับสนุนเพิ่มเติมที่ไม่มีคุณสมบัติสําหรับการอัปเดตเฉพาะที่สงสัย

            
          

ข้อมูลการติดตั้ง

Microsoft แสดงตัวอย่างการเขียนโปรแกรมสําหรับภาพประกอบเท่านั้น โดยไม่มีการรับประกันทั้งโดยชัดแจ้งหรือโดยนัย ซึ่งรวมถึงแต่ไม่จํากัดเพียงการรับประกันโดยนัยถึงความสามารถในเชิงพาณิชย์หรือความเหมาะสมสําหรับวัตถุประสงค์เฉพาะ บทความนี้จะถือว่าคุณคุ้นเคยกับภาษาการเขียนโปรแกรมที่กําลังแสดงอยู่ และมีเครื่องมือที่ใช้สําหรับสร้างและแก้ไขจุดบกพร่องของกระบวนการ วิศวกรฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายฟังก์ชันการทํางานของกระบวนการเฉพาะได้ แต่จะไม่ปรับเปลี่ยนตัวอย่างเหล่านี้เพื่อให้มีฟังก์ชันการทํางานที่เพิ่มขึ้นหรือสร้างขั้นตอนต่างๆ เพื่อตอบสนองความต้องการเฉพาะของคุณ

หมายเหตุ ก่อนที่คุณจะติดตั้งโปรแกรมแก้ไขด่วนนี้ ตรวจสอบว่าผู้ใช้ไคลเอนต์ Microsoft Navision ทั้งหมดออกจากระบบ ซึ่งรวมถึงผู้ใช้ไคลเอนต์ Microsoft Navision Application Services (NAS) คุณควรเป็นผู้ใช้ไคลเอนต์เท่านั้นที่เข้าสู่ระบบเมื่อคุณใช้โปรแกรมแก้ไขด่วนนี้

เมื่อต้องการใช้โปรแกรมแก้ไขด่วนนี้

เราขอแนะนําให้ใช้บัญชีผู้ใช้ในหน้าต่าง ล็อกอินของ Windows หรือในหน้าต่าง ล็อกอินของฐานข้อมูล ถูกกําหนด ID บทบาท "SUPER" หากบัญชีผู้ใช้ไม่สามารถกําหนดรหัสบทบาท "SUPER" ได้ คุณต้องตรวจสอบว่าบัญชีผู้ใช้มีสิทธิ์ต่อไปนี้:

  • สิทธิ์ในการปรับเปลี่ยนสําหรับวัตถุที่คุณจะเปลี่ยนแปลง
  • สิทธิ์ Execute สําหรับวัตถุ System Object ID 5210 และสําหรับวัตถุ System Object ID 9015

                
หมายเหตุ คุณไม่มีสิทธิ์ในที่เก็บข้อมูล เว้นแต่คุณจะต้องดําเนินการซ่อมแซมข้อมูล

การเปลี่ยนแปลงโค้ด

หมายเหตุ ทดสอบการแก้ไขรหัสเสมอในสภาพแวดล้อมที่ควบคุมก่อนที่คุณจะนําการแก้ไขไปใช้กับคอมพิวเตอร์การผลิตของคุณ
เมื่อต้องการแก้ไขปัญหานี้ ให้ทําตามขั้นตอนต่อไปนี้:

  1. สร้างตัวแปรสากลใหม่ในรหัสสินค้า Jnl.-Post Line codeunit (22) แล้วระบุตัวแปรดังนี้:

    • ชื่อ: TempWhseJnlLine
    • ชนิดข้อมูล: ระเบียน
    • ชนิดย่อย: บรรทัดสมุดรายวันคลังสินค้า
    • ชั่วคราว: ใช่
  2. เปลี่ยนรหัสในฟังก์ชัน PostOutput ในโค้ดโค้ดโค้ดของ Jnl.-Post Line (22) ดังนี้:
    รหัสที่มีอยู่

    ...
    "Invoiced Quantity" := 0;
    END;
    PostItem;
    IF NOT Kitting THEN
    UpdateProdOrderLine(ProdOrderLine,ReTrack);
    
    // Delete the following lines. 
    IF Location."Bin Mandatory" AND (NOT CalledFromInvtPutawayPick) THEN
    WhseJnlPostLine.RUN(WhseJnlLine);
    // End of the lines.
    
    END;
    END;
    END;
    ...
    

    รหัสทดแทน

    ...
    "Invoiced Quantity" := 0;
    END;
    PostItem;
    IF NOT Kitting THEN
    UpdateProdOrderLine(ProdOrderLine,ReTrack);
    
    // Add the following lines.
    IF Location."Bin Mandatory" AND (NOT CalledFromInvtPutawayPick) THEN BEGIN
    TempWhseJnlLine := WhseJnlLine;
    WhseJnlPostLine.RUN(WhseJnlLine);
    END;
    // End of the lines.
    
    END;
    END;
    END;
    ...
    
  3. สร้างกระบวนงาน GetOutputWhseJnlLine ใน Item Jnl.-Post Line codeunit (22) ดังนี้:

    1. สร้างตัวแปรพารามิเตอร์ แล้วระบุตัวแปรดังนี้:

      • ชื่อ: OutputWhseJnlLine
      • ชนิดข้อมูล: ระเบียน
      • ชนิดย่อย: บรรทัดสมุดรายวันคลังสินค้า
      • ชั่วคราว: ใช่
    2. เพิ่มรหัสดังนี้:

      PROCEDURE GetOutputWhseJnlLine(VAR OutputWhseJnlLine);
      OutputWhseJnlLine := TempWhseJnlLine;
      OutputWhseJnlLine.INSERT;
      
  4. สร้าง variabl ท้องถิ่นใหม่ในฟังก์ชัน Code ในโค้ดโค้ดของ BOM Jnl.-Post Line codeunit (32) แล้วระบุตัวแปรดังนี้:

    • ชื่อ: TempOutputWhseJnlLine
    • ชนิดข้อมูล: ระเบียน
    • ชนิดย่อย: บรรทัดสมุดรายวันคลังสินค้า
    • ชั่วคราว: ใช่
  5. เปลี่ยนรหัสในฟังก์ชันรหัสในโค้ดโค้ดของ Jnl.-Post Line Codeunit (32) ดังต่อไปนี้:
    รหัสที่มีอยู่ 1

    ...
    TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2); 
    ReserveBOMJnlLine.TransferBOMJnlToItemJnlLine(BOMJnlLine,ItemJnlLine,"Quantity (Base)");
    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim2);
    IF "Entry Type" = "Entry Type"::Assembly THEN BEGIN
    ProdOrderLine.DELETE;
    ProdOrderLine.Status := ProdOrderLine.Status::Finished;
    ProdOrderLine.INSERT;
    ...
    

    รหัสทดแทน 1

    ...
    TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2); 
    ReserveBOMJnlLine.TransferBOMJnlToItemJnlLine(BOMJnlLine,ItemJnlLine,"Quantity (Base)");
    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim2);
    
    // Add the following line.
    ItemJnlPostLine.GetOutputWhseJnlLine(TempOutputWhseJnlLine);
    
    IF "Entry Type" = "Entry Type"::Assembly THEN BEGIN
    ProdOrderLine.DELETE;
    ProdOrderLine.Status := ProdOrderLine.Status::Finished;
    ProdOrderLine.INSERT;
    ...
    

    รหัสที่มีอยู่ 2

    ...
    OutputItemLedgEntryNo := ItemJnlLine."Item Shpt. Entry No.";
    END;
    PostWhseJnlLine(ItemJnlLine,TempHandlingSpecification,OriginalQuantity,OriginalQuantityBase);
    PostTempJnlLines;
    IF BOMReg."No." = 0 THEN BEGIN
    BOMReg.LOCKTABLE;
    IF BOMReg.FIND('+') THEN
    BOMReg."No." := BOMReg."No." + 1
    ...
    

    รหัสทดแทน 2

    ...
    OutputItemLedgEntryNo := ItemJnlLine."Item Shpt. Entry No.";
    END;
    PostWhseJnlLine(ItemJnlLine,TempHandlingSpecification,OriginalQuantity,OriginalQuantityBase);
    PostTempJnlLines;
    
    // Add the following line.
    PostSalesWhseJnlLine(TempOutputWhseJnlLine);
    
    IF BOMReg."No." = 0 THEN BEGIN
    BOMReg.LOCKTABLE;
    IF BOMReg.FIND('+') THEN
    BOMReg."No." := BOMReg."No." + 1
    ...
    
  6. สร้างฟังก์ชัน PostSalesWhseJnlLine ในโค้ดหน่วยบรรทัด BOM Jnl.-Post (32) ดังนี้:

    1. สร้างพารามิเตอร์ใหม่ แล้วระบุพารามิเตอร์ดังนี้:

      • ชื่อ: TempOutputWhseJnlLine2
      • ชนิดข้อมูล: ระเบียน
      • ชนิดย่อย: บรรทัดสมุดรายวันคลังสินค้า
      • ชั่วคราว: ใช่
    2. เพิ่มรหัสดังนี้:

      LOCAL PROCEDURE PostSalesWhseJnlLine(VAR TempOutputWhseJnlLine);
      BEGIN
      WITH TempOutputWhseJnlLine2 DO BEGIN
      IF FINDFIRST THEN BEGIN
      Quantity := -Quantity;
      "From Bin Code" := "To Bin Code";
      "From Zone Code" := "To Zone Code";
      "To Bin Code" := '';
      "To Zone Code" := '';
      WhseJnlPostLine.RUN(TempOutputWhseJnlLine2);
      END;
      END;
      END;
      

          

ข้อกำหนดเบื้องต้น

คุณต้องติดตั้งผลิตภัณฑ์ใดผลิตภัณฑ์หนึ่งต่อไปนี้เพื่อใช้โปรแกรมแก้ไขด่วนนี้:

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1

ลบข้อมูลออก

คุณไม่สามารถลบโปรแกรมแก้ไขด่วนนี้ได้

สถานะ

Microsoft ได้ยืนยันว่านี่เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ที่แสดงไว้ในส่วน "นำไปใช้กับ"

หมายเหตุ นี่คือบทความ "เผยแพร่อย่างรวดเร็ว" ที่สร้างขึ้นโดยตรงจากภายในองค์กรสนับสนุนของ Microsoft ข้อมูลที่อยู่ในที่นี้มีให้เพื่อตอบสนองต่อปัญหาที่เกิดขึ้นใหม่ เนื่องจากความเร็วในการทําให้พร้อมใช้งานวัสดุอาจรวมถึงข้อผิดพลาดในการพิมพ์และอาจได้รับการแก้ไขได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบ ดู ข้อตกลงการใช้งาน สําหรับข้อควรพิจารณาอื่นๆ