2. Juni 2015 14:22
Liebe Community,
ich hoffe, dass Ihr mir auch diesmal wieder helfen könnt.
Ich komme bei der Anwendung einer Filterung durcheinander.
Folgender Tatbestand: Basteln eines bestehenden Dataports (DataItem „Sales Line“).
Aufgabe lautet:
a) Wenn der ermittelte „WERT“ (» globale Var.) größer als 0 ist, dann gehe in die Lagerhaltungsdaten (VK-Zeile „anzapfen") und hole von dort
in Kombi mit Lagerortcode und Artikelnr. den jeweiligen Einstandspreis und Lagerbestand. (« bis hierhin soweit alles gut)
b) Dann gehe jedoch weiter über die VK-Zeile in die Tabelle 14 Location: Filtere auf das Feld „Target Location Code“ = MUSTERWERT, um die dazugehörigen Lagerorte (Feld names „Code“, welches Primärschlüssel ist) zu ermitteln.
c) Mit den ermittelten Werten (d.h. auf Ziellagerort = MUSTER gefiltert) des Feldes Location.Code gehe zurück in die Lagerhaltungsdaten und ermittle nun für Location.Code den jeweiligen Einstandspreis und Lagerbestand.
Ich bin mir unschlüssig, wie ich von a) nach b) komme. Von b) nach c) würde ich mit einem GET die Lagerhaltungsdaten erneut ansprechen, aber das kommt eher lückenhaft, da die Tabelle 14 nicht alle Felder hat, die mit dem PK von Lagerhaltung übereinstimmen würden.
Das ist mein Konstrukt:
OnBeforeExportRecord()- Code:
IF glRestmenge > 0 THEN BEGIN
IF glSKU.GET("Location Code","No.","Variant Code") THEN BEGIN
glSKUUnitCost := glSKU."Unit Cost";
glSKU.CALCFIELDS(Inventory);
glSKUInventory := glSKU.Inventory;
glLOC.RESET;
//glLOC.SETFILTER("Target Location Code",'MUSTER');
// wäre der Sprung von a) nach b) so richtig?
glLOC.SETRANGE("Target Location Code","Sales Line"."Location Code");
IF glLOC.FINDFIRST THEN BEGIN
// Tab. Location enthält nicht die Felder, die als PK von Tabelle Lagerhaltungsdaten gelten
IF glSKU2.GET(glLOC.Code) THEN BEGIN
glSKUUnitCostLoc := glSKU2."Unit Cost";
glSKU2.CALCFIELDS(Inventory);
glSKUInventoryLoc := glSKU2.Inventory;
END;
END;
END ELSE BEGIN
….
END;
END;
Ich erhalte nicht den Einstandspreis + Lagerbestand für die Felder "Code" aus der Tabelle Location. Was habe ich denn an meiner Programmierung vergessen/übersehen?
Über eine Hilfestellung würde mich freuen!
Gruß,
Boyrinho