Fältet "Leveransadresskod" är tom oväntat när du kör funktionen Hämta förs.order för en specialorder i en särskild inköpsorder i Microsoft Dynamics NAV 2009

Mall: CPR - Navision koden Fix mall

PROGRAMFEL #: 156421 (Innehållsunderhåll)

Den här artikeln gäller för Microsoft Dynamics NAV för alla länder och språkversioner.

Symptom

När du kör funktionen Hämta förs.order för en specialorder i en särskild inköpsorder i Microsoft Dynamics NAV 2009, fältet Leveransadresskod i huvudet på särskilda inköpsordern är tom oväntat.
Det här problemet uppstår i följande produkter:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 servicepack 1 (SP1)

Lösning

Information om snabbkorrigeringen

En snabbkorrigering är nu tillgänglig från Microsoft. Den är endast avsedd att åtgärda det problem som beskrivs i denna artikel. Använd den bara på datorer där detta problem uppstår. Snabbkorrigeringen kan komma att testas igen. Om inte störs alltför mycket av detta problem rekommenderar vi att du väntar på Nästa service pack-versionen för Microsoft Dynamics NAV 2009 eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.

Obs! I särskilda fall, de avgifter som är normalt för support vara avgiftsfri om en supporttekniker för Microsoft Dynamics och relaterade produkter som bestämmer att en särskild uppdatering kan lösa ditt problem. De vanliga supportkostnaderna gäller för övriga supportfrågor och problem som inte berör den särskilda uppdateringen.

Om den här snabbkorrigeringen inte har bokförts för offentlig hämtning (vilket innebär att en offentlig URL för den här snabbkorrigeringen inte är tillgänglig i den här artikeln), distribution kräver tekniskt ansvarig, eskalering gruppmedlem eller godkännande av projektledaren och följande information gäller:

  • För att erhålla snabbkorrigeringen måste kunden ha drabbats programfel som beskrivs i avsnittet "Symptom".

  • Du måste följa de kunder du skickar korrigeringen till och förse dem med nästa service Pack-versionen när den blir tillgänglig (om ett service pack släpps).

Den här snabbkorrigeringen kommer att ingå i Microsoft Dynamics NAV 2009 R2.

VSFT-DynamicsNAVSE: 255792

Installationsinformation

Microsoft tillhandahåller programmeringsexempel endast utan garanti varken uttryckliga eller underförstådda. Detta inkluderar men är inte begränsat till, underförstådda garantier om säljbarhet eller lämplighet för ett särskilt ändamål. Den här artikeln förutsätter att du är bekant med det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till med att förklara funktionen hos en viss procedur, men kan inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov.

Obs! Innan du installerar den här snabbkorrigeringen måste du kontrollera att alla användare av Microsoft Navision-klient har loggat ut. Detta inkluderar Microsoft Navision Application Services (NAS) klientanvändare. Du ska endast klientanvändare som är inloggad när du implementerar den här snabbkorrigeringen.

Om du vill genomföra den här snabbkorrigeringen måste du ha en utvecklarlicens.

Vi rekommenderar att tilldelas användarkontot i fönstret Windows-inloggningar eller i fönstret databasinloggningar "SUPER" roll-ID. Om användarkontot inte kan tilldelas "SUPER" roll-ID måste du kontrollera att användarkontot har följande behörigheter:

  • Ändra behörighet för objektet ändras.

  • Körbehörighet för systemet objektet ID 5210 objektet och objektet System objektet ID 9015 .



Obs! Du har inte behörighet för datalager inte data reparation.

Kod ändras

