Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Dieser Artikel gilt für Microsoft Dynamics NAV für alle Länder und alle Gebietsschemas.

Problembeschreibung

Nach dem Ausführen der Funktion Auftrag erhalten ein Spezialauftrag in einem speziellen Bestellung in Microsoft Dynamics NAV 2009, Lief Feld der speziellen Bestellung leer unerwartet.
Dieses Problem tritt in den folgenden Produkten auf:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Servicepack 1 (SP1)

Problemlösung

Hotfix-Informationen

Ein unterstützter Hotfix ist inzwischen von Microsoft erhältlich. Allerdings ist es lediglich zur Behebung dieses Problems. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise noch getestet. Wenn Ihr System durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfehlen wir, dass Sie warten auf das nächste Servicepack für Microsoft Dynamics NAV 2009 oder die nächste Microsoft Dynamics NAV-Version, die diesen Hotfix enthält.

Hinweis In besonderen Fällen bestimmt Gebühren fallen normalerweise Support aufrufen Wenn Experte Support für Microsoft Dynamics und zugehörige Produkte storniert werden können, dass ein bestimmtes Update Ihr Problem behebt. Die normalen Supportkosten gilt für zusätzliche Supportfragen und Probleme, die nicht für das betreffende Update qualifizieren.

Informationen zur Installation

Microsoft bietet Programmierbeispiele lediglich zur Veranschaulichung, ohne ausdrückliche oder konkludente Gewährleistung. Dies beinhaltet, ist jedoch nicht beschränkt auf, konkludente Gewährleistungen der Tauglichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der von Beispielen verwendeten Programmiersprache und den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supportmitarbeiter können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, sie werden jedoch diese Beispiele nicht verändern um eine erweiterte Funktionalität aufzuzeigen oder Prozeduren entwickeln, die Ihren Anforderungen entsprechen.

Hinweis Bevor Sie diesen Hotfix installieren, stellen Sie sicher, dass alle Microsoft Navision-Clientbenutzer vom System abgemeldet werden. Dies gilt auch für Clientbenutzer der Microsoft Navision Application Services (NAS). Sie sollte nur-Client-Benutzers, der angemeldet ist, wenn Sie diesen Hotfix installieren.

Muss eine Entwicklerlizenz verfügen, um diesen Hotfix installieren können.

Es wird empfohlen, das Benutzerkonto im Fenster Windows-Benutzernamen oder im Fenster Datenbank-Anmeldenamen "SUPER" Rollen-ID zugewiesen werden Wenn das Benutzerkonto die Rollen-ID "SUPER" nicht zugeordnet werden kann, müssen Sie sicherstellen, dass das Benutzerkonto die folgenden Berechtigungen verfügt:

  • Änderungsberechtigung für das Objekt, das Sie ändern.

  • Ausführungsberechtigung für System Object ID 5210 und System Object ID 9015 -Objekt.



Hinweis Sie müssen keine Rechte für die Datenspeicher haben, es sei denn, Sie müssen eine Datenreparatur durchführen.

Ändern von Code

