키트 구성 요소의 차원 값 코드가 Microsoft Dynamics NAV 2009 SP1의 키트 부모 항목 코드와 다른 경우 BOM 저널 또는 판매 주문을 잘못 게시할 수 있습니다.

적용 대상
Dynamics NAV 2009 Service Pack 1

빠르게 게시된 문서는 Microsoft 지원 organization 내에서 직접 정보를 제공합니다. 여기에 포함된 정보는 새로운 또는 고유한 topics 대한 응답으로 생성되거나 다른 기술 자료 정보를 보완하기 위한 것입니다.

이 문서는 모든 국가 및 모든 언어 로캘에 대해 Microsoft Dynamics NAV 2009에 적용됩니다.

증상

키트 구성 요소 항목의 차원 값 코드가 Microsoft Dynamics NAV 2009 SP1의 키트 부모 항목 코드와 다르다고 가정합니다. BOM 저널 또는 판매 주문을 게시할 때 Microsoft Dynamics NAV 2009 SP1을 잘못 사용하면 오류 메시지 없이 BOM 저널 또는 판매 주문을 게시할 수 있습니다. 이 문제는 코드를 게시하는 차원 값이 키트 구성 요소와 키트 부모 항목 모두에 대해 "동일한 코드"로 정의되어 있더라도 발생합니다.

"항목 저널 줄에 사용되는 차원, 기본값인 10000으로 인해 오류가 발생했습니다. 이 상황에서 BOM 저널 또는 판매 주문을 게시할 때 표시될 [Item_Number] 항목의 차원 코드 [차원 code_Number]에 대해 선택한 차원 값 코드 [차원 값 code_Number]입니다.

이 문제는 다음 국가에 대해 키팅 기능이 포함된 제품에서 발생합니다.

  • 오스트레일리아
  • 오스트리아
  • 프랑스
  • 인도네시아
  • 말레이시아
  • 뉴질랜드
  • North America
  • 필리핀
  • 싱가포르
  • 태국

해결 방법

핫픽스 정보

이제 Microsoft에서 지원되는 핫픽스를 사용할 수 있습니다. 그러나 이 문서에 설명된 문제만 수정하기 위한 것입니다. 이 특정 문제가 발생하는 시스템에만 적용합니다. 이 핫픽스는 추가 테스트를 받을 수 있습니다. 따라서 이 문제의 심각한 영향을 받지 않는 경우 다음 Microsoft Dynamics NAV 2009 서비스 팩 또는 이 핫픽스가 포함된 다음 Microsoft Dynamics NAV 버전을 기다리는 것이 좋습니다.

참고 특별한 경우 Microsoft Dynamics 및 관련 제품에 대한 기술 지원 전문가가 특정 업데이트가 문제를 resolve 판단하는 경우 지원 호출에 대해 일반적으로 발생하는 요금이 취소될 수 있습니다. 특정 업데이트가 필요하지 않은 추가 지원 질문과 문제에는 일반 지원 비용이 적용됩니다.

            
          

설치 정보

Microsoft는 명시적이거나 묵시적인 보증 없이 설명용으로만 프로그래밍 예제를 제공합니다. 여기에는 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증이 포함되지만 이에 국한되지 않습니다. 이 문서에서는 설명 중인 프로그래밍 언어와 프로시저를 만들고 디버깅하는 데 사용되는 도구에 대해 잘 알고 있다고 가정합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 프로시저에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다.

참고 이 핫픽스를 설치하기 전에 모든 Microsoft Navision 클라이언트 사용자가 시스템에서 로그오프되었는지 확인합니다. 여기에는 NAS(Microsoft Navision Application Services) 클라이언트 사용자가 포함됩니다. 이 핫픽스를 구현할 때 로그온한 유일한 클라이언트 사용자여야 합니다.

이 핫픽스를 구현하려면 개발자 라이선스가 있어야 합니다.

Windows 로그인 창 또는 데이터베이스 로그인 창의 사용자 계정에 "SUPER" 역할 ID가 할당되는 것이 좋습니다. 사용자 계정에 "SUPER" 역할 ID를 할당할 수 없는 경우 사용자 계정에 다음 권한이 있는지 확인해야 합니다.

  • 변경할 개체에 대한 수정 권한입니다.
  • 시스템 개체 ID 5210 개체 및 System Object ID 9015 개체에 대한 Execute 권한입니다.

                
참고 데이터 복구를 수행해야 하는 경우가 아니면 데이터 저장소에 대한 권한이 있을 필요가 없습니다.

코드 변경 내용

참고 프로덕션 컴퓨터에 수정 사항을 적용하기 전에 제어된 환경에서 항상 코드 수정을 테스트합니다.
이 문제를 resolve BOM Jnl.-Post Line codeunit(32)의 Code 함수에서 코드를 다음과 같이 변경합니다.

기존 코드

...
          ELSE
            BuildTotalDisassemblyCost(BOMJnlLine,ItemJnlLine.Amount - "Total Cost");

          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2,FALSE);

          ReserveBOMJnlLine.TransferBOMJnlToItemJnlLine(BOMJnlLine,ItemJnlLine,"Quantity (Base)");
...

대체 코드

...
          ELSE
            BuildTotalDisassemblyCost(BOMJnlLine,ItemJnlLine.Amount - "Total Cost");

// Add the following line.
          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2);
