Fehlermeldung „Verkaufsrechnungszeile: Es gibt keine Verkaufsrechnungszeile im Filter", wenn Sie die Funktion „Gebuchte Belegzeilen zum Stornieren abrufen" für eine Bestellung in Microsoft Dynamics NAV 2009 ausführen
Dieser Artikel gilt für Microsoft Dynamics NAV für alle Länder und alle Sprachgebietsschemas.
Symptome
Wenn Sie die Funktion „Gebuchte Belegzeilen zum Stornieren abrufen" für einen Auftrag auf der Seite „Verkaufsreklamation" in Microsoft Dynamics NAV 2009 ausführen, wird die folgende Fehlermeldung angezeigt:
Verkaufsrechnungsposten: Im Filter gibt es keinen Verkaufsrechnungsposten.
Dieses Problem tritt bei den folgenden Produkten auf:
Microsoft Dynamics NAV 2009 R2
Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
Auflösung
Hotfix-Informationen
Ein unterstützter Hotfix ist jetzt von Microsoft verfügbar. Es dient jedoch lediglich der Behebung des in diesem Artikel beschriebenen Problems. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise weiteren Tests unterzogen. Wenn Sie von diesem Problem nicht schwerwiegend betroffen sind, empfehlen wir Ihnen daher, auf das nächste Microsoft Dynamics NAV 2009 Service Pack oder die nächste Microsoft Dynamics NAV-Version zu warten, die diesen Hotfix enthält.
Hinweis: In besonderen Fällen können die Gebühren, die normalerweise für Supportanrufe anfallen, storniert werden, wenn ein Mitarbeiter des technischen Supports für Microsoft Dynamics und verwandte Produkte feststellt, dass ein bestimmtes Update Ihr Problem lösen wird. Für zusätzliche Supportfragen und Probleme, die für das jeweilige Update nicht in Frage kommen, fallen die üblichen Supportkosten an.
Installationsinformationen
Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder stillschweigende Gewährleistung. Dazu gehören unter anderem stillschweigende Garantien der Marktgängigkeit oder Eignung für einen bestimmten Zweck. In diesem Artikel wird davon ausgegangen, dass Sie mit der demonstrierten Programmiersprache und den Tools vertraut sind, die zum Erstellen und Debuggen von Prozeduren verwendet werden. Microsoft-Supporttechniker können dabei helfen, die Funktionalität eines bestimmten Verfahrens zu erläutern. Sie werden diese Beispiele jedoch nicht ändern, um zusätzliche Funktionalität bereitzustellen oder Prozeduren zu erstellen, die Ihren spezifischen Anforderungen entsprechen.
Hinweis Bevor Sie diesen Hotfix installieren, stellen Sie sicher, dass alle Benutzer des Microsoft Dynamics NAV-Clients vom System abgemeldet sind. Dazu gehören Microsoft Dynamics NAV Application Server (NAS)-Dienste. Sie sollten der einzige Clientbenutzer sein, der angemeldet ist, wenn Sie diesen Hotfix implementieren.
Um diesen Hotfix zu implementieren, benötigen Sie eine Entwicklerlizenz.
Wir empfehlen, dem Benutzerkonto im Fenster „Windows-Anmeldungen" oder im Fenster „Datenbank-Anmeldungen" die Rollen-ID „SUPER" zuzuweisen. Wenn dem Benutzerkonto nicht die Rollen-ID „SUPER" zugewiesen werden kann, müssen Sie überprüfen, ob das Benutzerkonto über die folgenden Berechtigungen verfügt:
Die Änderungsberechtigung für das Objekt, das Sie ändern möchten.
Die Ausführungsberechtigung für das Systemobjekt-ID-5210-Objekt und für das Systemobjekt-ID-9015-Objekt
Objekt.
Hinweis Sie müssen keine Rechte an den Datenspeichern haben, es sei denn, Sie müssen eine Datenreparatur durchführen.
Codeänderungen
Hinweis: Testen Sie Codekorrekturen immer in einer kontrollierten Umgebung, bevor Sie die Korrekturen auf Ihren Produktionscomputern anwenden.
Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:
Ändern Sie den Code in der IsFirstDocLine-Funktion im Purch. Formular „Wareneingangszeilen" (5806) wie folgt:
Vorhandener Code...
FILTERGRUPPE(2);
PurchRcptLine.COPYFILTERS(Rec);
FILTERGRUPPE(0);
PurchRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Folgende Zeile löschen.
PurchRcptLine.FIND('-');
// Ende der gelöschten Zeile.
TempPurchRcptLine := PurchRcptLine;
TempPurchRcptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempPurchRcptLine."Zeilennr." DANN
...Ersatzcode
...
FILTERGRUPPE(2);
PurchRcptLine.COPYFILTERS(Rec);
FILTERGRUPPE(0);
PurchRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT PurchRcptLine.FINDFIRST DANN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempPurchRcptLine := PurchRcptLine;
TempPurchRcptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempPurchRcptLine."Zeilennr." DANN
...Ändern Sie den Code in der IsFirstDocLine-Funktion im Get Pst.Doc-RtrnRcptLn Subform Form (5853) wie folgt:
Vorhandener Code...
TempReturnRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempReturnRcptLine.FINDFIRST, DANN BEGINNEN
ReturnRcptLine.COPYFILTERS(Rec);
ReturnRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Folgende Zeile löschen.
ReturnRcptLine.FINDSET;
// Ende der gelöschten Zeile.
TempReturnRcptLine := ReturnRcptLine;
TempReturnRcptLine.INSERT;
ENDE;
...Ersatzcode
...
TempReturnRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempReturnRcptLine.FINDFIRST, DANN BEGINNEN
ReturnRcptLine.COPYFILTERS(Rec);
ReturnRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT ReturnRcptLine.FINDSET THEN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempReturnRcptLine := ReturnRcptLine;
TempReturnRcptLine.INSERT;
ENDE;
...Ändern Sie den Code in der Funktion „IsFirstDocLine" im Formular „Get Post.Doc-S.Cr.MemoLn Sbfrm" (5854) wie folgt:
Vorhandener Code...
TempSalesCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempSalesCrMemoLine.FINDFIRST, DANN BEGIN
SalesCrMemoLine.COPYFILTERS(Rec);
SalesCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Folgende Zeile löschen.
SalesCrMemoLine.FIND('-');
// Ende der gelöschten Zeile.
TempSalesCrMemoLine := SalesCrMemoLine;
TempSalesCrMemoLine.INSERT;
ENDE;
...Ersatzcode
...
TempSalesCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempSalesCrMemoLine.FINDFIRST, DANN BEGIN
SalesCrMemoLine.COPYFILTERS(Rec);
SalesCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT SalesCrMemoLine.FINDFIRST DANN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempSalesCrMemoLine := SalesCrMemoLine;
TempSalesCrMemoLine.INSERT;
ENDE;
...Ändern Sie den Code in der IsFirstDocLine-Funktion im Get Pst.Doc-RtrnShptLn Subform Form (5858) wie folgt:
Vorhandener Code...
TempReturnShptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempReturnShptLine.FINDFIRST, DANN BEGINNEN
ReturnShptLine.COPYFILTERS(Rec);
ReturnShptLine.SETRANGE("Dokument-Nr.", "Dokument-Nr.");
// Folgende Zeile löschen.
ReturnShptLine.FINDSET;
// Ende der gelöschten Zeile.
TempReturnShptLine := ReturnShptLine;
TempReturnShptLine.INSERT;
ENDE;
...Ersatzcode
...
TempReturnShptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempReturnShptLine.FINDFIRST, DANN BEGINNEN
ReturnShptLine.COPYFILTERS(Rec);
ReturnShptLine.SETRANGE("Dokument-Nr.", "Dokument-Nr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT ReturnShptLine.FINDSET THEN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempReturnShptLine := ReturnShptLine;
TempReturnShptLine.INSERT;
ENDE;
...Ändern Sie den Code in der Funktion „IsFirstDocLine" im Formular „Get Post.Doc-P.Cr.MemoLn Sbfrm" (5859) wie folgt:
Vorhandener Code...
TempPurchCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempPurchCrMemoLine.FINDFIRST, DANN BEGIN
PurchCrMemoLine.COPYFILTERS(Rec);
PurchCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Folgende Zeile löschen.
PurchCrMemoLine.FINDSET;
// Ende der gelöschten Zeile.
TempPurchCrMemoLine := PurchCrMemoLine;
TempPurchCrMemoLine.INSERT;
ENDE;
...Ersatzcode
...
TempPurchCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempPurchCrMemoLine.FINDFIRST, DANN BEGIN
PurchCrMemoLine.COPYFILTERS(Rec);
PurchCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT PurchCrMemoLine.FINDSET DANN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempPurchCrMemoLine := PurchCrMemoLine;
TempPurchCrMemoLine.INSERT;
ENDE;
...Ändern Sie den Code in der Funktion „IsFirstDocLine" im Formular „Get Service Shipment Lines" (5994) wie folgt:
Vorhandener Code...
TempServiceShptLine.SETRANGE("Dokument-Nr.", "Dokument-Nr.");
WENN NICHT TempServiceShptLine.FIND('-') DANN BEGINNEN
ServiceShptLine.COPYFILTERS(Rec);
ServiceShptLine.SETRANGE("Dokument-Nr.", "Dokument-Nr.");
// Folgende Zeile löschen.
ServiceShptLine.FIND('-');
// Ende der gelöschten Zeile.
TempServiceShptLine := ServiceShptLine;
TempServiceShptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempServiceShptLine."Zeilennr." DANN
...Ersatzcode
...
TempServiceShptLine.SETRANGE("Dokument-Nr.", "Dokument-Nr.");
WENN NICHT TempServiceShptLine.FIND('-') DANN BEGINNEN
ServiceShptLine.COPYFILTERS(Rec);
ServiceShptLine.SETRANGE("Dokument-Nr.", "Dokument-Nr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT ServiceShptLine.FINDFIRST DANN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempServiceShptLine := ServiceShptLine;
TempServiceShptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempServiceShptLine."Zeilennr." DANN
...Ändern Sie den Code in der IsFirstDocLine-Funktion im Service Lines Subform Form (6036) wie folgt:
Vorhandener Code...
WENN NICHT TempServLine.FIND('-') DANN BEGINNEN
ServLine.COPYFILTERS(Rec);
ServLine.SETRANGE("Dokumenttyp","Dokumenttyp");
ServLine.SETRANGE("Dokument-Nr.","Dokument-Nr.");
// Folgende Zeile löschen.
ServLine.FIND('-');
// Ende der gelöschten Zeile.
TempServLine := ServLine;
TempServLine.INSERT;
ENDE;
WENN „Zeilennr." = TempServLine."Leitungsnr." DANN
...Ersatzcode
...
WENN NICHT TempServLine.FIND('-') DANN BEGINNEN
ServLine.COPYFILTERS(Rec);
ServLine.SETRANGE("Dokumenttyp","Dokumenttyp");
ServLine.SETRANGE("Dokument-Nr.","Dokument-Nr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT ServLine.FINDFIRST DANN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempServLine := ServLine;
TempServLine.INSERT;
ENDE;
WENN „Zeilennr." = TempServLine."Leitungsnr." DANN
...Ändern Sie den Code in der Funktion „IsFirstDocLine" im Unterformular „Service Shipment Lines" (6037) wie folgt:
Vorhandener Code...
TempServShptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempServShptLine.FIND('-') DANN BEGINNEN
ServShptLine.COPYFILTERS(Rec);
ServShptLine.SETRANGE("Dokument-Nr.","Dokument-Nr.");
// Folgende Zeile löschen.
ServShptLine.FIND('-');
// Ende der gelöschten Zeile.
TempServShptLine := ServShptLine;
TempServShptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempServShptLine."Zeilennr." DANN
...Ersatzcode
...
TempServShptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempServShptLine.FIND('-') DANN BEGINNEN
ServShptLine.COPYFILTERS(Rec);
ServShptLine.SETRANGE("Dokument-Nr.","Dokument-Nr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT ServShptLine.FINDFIRST DANN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempServShptLine := ServShptLine;
TempServShptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempServShptLine."Zeilennr." DANN
...Ändern Sie den Code in der Funktion „IsFirstDocLine" im Unterformular „Service-Rechnungszeilen" (6038) wie folgt:
Vorhandener Code...
TempServInvLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempServInvLine.FIND('-') DANN BEGINNEN
ServInvLine.COPYFILTERS(Rec);
ServInvLine.SETRANGE("Dokument-Nr.","Dokument-Nr.");
// Folgende Zeile löschen.
ServInvLine.FIND('-');
// Ende der gelöschten Zeile.
TempServInvLine := ServInvLine;
TempServInvLine.INSERT;
ENDE;
EXIT("Zeilen-Nr." = TempServInvLine."Zeilen-Nr.");
...Ersatzcode
...
TempServInvLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempServInvLine.FIND('-') DANN BEGINNEN
ServInvLine.COPYFILTERS(Rec);
ServInvLine.SETRANGE("Dokument-Nr.","Dokument-Nr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT ServInvLine.FINDFIRST DANN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempServInvLine := ServInvLine;
TempServInvLine.INSERT;
ENDE;
EXIT("Zeilen-Nr." = TempServInvLine."Zeilen-Nr.");
...Ändern Sie den Code in der Funktion IsFirstDocLine im Service Cr. Füllen Sie das Unterformular „Notizzeilen" (6039) wie folgt aus:
Vorhandener Code...
TempServCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempServCrMemoLine.FIND('-') DANN BEGINNEN
ServCrMemoLine.COPYFILTERS(Rec);
ServCrMemoLine.SETRANGE("Dokument-Nr.","Dokument-Nr.");
// Folgende Zeile löschen.
ServCrMemoLine.FIND('-');
// Ende der gelöschten Zeile.
TempServCrMemoLine := ServCrMemoLine;
TempServCrMemoLine.INSERT;
ENDE;
EXIT("Zeilen-Nr." = TempServCrMemoLine."Zeilen-Nr.");
...Ersatzcode
...
TempServCrMemoLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempServCrMemoLine.FIND('-') DANN BEGINNEN
ServCrMemoLine.COPYFILTERS(Rec);
ServCrMemoLine.SETRANGE("Dokument-Nr.","Dokument-Nr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT ServCrMemoLine.FINDFIRST DANN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempServCrMemoLine := ServCrMemoLine;
TempServCrMemoLine.INSERT;
ENDE;
EXIT("Zeilen-Nr." = TempServCrMemoLine."Zeilen-Nr.");
...Ändern Sie den Code in der Funktion „IsFirstDocLine" im Formular „Get Return Receipt Lines" (6638) wie folgt:
Vorhandener Code...
TempReturnRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempReturnRcptLine.FIND('-') DANN BEGINNEN
ReturnRcptLine.COPYFILTERS(Rec);
ReturnRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Folgende Zeile löschen.
ReturnRcptLine.FIND('-');
// Ende der gelöschten Zeile.
TempReturnRcptLine := ReturnRcptLine;
TempReturnRcptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempReturnRcptLine."Zeilennr." DANN
...Ersatzcode
...
TempReturnRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempReturnRcptLine.FIND('-') DANN BEGINNEN
ReturnRcptLine.COPYFILTERS(Rec);
ReturnRcptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT ReturnRcptLine.FINDFIRST THEN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempReturnRcptLine := ReturnRcptLine;
TempReturnRcptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempReturnRcptLine."Zeilennr." DANN
...Ändern Sie den Code in der Funktion „IsFirstDocLine" im Formular „Get Return Shipment Lines" (6648) wie folgt:
Vorhandener Code...
TempReturnShptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempReturnShptLine.FIND('-') DANN BEGINNEN
ReturnShptLine.COPYFILTERS(Rec);
ReturnShptLine.SETRANGE("Dokument-Nr.", "Dokument-Nr.");
// Folgende Zeile löschen.
ReturnShptLine.FIND('-');
// Ende der gelöschten Zeile.
TempReturnShptLine := ReturnShptLine;
TempReturnShptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempReturnShptLine."Zeilennr." DANN
...Ersatzcode
...
TempReturnShptLine.SETRANGE("Dokumentnr.", "Dokumentnr.");
WENN NICHT TempReturnShptLine.FIND('-') DANN BEGINNEN
ReturnShptLine.COPYFILTERS(Rec);
ReturnShptLine.SETRANGE("Dokument-Nr.", "Dokument-Nr.");
// Fügen Sie die folgenden Zeilen hinzu.
WENN NICHT ReturnShptLine.FINDFIRST THEN
EXIT(FALSE);
// Ende der hinzugefügten Zeilen.
TempReturnShptLine := ReturnShptLine;
TempReturnShptLine.INSERT;
ENDE;
WENN „Zeilennr." = TempReturnShptLine."Zeilennr." DANN
...
Voraussetzungen
Um diesen Hotfix anwenden zu können, muss eines der folgenden Produkte installiert sein:
Microsoft Dynamics NAV 2009 R2
Microsoft Dynamics NAV 2009 SP1
Informationen zum Entfernen
Sie können diesen Hotfix nicht entfernen.
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Gilt für" aufgeführt sind.
Hinweis Dies ist ein „FAST PUBLISH"-Artikel, der direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden unverändert als Reaktion auf neu auftretende Probleme bereitgestellt. Aufgrund der schnellen Bereitstellung können die Materialien Tippfehler enthalten und jederzeit ohne Vorankündigung überarbeitet werden. Weitere Hinweise finden Sie in den Nutzungsbedingungen .
No comments:
Post a Comment