Hinweis Testen Sie Programmcodeverbesserungen generell erst in einem Testsytem, bevor Sie sie im Produktionssystem verwenden.
Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:

  1. Ändern Sie den Code in der Funktion GetDescriptionAndRcptName in der ReqJnlManagement-Codeunit (330) wie folgt:
    Vorhandener code

    ...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
    ...

    Neuer code

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

    IF ReqLine."Vendor No." = '' THEN
    ...
  2. Fügen Sie eine neue globale Variable im Bestellvorschlag Vorsch.-Auftrag Codeunit (333) und geben Sie die Variable wie folgt:

    • Name: DropShptSpecialOrderExists

    • Datentyp: Boolean

  3. Fügen Sie eine neue lokale Variable in der Funktion InsertPurchOrderLine im Bestellvorschlag vorschlagen.-Auftrag Codeunit (333) und geben Sie die Variable wie folgt:

    • Name: SalesHeader

    • Datentyp: Datensatz

    • Untertyp: Verkaufskopf

  4. Fügen Sie eine neue lokale Variable in der Funktion InsertPurchOrderLine im Bestellvorschlag vorschlagen.-Auftrag Codeunit (333) und geben Sie die Variable wie folgt:

    • Name: DropShptSplOrderDiffAddress

    • Datentyp: Boolean

  5. Ändern Sie den Code in der Funktion InsertPurchOrderLine im Bestellvorschlag vorschlagen.-Auftrag Codeunit (333) wie folgt erstellen:
    Vorhandener code

    ...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
    ...

    Neuer code

    ...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. Fügen Sie eine neue lokale Variable in der Funktion InsertHeader im Bestellvorschlag vorschlagen.-Auftrag Codeunit (333) und geben Sie die Variable wie folgt:

    • Name: SalesHeader

    • Datentyp: Datensatz

    • Untertyp: Verkaufskopf

  7. Ändern Sie den Code in der Funktion InsertHeader im Bestellvorschlag vorschlagen.-Auftrag Codeunit (333) wie folgt erstellen:
    Vorhandener code

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    PurchOrderHeader.MODIFY;
    ...

    Neuer code

    ...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. Ändern Sie den Code in der Funktion EnterPurchaseItemCrossRef Verteilung Integration-Modul (5702) wie folgt:
    Vorhandener code

    ...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;
    ...

    Neuer code

    ...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. Ändern Sie den Code in der Funktion GetSpecialOrders Verteilung Integration-Modul (5702) wie folgt:
    Vorhandener code

    ...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;
    ...

    Neuer code

    ...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. Ändern Sie den Code in der Funktion TransfldsFromSalesToPurchLine in der Codeunit "Copy Document Mgt" (6620) wie folgt:
    Vorhandener code

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

    Neuer code

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

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

    END;
    ...
  11. Ändern Sie den Code in den Code im Feld Eink.-Lieferung Drop Codeunit (76) wie folgt abgerufen:
    Vorhandener Code 1

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

    PurchLine.LOCKTABLE;
    ...

    Neuer Code 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;
    ...

    Vorhandener Code 2

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

    Neuer Code 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. Ändern Sie den Code in der InsertReqWkshLine im Bericht Aufträge holen (698) wie folgt:
    Vorhandener code

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

    Neuer code

    ..."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. Fügen Sie eine neue globale Variable in der Verkaufskopftabelle (38), und geben Sie die Variable wie folgt:

    • Name: NameAddressDetails

    • Datentyp: Text

    • Länge: 512

  14. Fügen Sie eine neue globale Variable in der Verkaufskopftabelle (38), und geben Sie die Variable wie folgt:

    • Name: NameAddressDetails2

    • Datentyp: Text

    • Länge: 512

  15. Fügen Sie eine neue Textkonstante in der Verkaufskopftabelle (38), und geben Sie die Textkonstante wie folgt:

    • Name: Text051

    • ConstValue: Feld %1 in Bestellung %2 muss dasselbe wie Verkaufs-%3.

  16. Erstellen Sie eine neue CheckAndAddShipToAdd -Funktion in der Verkaufskopftabelle (38). Gehen Sie hierzu folgendermaßen vor:

    1. Fügen Sie einen neuen lokalen Parameter in der CheckAndAddShipToAdd -Funktion in der Verkaufskopftabelle (38), und geben Sie den Parameter wie folgt:

      • Var: No

      • Name: SalesHeader

      • Datentyp: Datensatz

      • Untertyp: Verkaufskopf

    2. Fügen Sie einen neuen lokalen Parameter in der CheckAndAddShipToAdd -Funktion in der Verkaufskopftabelle (38), und geben Sie den Parameter wie folgt:

      • Var: No

      • Name: ShowError

      • Datentyp: Boolean

    3. Fügen Sie einen Wert in der Funktion CheckAndAddShipToAdd in der Verkaufskopftabelle (38), und geben Sie den Wert wie folgt:

      • Rückgabetyp: Boolean

    4. Fügen Sie eine neue lokale Variable in der Funktion CheckAndAddShipToAdd in der Verkaufskopftabelle (38), und geben Sie die Variable wie folgt:

      • Name: PurchLine2

      • Datentyp: Datensatz

      • Untertyp: PurchLine2

    5. Fügen Sie folgenden Code in der Funktion CheckAndAddShipToAdd in der Verkaufskopftabelle (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. Erstellen Sie eine neue DropShptSplOrderExists -Funktion in der Verkaufskopftabelle (38). Gehen Sie hierzu folgendermaßen vor:

    1. Fügen Sie einen neuen lokalen Parameter in der DropShptSplOrderExists -Funktion in der Verkaufskopftabelle (38), und geben Sie den Parameter wie folgt:

      • Var: No

      • Name: SalesHeader

      • Datentyp: Datensatz

      • Untertyp: Verkaufskopf

    2. Fügen Sie ein Rückgabewert in der Funktion DropShptSplOrderExists in der Verkaufskopftabelle (38 hinzu), und geben Sie den Wert wie folgt:

      • Rückgabetyp: Boolean

    3. Fügen Sie eine neue lokale Variable in der Funktion DropShptSplOrderExists in der Verkaufskopftabelle (38), und geben Sie die Variable wie folgt:

      • Name: SalesLine2

      • Datentyp: Datensatz

      • Untertyp: Verkaufszeile

    4. Fügen Sie folgenden Code in der Funktion DropShptSplOrderExists in der Verkaufskopftabelle (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);

Voraussetzungen

Sie müssen eines der folgenden Produkte verfügen, um diesen Hotfix installieren:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Servicepack 1 (SP1)

Informationen zur Deinstallation

Dieser Hotfix kann nicht entfernt werden.

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Hinweis Dies ist ein im Schnellverfahren veröffentlichter Artikel, der direkt in der Microsoft Support-Organisation erstellt wurde. Die hierin enthaltenen Informationen werden ohne Mängelgewähr in Reaktion auf neue Probleme bereitgestellt. Aufgrund der schnellen Bereitstellung kann das Material möglicherweise typografische Fehler enthalten und jederzeit ohne vorherige Ankündigung geändert werden. Weitere Hinweise finden Sie unter Geschäftsbedingungen .

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×