Lagerhaltungsdatenkarte aktualisieren.

30. Juni 2006 16:07

Hallo,

wenn eine Bestellung gebucht wird, ändert sich in der Artikelkarte der Letzte EK , nicht aber in der Lagerhaltungsdatenkarte. Ist das so richtig? Erst wenn ich aus der Artikelkarte die Lagerhaltungsdaten neu erstelle, habe ich dort den Letzten EK.

Gibt es noch mehr solcher Felder, wo Buchungen getätigt werden, die sich nicht direkt in der Lagerhaltungsdatenkarte wiederfinden? Lagerbestände und Einstandspreise holt die Lagerhaltungsdatenkarte sich ja direkt aus den Artikelposten.

Danke

30. Juni 2006 17:40

Wenn der Lagerortcode zusammen mit Artikelnr. und Variante der Bestellung mit einem Lagerhaltungsdatensatz übereinstimmen, dann wird der "EK-Preis (neuester)" hier mit dem letzten EK überschrieben (wenn dieser ungleich 0 ist ). Das besorgt die Funktion UpdateUnitCostSKU in Codeunit 5804 ItemCostManagement.

3. Juli 2006 11:02

Kowa hat geschrieben:Wenn der Lagerortcode zusammen mit Artikelnr. und Variante der Bestellung mit einem Lagerhaltungsdatensatz übereinstimmen, dann wird der "EK-Preis (neuester)" hier mit dem letzten EK überschrieben (wenn dieser ungleich 0 ist ). Das besorgt die Funktion UpdateUnitCostSKU in Codeunit 5804 ItemCostManagement.


In der Tat ist das so, ich habe wohl im falschen Lager nachgeschaut :oops:
Dankeschön.

3. Juli 2006 14:29

Gibt es noch mehr solcher Felder, wo Buchungen getätigt werden, die sich nicht direkt in der Lagerhaltungsdatenkarte wiederfinden? Lagerbestände und Einstandspreise holt die Lagerhaltungsdatenkarte sich ja direkt aus den Artikelposten.



Habe nun noch ein bischen rumgeschaut, bei der Erstellung der Lagerhaltungsdaten ist es ja möglich vorhandene Lagerhaltungsdaten zu löschen. Die Karte wird dann mit dementsprechenden Infos aus der Artikelkarte neu versorgt. Bereits gepflegte Daten wie Bestellmenge, Minimalbestand usw.. gehen dabei verloren.

Arbeiten viele von euch mit Lagerhaltungsdatenkarte? Scheint zwar vorteilhafter damit zu arbeiten, aber warum auch immer habe ich gewisse zweifel an der Aktualitaet der Daten in der Karte.

1. August 2006 12:58

Wenn ich auf der Lagerhaltungsdatenkarte den Einstandspreis durchschn. anschaue, wird dort der Durchschnitt über alle Lager gezeigt. Unabhängig ob ich Lagerortfilter angebe oder nicht. In der Artikelkarte ändert sich der EP Durchschn. wenn ich einen Lagerortfilter setze.

Wo müsste ich nun schauen, um diesen Filter in der Lagerhaltungsdatenkarte "zu lockern". So das der EP pro angebenes Lager in der Lagerhaltungsdatenkarte angezeigt wird.

Danke.

21. September 2006 18:46

Hi,

ich wieder ;)

Möchte nun eine Funktion schreiben welche mir die Lagerhaltungsdaten "erneuert".

Hat evtl. jemand eine Idee wie man folgende Funktion "verschönern" könnte.
Würde am liebsten beim Aufruf des Report den Filter auf die Lagerorte setzen.Anstatt spaeter die überflüssigen zu löschen, das gelingt mir irgendwie nicht.

Danke.



Code:
// Alle vorherigen Lagerhaltungsdaten löschen
SKU.DELETEALL;

// Lagerhaltungsdaten Report starten
CreateSKU.USEREQUESTFORM := FALSE;
CreateSKU.RUN;

// Lager löschen welche nicht DDORF und KAARST sind
SKU1.SETFILTER("Location Code",'<>DDORF&<>KAARST');
WHILE SKU1.FIND('-') DO REPEAT
  SKU1.DELETE;
UNTIL SKU1.NEXT = 0;

21. September 2006 20:29

elTorito hat geschrieben:Würde am liebsten beim Aufruf des Report den Filter auf die Lagerorte setzen.Anstatt spaeter die überflüssigen zu löschen, das gelingt mir irgendwie nicht.

versuchs doch mal so:

Im Report machst du eine Funktion namens SETZEFILTER(Filtertext : Text[30])
Code:
//übergebenen Filter auf Lagercode setzen
Location.SETFILTER(CODE,Filtertext);