// End of the added line.

          ReserveBOMJnlLine.TransferBOMJnlToItemJnlLine(BOMJnlLine,ItemJnlLine,"Quantity (Base)");
...

다음과 같이 BOM Jnl.-Post Line codeunit(32)의 PostTempJnlLines 함수에서 코드를 변경합니다.

기존 코드

...
             IF TempItemJnlLine.FIND('-') THEN
          REPEAT
            TempItemJnlLine2 := TempItemJnlLine;
            TransferDimToItemJnlLine(TempItemJnlLine,TempJnlLineDim2,TRUE);
            ItemJnlPostLine.RunWithCheck(TempItemJnlLine,TempJnlLineDim2);
            WITH TempItemJnlLine DO BEGIN
              Quantity := TempItemJnlLine2.Quantity;
...

대체 코드

...
            IF TempItemJnlLine.FIND('-') THEN
          REPEAT
            TempItemJnlLine2 := TempItemJnlLine;

// Add the following line.
            TransferDimToItemJnlLine(TempItemJnlLine,TempJnlLineDim2);
// End of the added line.

            ItemJnlPostLine.RunWithCheck(TempItemJnlLine,TempJnlLineDim2);
            WITH TempItemJnlLine DO BEGIN
              Quantity := TempItemJnlLine2.Quantity;  
...

                
다음과 같이 BOM Jnl.-Post Line codeunit(32)의 TransferDimToItemJnlLine 함수에서 코드를 변경합니다.

기존 코드

...
            TempJnlLineDim2."Journal Line No." := ItemJnlLine2."Line No.";
            TempJnlLineDim2."Allocation Line No." := 0;
            TempJnlLineDim2."Dimension Code" := TempJnlLineDim."Dimension Code";
            IF Consumption THEN
              IF DefDim.GET(DATABASE::Item,ItemJnlLine2."Item No.",TempJnlLineDim."Dimension Code") THEN BEGIN
                TempJnlLineDim2."Dimension Value Code" := DefDim."Dimension Value Code";
                CASE DefDim."Dimension Code" OF
                  GLSetup."Global Dimension 1 Code":
                    ItemJnlLine2."Shortcut Dimension 1 Code" := DefDim."Dimension Value Code";
                  GLSetup."Global Dimension 2 Code":
                    ItemJnlLine2."Shortcut Dimension 2 Code" := DefDim."Dimension Value Code";
                END;
              END ELSE
                TempJnlLineDim2."Dimension Value Code" := TempJnlLineDim."Dimension Value Code"
            ELSE
              TempJnlLineDim2."Dimension Value Code" := TempJnlLineDim."Dimension Value Code";
            TempJnlLineDim2.INSERT;
          UNTIL TempJnlLineDim.NEXT = 0;
        END;
...

대체 코드

...
            TempJnlLineDim2."Journal Line No." := ItemJnlLine2."Line No.";
            TempJnlLineDim2."Allocation Line No." := 0;
            TempJnlLineDim2."Dimension Code" := TempJnlLineDim."Dimension Code";

// Add the following line.
            TempJnlLineDim2."Dimension Value Code" := TempJnlLineDim."Dimension Value Code";
// End of the added line.
            TempJnlLineDim2.INSERT;
          UNTIL TempJnlLineDim.NEXT = 0;
        END;    
...

다음과 같이 BOM Jnl.-Post Line codeunit(32)의 PostResourceCost 함수에서 코드를 변경합니다.

기존 코드

...          
           ItemJnlLine.Kitting := TRUE;
          TotalCost := "Total Cost";
          UnitCost := "Unit Cost";
          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2,TRUE);
         IF OutputItemLedgEntryNo <> 0 THEN BEGIN
         ItemJnlLine."Item Shpt. Entry No." := OutputItemLedgEntryNo;
...

대체 코드

...
          ItemJnlLine.Kitting := TRUE;
          TotalCost := "Total Cost";
          UnitCost := "Unit Cost";

// Add the following line.
          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2);
// End of the added line.

         IF OutputItemLedgEntryNo <> 0 THEN BEGIN
         ItemJnlLine."Item Shpt. Entry No." := OutputItemLedgEntryNo;
...

필수 구성 요소

이 핫픽스를 적용하려면 Microsoft Dynamics NAV 2009 SP1이 설치되어 있어야 합니다.

제거 정보

이 핫픽스는 제거할 수 없습니다.

상태

Microsoft에서 이는 "적용 대상" 섹션에 나열된 Microsoft 제품에서의 문제임을 확인했습니다.

MICROSOFT 및/또는 해당 공급업체는 문서에 포함된 정보의 적합성, 안정성 또는 정확성 및 이 웹 사이트에 게시된 관련 그래픽("자료")에 대한 표현이나 보증을 하지 않습니다.

이 자료에는 기술적인 부정확성 또는 입력 체계 오류가 포함될 수 있으며 예고 없이 언제든지 수정될 수 있습니다. 관련 법률에서 허용하는 최대 범위까지 MICROSOFT 및/또는 해당 공급업체는 명시적, 묵시적 또는 법적 여부에 관계없이 타이틀, 비침해, 만족스러운 조건 또는 품질, 특정 목적에 대한 상품성 및 적합성을 포함하되 이에 국한되지 않는 명시적, 묵시적 또는 법적 조건에 관계없이 모든 표현, 보증 및 조건을 부인하고 제외합니다.