Obs! Alltid åtgärdas testa koden i en kontrollerad miljö innan du installerar korrigeringar för produktionsdatorer.
Lös problemet så här:

  1. Ändra koden i GetDescriptionAndRcptName -funktionen i den i ReqJnlManagement kodmodul (330) enligt följande:
    Befintlig kod

    ...ELSE
    Description := '';

    // Delete the following lines.
    ReqLine.Type::Item:
    IF Item.GET(ReqLine."No.") THEN
    Description := Item.Description
    ELSE
    Description := '';
    // End of the lines.

    END;
    END;

    IF ReqLine."Vendor No." = '' THEN
    ...

    Ersättningskod

    ...ELSE
    Description := '';
    END;
    END;

    IF ReqLine."Vendor No." = '' THEN
    ...
  2. Lägga till en ny global variabel i inköpsförslagsnamn ändringsformulär.-gör ordning kodmodul (333) och ange variabeln enligt följande:

    • Namn: DropShptSpecialOrderExists

    • Datatyp: boolesk

  3. Lägga till en ny lokal variabel i funktionen InsertPurchOrderLine i inköpsorder ändringsformulär.-gör ordning kodmodul (333) och ange variabeln enligt följande:

    • Namn: SalesHeader

    • Datatyp: post

    • Undertyp: försäljningshuvudet

  4. Lägga till en ny lokal variabel i funktionen InsertPurchOrderLine i inköpsorder ändringsformulär.-gör ordning kodmodul (333) och ange variabeln enligt följande:

    • Namn: DropShptSplOrderDiffAddress

    • Datatyp: Boolean

  5. Ändra koden i funktionen InsertPurchOrderLine i den inköpsorder ändringsformulär-göra ordning kodmodul (333) enligt följande:
    Befintlig kod

    ...WITH ReqLine2 DO BEGIN
    IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
    EXIT;


    IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
    (PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
    (PrevShipToCode <> "Ship-to Code") OR
    (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
    (PurchOrderHeader."Currency Code" <> "Currency Code") OR

    // Delete the following line.
    (PrevPurchCode <> "Purchasing Code")

    THEN BEGIN
    ...

    Ersättningskod

    ...WITH ReqLine2 DO BEGIN
    IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
    EXIT;

    // Add the following lines.
    DropShptSpecialOrderExists := FALSE;
    IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN
    DropShptSpecialOrderExists := PurchOrderHeader.DropShptSplOrderExists(SalesHeader);
    IF DropShptSpecialOrderExists THEN
    DropShptSplOrderDiffAddress :=
    NOT PurchOrderHeader.CheckAndAddShipToAdd(SalesHeader,FALSE);
    END;
    // End of the lines.

    IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
    (PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
    (PrevShipToCode <> "Ship-to Code") OR
    (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
    (PurchOrderHeader."Currency Code" <> "Currency Code") OR

    // Add the following lines.
    (PrevPurchCode <> "Purchasing Code") OR
    (DropShptSplOrderDiffAddress)
    // End of the lines.

    THEN BEGIN
    ...
  6. Lägga till en ny lokal variabel i funktionen InsertHeader i inköpsorder ändringsformulär.-gör ordning kodmodul (333) och ange variabeln enligt följande:

    • Namn: SalesHeader

    • Datatyp: - post

    • Undertyp: försäljningshuvudet

  7. Ändra koden i funktionen InsertHeader i den inköpsorder ändringsformulär-göra ordning kodmodul (333) enligt följande:
    Befintlig kod

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    PurchOrderHeader.MODIFY;
    ...

    Ersättningskod

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    // Add the following lines.
    IF DropShptSpecialOrderExists THEN BEGIN
    SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.");
    PurchOrderHeader."Ship-to Name" := SalesHeader."Ship-to Name";
    PurchOrderHeader."Ship-to Name 2" := SalesHeader."Ship-to Name 2";
    PurchOrderHeader."Ship-to Address" := SalesHeader."Ship-to Address";
    PurchOrderHeader."Ship-to Address 2" := SalesHeader."Ship-to Address 2";
    PurchOrderHeader."Ship-to Post Code" := SalesHeader."Ship-to Post Code";
    PurchOrderHeader."Ship-to City" := SalesHeader."Ship-to City";
    PurchOrderHeader."Ship-to Contact" := SalesHeader."Ship-to Contact";
    END;
    // End of the lines.

    PurchOrderHeader.MODIFY;
    ...
  8. Ändra koden i funktionen EnterPurchaseItemCrossRef i kodmodul för Dist. Integration (5702) enligt följande:
    Befintlig kod

    ...IF Found THEN BEGIN
    "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
    "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
    "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";

    // Delete the following lines.
    IF ItemCrossReference.Description <> '' THEN BEGIN
    Description := ItemCrossReference.Description;
    "Description 2" := '';
    END;
    // End of the lines.

    END ELSE BEGIN
    "Cross-Reference No." := '';
    "Cross-Reference Type" := "Cross-Reference Type"::" ";
    "Cross-Reference Type No." := '';

    // Delete the following lines.
    IF "Variant Code" <> '' THEN BEGIN
    ItemVariant.GET("No.","Variant Code");
    Description := ItemVariant.Description;
    "Description 2" := ItemVariant."Description 2";
    END ELSE BEGIN
    Item.GET("No.");
    Description := Item.Description;
    "Description 2" := Item."Description 2";
    END;
    // End of the lines.

    GetItemTranslation;
    ...

    Ersättningskod

    ...IF Found THEN BEGIN
    "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
    "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
    "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";
    END ELSE BEGIN
    "Cross-Reference No." := '';
    "Cross-Reference Type" := "Cross-Reference Type"::" ";
    "Cross-Reference Type No." := '';
    GetItemTranslation;
    ...
  9. Ändra koden i funktionen GetSpecialOrders i kodmodul för Dist. Integration (5702) enligt följande:
    Befintlig kod

    ...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
    TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Delete the following line.
    PurchHeader.SetShipToForSpecOrder;

    PurchLine.LOCKTABLE;
    ...

    Ersättningskod

    ...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
    TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Add the following lines.
    IF DropShptSplOrderExists(SalesHeader) THEN
    CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the lines.

    PurchLine.LOCKTABLE;
    ...
  10. Ändra koden i funktionen TransfldsFromSalesToPurchLine i kodmodul för Kopiera dokument Mgt. (6620) enligt följande:
    Befintlig kod

    ...VALIDATE("Direct Unit Cost");
    END;
    ...

    Ersättningskod

    ...VALIDATE("Direct Unit Cost");

    // Add the following lines.
    Description := FromSalesLine.Description;
    "Description 2" := FromSalesLine."Description 2";
    // End of the lines.

    END;
    ...
  11. Ändra koden i koden i inköp.-få släppa artikelleverans kodmodul (76) enligt följande:
    Befintlig kod 1

    ...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    PurchLine.LOCKTABLE;
    ...

    Ersättningskod 1

    ...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Add the following line.
    IF DropShptSplOrderExists(SalesHeader) THEN
    CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the lines.

    PurchLine.LOCKTABLE;
    ...

    Befintlig kod 2

    ...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
    PurchLine.Description := SalesLine.Description;
    PurchLine."Sales Order No." := SalesLine."Document No.";
    ...

    Ersättningskod 2

    ...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
    PurchLine.Description := SalesLine.Description;

    // Add the following line.
    PurchLine."Description 2" := SalesLine."Description 2";

    PurchLine."Sales Order No." := SalesLine."Document No.";
    ...
  12. Ändra koden i InsertReqWkshLine i rapporten Hämta förs.order (698) enligt följande:
    Befintlig kod

    ..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";
    SalesHeader.GET(1,SalesLine."Document No.");
    IF SpecOrder <> 1 THEN
    ...

    Ersättningskod

    ..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";

    // Add the following lines.
    Description := SalesLine.Description;
    "Description 2" := SalesLine."Description 2";
    // End of the lines.

    SalesHeader.GET(1,SalesLine."Document No.");
    IF SpecOrder <> 1 THEN
    ...
  13. Lägg till en ny global variabel i tabellen Inköpshuvud (38) och ange variabeln enligt följande:

    • Namn: NameAddressDetails

    • Datatyp: Text

    • Längd: 512

  14. Lägg till en ny global variabel i tabellen Inköpshuvud (38) och ange variabeln enligt följande:

    • Namn: NameAddressDetails2

    • Datatyp: Text

    • Längd: 512

  15. Lägg till en ny textkonstant i tabellen Inköpshuvud (38) och ange Textkonstanten enligt följande:

    • Namn: Text051

    • ConstValue: fältet %1 på inköpsordern %2 måste vara samma som på sales order %3.

  16. Skapa en ny CheckAndAddShipToAdd funktion i tabellen Inköpshuvud (38). Gör så här:

    1. Lägga till en ny lokal parameter i funktionen CheckAndAddShipToAdd i tabellen Inköpshuvud (38) och ange parametern enligt följande:

      • Var: No

      • Namn: SalesHeader

      • Datatyp: post

      • Undertyp: försäljningshuvudet

    2. Lägga till en ny lokal parameter i funktionen CheckAndAddShipToAdd i tabellen Inköpshuvud (38) och ange parametern enligt följande:

      • Var: No

      • Namn: ShowError

      • Datatyp: boolesk

    3. Lägg till ett returvärde i funktionen CheckAndAddShipToAdd i tabellen Inköpshuvud (38) och ange sedan det returnera värdet enligt följande:

      • Returtyp: boolesk

    4. Lägga till en ny lokal variabel i funktionen CheckAndAddShipToAdd i tabellen Inköpshuvud (38) och ange variabeln enligt följande:

      • Namn: PurchLine2

      • Datatyp: post

      • Undertyp: PurchLine2

    5. Lägg till följande kod i funktionen CheckAndAddShipToAdd i tabellen Inköpshuvud (38):

      IF ShowError THEN BEGINPurchLine2.RESET;
      PurchLine2.SETRANGE("Document Type","Document Type"::Order);
      PurchLine2.SETRANGE("Document No.","No.");
      IF NOT PurchLine2.ISEMPTY THEN BEGIN
      IF "Ship-to Name" <> SalesHeader."Ship-to Name" THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Name"),"No.",SalesHeader."No.");
      IF "Ship-to Name 2" <> SalesHeader."Ship-to Name 2" THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Name 2"),"No.",SalesHeader."No.");
      IF ("Ship-to Address" <> SalesHeader."Ship-to Address") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Address"),"No.",SalesHeader."No.");
      IF ("Ship-to Address 2" <> SalesHeader."Ship-to Address 2") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Address 2"),"No.",SalesHeader."No.");
      IF ("Ship-to Post Code" <> SalesHeader."Ship-to Post Code") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Post Code"),"No.",SalesHeader."No.");
      IF ("Ship-to City" <> SalesHeader."Ship-to City") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to City"),"No.",SalesHeader."No.");
      IF ("Ship-to Contact" <> SalesHeader."Ship-to Contact") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Contact"),"No.",SalesHeader."No.");
      END ELSE BEGIN
      // no purchase line exists
      "Ship-to Name" := SalesHeader."Ship-to Name";
      "Ship-to Name 2" := SalesHeader."Ship-to Name 2";
      "Ship-to Address" := SalesHeader."Ship-to Address";
      "Ship-to Address 2" := SalesHeader."Ship-to Address 2";
      "Ship-to Post Code" := SalesHeader."Ship-to Post Code";
      "Ship-to City" := SalesHeader."Ship-to City";
      "Ship-to Contact" := SalesHeader."Ship-to Contact";
      END;
      END ELSE BEGIN
      NameAddressDetails :=
      SalesHeader."Ship-to Name" + SalesHeader."Ship-to Name 2" +
      SalesHeader."Ship-to Address" + SalesHeader."Ship-to Address 2" +
      SalesHeader."Ship-to Post Code" + SalesHeader."Ship-to City" +
      SalesHeader."Ship-to Contact";
      IF NameAddressDetails2 = '' THEN
      NameAddressDetails2 := NameAddressDetails;
      EXIT(NameAddressDetails2 = NameAddressDetails);
      END;
  17. Skapa en ny DropShptSplOrderExists funktion i tabellen Inköpshuvud (38). Gör så här:

    1. Lägga till en ny lokal parameter i funktionen DropShptSplOrderExists i tabellen Inköpshuvud (38) och ange parametern enligt följande:

      • Var: No

      • Namn: SalesHeader

      • Datatyp: post

      • Undertyp: försäljningshuvudet

    2. Lägga till en typ för returvärdet i funktionen DropShptSplOrderExists i tabellen Inköpshuvud (38) och ange det returnera värdet enligt följande:

      • Returtyp: boolesk

    3. Lägga till en ny lokal variabel i funktionen DropShptSplOrderExists i tabellen Inköpshuvud (38) och ange variabeln enligt följande:

      • Namn: SalesLine2

      • Datatyp: post

      • Undertyp: försäljningsraden

    4. Lägg till följande kod i funktionen DropShptSplOrderExists i tabellen Inköpshuvud (38):

      // returns TRUE if sales is either Drop Shipment of Special OrderSalesLine2.RESET;
      SalesLine2.SETRANGE("Document Type",SalesLine2."Document Type"::Order);
      SalesLine2.SETRANGE("Document No.",SalesHeader."No.");
      SalesLine2.SETRANGE("Drop Shipment",TRUE);
      IF NOT SalesLine2.ISEMPTY THEN
      EXIT(TRUE);

      SalesLine2.SETRANGE("Drop Shipment");
      SalesLine2.SETRANGE("Special Order",TRUE);
      EXIT(NOT SalesLine2.ISEMPTY);

Förutsättningar

Du måste ha någon av följande produkter som har installerat den här snabbkorrigeringen:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 servicepack 1 (SP1)

Information om borttagning

Du kan inte ta bort den här snabbkorrigeringen.

Status

Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".

Obs! Detta är en "SNABBPUBLICERING"-artikel skapad direkt från Microsoft support-organisationen. Informationen häri tillhandahålls i befintligt skick som svar på nya problem. Till följd av hastigheten för att göra det tillgängligt kan materialet innehålla typografiska fel och kan ändras när som helst utan föregående meddelande. Se Villkoren för användning för andra överväganden.

Författare: avannini
Skribent: v-zhipen
Teknisk granskare: avannini
Redigerare:

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×