Dann rufst du diese Filterfunktion vor dem RUN auf:

Code:
// Alle vorherigen Lagerhaltungsdaten löschen
SKU.DELETEALL;

// Lagerhaltungsdaten Report starten
//Setze Filter auf Lager
CreateSKU.SETZEFILTER('DDORF|KAARST');
CreateSKU.USEREQUESTFORM := FALSE;
CreateSKU.RUN;

// Lager löschen welche nicht DDORF und KAARST sind, entfällt


Wenn Du nämlich mal in den Report schaust, siehst du im OnPreReportTrigger, dass dort ein Filter auf das Feld Transitlager gesetzt wird. Das hat mich auf die oben ausgeführte Idee gebracht, ausgeführt hab ichs aber nicht, weil ich hier keine geeigneten Daten mit SKU habe....

Sollte aber funktionieren...

22. September 2006 12:07

Hallo Michael,

eine sehr gute Idee!

aber irgendwie klappt das nicht :(
Der nimmt den Filter nicht an.

Funktion in meiner Codeunit:
Code:
Function RenewLagerhaltungsdaten() {

RunSKU.InitializeSKURequest('DDORF|KAARST', TRUE,2,'A90-005');
RunSKU.USEREQUESTFORM := FALSE;
RunSKU.RUN;

}



Funktion in Report 5706 (Lagerhaltungsdaten erstellen) :

Code:
Function InitializeSKURequest() {

Item.SETFILTER("No.", myItem);
Item.SETFILTER("Location Filter",Lagerort);
ReplacePreviousSKUs := VorhandeSKULoeschen;
SKUCreationMethod := SKUCreationMethod::"Location & Variant";

}


Alternativ hab ich auch probiert:

Code:
Function InitializeSKURequest(Lagerort,VorhandenSKULoeschen,SKUErstellmethode,myItem) {

ReplacePreviousSKUs := VorhandeSKULoeschen;
SKUCreationMethod := SKUCreationMethod::"Location & Variant";
LocationFilter := Lagerort;
}


myItem hab ich nur hinzugefügt um zu schauen ob ein Filter auf ArtikelNr möglich ist, aber greift auch nicht.

Ähnlicher Ablauf gibt es ja , bei Lagerregulierung buchen. Dort klappt es komischerweise. Also in dem Report Lagerregulierung Buchen, gibt es eine Funktion: InitializeRequest();

Diese rufe ich aus meiner Codeunit auf mit: LagerRegBuch.InitializeRequest(1, WORKDATE,'',TRUE);

Das funktioniert, okay, dort wird allerdings kein Filter gesetzt.

Wenn ich im Report, OnAfterGetRecord , den Filter "Hard" setze, geht es:
LocationFilter := 'DDORF|KAARST';

Wenn ich den Filter in OnPreDataItem setze:
LocationFilter := 'DDORF|KAARST';

Geht es nicht.

hmm.

22. September 2006 14:37

Soo.

Also, irgendwie bekomme ich das über den Funktionsaufruf nicht hin :(
Habe es nun wie folgt gemacht, das scheint zu funktionieren:

SKU = Record "Stockkeeping Unit"
recItem = Record "Item"
RunSKU = Report "Create Stockkeeping Unit"

Damit werden aller Lagerhaltungsdaten (inklusive Varianten) für DDORF und KAARST neu erstellt.

Code:
SKU.DELETEALL;
recItem.SETFILTER("Location Filter", 'DDORF|KAARST');
RunSKU.SETTABLEVIEW(recItem);
RunSKU.USEREQUESTFORM := FALSE;
RunSKU.RUN;

22. September 2006 14:48

Hallo,

versuchs mal mit

Code:
RunSKU.RUNMODAL;



Mfg. André

22. September 2006 21:09

@AndreM
Run oder Runmodal ist in dem fall egal, da das eh der letzte Befehl in der Funktion ist....
Das Delete braucht er ja nicht mehr.

@Petter:

Ja, deine Letzte Lösung mit dem Settableview hätte ich jetzt auch vorgeschlagen, denn ich hab gesehen, dass er den Locationfilter der Tabelle Item im Filterrequest-Fenster anzeigt....
du kannst das auch noch kürzer machen mit

Code:
SKU.DELETEALL;
recItem.SETFILTER("Location Filter", 'DDORF|KAARST');
Report.RUN(5706,false,false,recItem);

25. September 2006 08:18

Ahsooo und wieder etwas gelernt... ;-)


Mfg. André

22. Juli 2008 15:51

Hallo zusammen,

kann ich den Report (aus einem anderen Report) eigentlich auch so aufrufen das die alten Lagerhaltungsdaten nicht gelöscht werden?

Viele Grüße
Axel