[GELÖST] Sales Header / Lines Spalte Sortieren und Wert....

12. Juli 2017 08:12

Guten Morgen zusammen,

als Neuling in der Programmierung stehe ich vor folgendem Problem:
Ich möchte eine Spalte in den Lines (sales line) sortieren und den ersten Wert abgreifen und diesen in ein Feld des Headers schreiben...
Eigentlich, so dachte ich, relativ easy... aber irgendwie klappt es nicht..

Hier mal das, was ich bisher gemacht habe... (in Tabelle Sales Lines)

RESET;
SETRANGE("Document Type","Document Type");
SETRANGE("Document No.","No.");
SETFILTER("Qty. to Ship",'>0');
ASCENDING(TRUE);
IF NOT FINDFIRST THEN
SalesHeader."Shipment Date" := 0D
ELSE
SalesHeader."Shipment Date" := "Shipment Date";

Ich freue mich auf eure Antworten..
Zuletzt geändert von besi22 am 13. Juli 2017 09:24, insgesamt 1-mal geändert.

Re: Sales Header / Lines Spalte Sortieren und Wert abgreifen

12. Juli 2017 09:04

Hallo,

was möchtest du denn erreichen?

Irgendwie macht der Code noch keinen Sinn, und kann das Standard-NAV schön durcheinander bringen.

Gruß Fiddi

Re: Sales Header / Lines Spalte Sortieren und Wert abgreifen

12. Juli 2017 09:13

Das ASCENDING wirkt sich immer auf den gesetzten Schlüssel aus. Bei dir ist aktuell keiner gesetzt, daher greift der Primärschlüssel.
Für die Sortierung einer Record Variable brauchst du
Code:
DeinRecord.SETCURRENTKEY(Sort. Feld 1,Sort Feld 2);


In deinem Fall müsstest du nach "Shipment Date" sortieren.

Das ist aber sehr gefährlich. Du solltest nur Schlüssel setzen, die auch wirklich existieren. Setzt du einen Schlüssel der nicht existiert, kann es zu erheblichen Performanceproblemen kommen (je nach Datenmenge natürlich).
Auch wenn du falsche Schlüssel nutzt oder zu viele neue Schlüssel anlegst, kann es zu Problemen kommen. Gerade bei den Tabellen Sales Header und Sales Line ist das mit Vorsicht zu genießen.

Re: Sales Header / Lines Spalte Sortieren und Wert abgreifen

12. Juli 2017 09:15

Hallo..
ja, das habe ich auch gemerkt, dass NAV da Probleme mit hat.
Ich möchte die Zeilen des Auftrags filtern auf die mit Restmenge > 0 und dann die Spalte Lieferdatum aufsteigend sortieren. Anschließend das früheste LD in ein Feld im Header schreiben...

Re: Sales Header / Lines Spalte Sortieren und Wert abgreifen

12. Juli 2017 09:41

Ich möchte die Zeilen des Auftrags filtern auf die mit Restmenge > 0 und dann die Spalte Lieferdatum aufsteigend sortieren. Anschließend das früheste LD in ein Feld im Header schreiben


Ah,Ja :wink:

Dann müssen wirdas nur noch programmieren: :mrgreen:
Code:
RESET;
SETCURRENTKEY("Shipment Date");  // wir müssen definieren, wonach wir sortieren wollen
SETRANGE("Document Type","Document Type");
SETRANGE("Document No.","No.");
SETFILTER("Outstanding Quantity",'>0'); // Qty. to Ship ist die aktuelle Liefermenge, nicht die Restmenge, das funktioniert in einem logistischen Lager nicht, da ist "Qty. to Ship" normalerweise 0.
                                        // Auch ein Einrichtungsparameter kann dafür sorgen, das "Qty. to Ship" 0 ist.
SETFILTER("Shipment Date",'<>%1',0D);   // könnte ja sein da steht in einem nichts drin
// ASCENDING(TRUE);                     // brauchen wir nicht, das kleinste Datum steht eh oben
IF FINDFIRST THEN
  SalesHeader."First Shipment Date" := 0D // Neues Feld dafür verwenden, du bringst sonst die Datumsfelder im Kopf durcheinander
ELSE
  SalesHeader."Shipment Date" := "First Shipment Date";


Das heißt dann aber auch, dass das "Erste Lieferdatum" nach der letzten Lieferung auf 0D gesetzt wird.

Gruß Fiddi

Re: Sales Header / Lines Spalte Sortieren und Wert abgreifen

12. Juli 2017 09:49

Danke schonmal... ganz soooooooo falsch lag ich dann ja nicht ;)
Aber outstanding qty macht natürlich Sinn... :roll:
Zuletzt geändert von McClane am 12. Juli 2017 09:54, insgesamt 1-mal geändert.
Grund: Bitte Beiträge nicht komplett zitieren!