[Gelöst] Rahmenbestellung

23. Februar 2007 11:57

Hallo zusammen,

im Einkaufsmodul gibt es ja die Rahmenbestellungen, die wir ab sofort nutzen wollen. Ich habe das Ganze jetzt schon dahingehend angepasst, dass beim Eintragen einer Rahmenbestell-Nr. verschiedene Felder gefüllt werden. allerdings habe ich jetzt ein relativ lapidares Problem:
In den Rahmenbestellungen (Tabelle Purchase Line) gibt es das Feld "Bereits gelieferte Menge", das ich dafür verwenden will, über ein LookUp sämtliche Bestellungen anzuzeigen, auf die schon was geliefert wurde und die den Bezug zur Rahmenbestellung haben. Ich habe versucht es über die TableRelation dieses Feldes zu machen, aber da versucht er immer das Feld mit zu filtern (s. angehängte Meldung). Ich hab jetzt leider auch keine Idee mehr, wie das zu realisieren wäre, aber vllt. könnt Ihr mir ja helfen :)

Danke schonmal und Grüße
Alez
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Alez am 27. Februar 2007 14:11, insgesamt 1-mal geändert.

23. Februar 2007 12:06

Ich denke, du hast beim Setzen der TableRelation einen TableFilter gesetzt.
Dort hast du einen Datensatz eingepflegt
entweder
- mit Art FIELD und dort die falschen Felder miteinander verknüpft.
oder
- CONST gewählt und dort etwas Falsches eingetippt.

23. Februar 2007 12:13

Hallo Alez,

Navision versucht 2 Felder mit unterschiedlichen Datentypen zu verwenden.
Könnte darauf Basieren, das du nicht alle Felder des Prim.Keys ansprichst.

Die Tabelle "Purchase Line" hat die Felder "Belegart,Belegnr.,Zeilennr."
Ich würde Vorschlagen, die verwendeten Felder zu überprüfen bzw. die Fehlenden hinzuzufügen.
Gruß Mikka

23. Februar 2007 12:54

Hallo zusammen,

TableFilter habe ich angegeben, hier mal der komplette String aus der TableRelation:
Code:
IF (Document Type=CONST(Blanket Order)) "Purchase Line" WHERE (Document Type=CONST(Order),Blanket Order No.=FIELD(Document No.),Blanket Order Line No.=FIELD(Line No.))


Was mich eben wundert ist die Meldung an sich, weil er ja Belegart mit dem Feld "Bereits gelieferte Menge" vergleicht, dass sieht man an dem Typ Decimal und dem Wert 16, da die bereits gelieferte Menge 16 Stück ist. Hoffe das ist verständlich ausgedrückt ;)

Gruß
Alez

23. Februar 2007 13:03

Achsooooo *Lichtaufgeht*

Der Fehler ist folgender:
Du hast diese TableRelation in dem Feld "Bereits gelieferte Menge" eingegeben. Dieses Feld ist aber vom Typ Decimal. Du versuchst nun, ihn im diesem Feld ein Feld vom Typ Option (Belegart!) ausführen zu lassen. Das geht natürlich nicht.

Lösung: Programmiere nicht die TableRelation, sondern rufe im OnLookup-Trigger des Feldes die entsprechende Form selber auf.

23. Februar 2007 13:14

Ich würde diesen Aufruf nicht im onLookup sondern auf der Subform in OnDrillDown Trigger einbauen.
TableRelation ist hier definitiv falsch, weil du damit nur die Menge einer Lieferung holen könntest.

PS: Du müsstest hier wahrscheinlich sowieso mit einer temporären Tabelle arbeiten, die vorher über den Filter aus den Tabellen Purchase Line für noch nicht gelieferte aber schon abgerufene und aus der Purch. Rcpt. Line für tatsächlich gelieferte Mengen gefüllt wird....

23. Februar 2007 14:20

Danke für die Infors, das ist gut zu wissen, anscheinend habe ich die Hilfe falsch verstanden. Ich dachte man kann diese Funktion für sämtlich Felder verwenden...

Damit stellt sich wohl nur noch die Frage, wo ich die Programmierung vornehmen soll. Testweise habe ich es jetzt in der Tabelle Purchase Line mit diesem Code realisiert:
Code:
IF "Document Type" = "Document Type"::"Blanket Order" THEN BEGIN
  PurchLine2.RESET;
  PurchLine2.SETCURRENTKEY("Document Type","Blanket Order No.","Blanket Order Line No.");
  PurchLine2.SETRANGE("Document Type","Document Type"::Order);
  PurchLine2.SETRANGE("Blanket Order No.","Document No.");
  PurchLine2.SETRANGE("Blanket Order Line No.","Line No.");
  PurchLine2.SETFILTER("Quantity Received",'<>0');
  FORM.RUNMODAL(FORM::"Purchase Lines",PurchLine2);
END;

Damit würde es funktionieren, man hat aber natürlich den Nachteil, dass der LookUp-Button auch in den Bestellungen erscheint. Zu was würdet ihr mir denn raten?

Gruß
Alez

23. Februar 2007 15:54

Sieh mal das Posting unmittelbar vor deinem letzten ( von mir ;-) )
Die funktion muss im OnDrilldown-Trigger der Subform der Rahmenbestellung untergebracht werden.

Mit Deiner Funktion siehst du allerdings keine Bestellungen, die schon komplett fakturiert wurden, Du siehst also möglicherweise nicht alle erhaltenen Lieferungen.

23. Februar 2007 16:14

Stimmt, das würdest du mir raten, aber hätte ja sein können, dass andere hier anderer Meinung sind :wink: Das soll kein Angriff gegen dich sein, aber ich will es halt schon so machen, wie es am Besten dem Standard entspricht.
Die Funktion wie ich sie erstellt habe würde schon funktionieren, auch wenn die Bestellung komplett fakturiert wurde, da das Feld "Quantity Received" immer gefüllt bleibt, sobald Lieferungen zugebucht wurden. Außerdem werden bei uns keine Bestellungen periodisch gelöscht, diese Regelung wurde mal so festgelegt, das war aber vor meiner Zeit :wink:

Ich werde es aber auf deinen Hinweis hin mal in den OnDrillDown-Trigger einbauen.
Btw. was ist eigentlich der Unterschied zwischen LookUp und DrillDown? Muss man hier was beachten, z.B. dass LookUp nur verwendet werden soll, wenn das Feld gefüllt wird und DrillDown zur Übersicht? Oder ist das ziemlich egal?

Gruß
Alez

23. Februar 2007 17:05

Alez hat geschrieben:Stimmt, das würdest du mir raten, aber hätte ja sein können, dass andere hier anderer Meinung sind :wink: Das soll kein Angriff gegen dich sein, aber ich will es halt schon so machen, wie es am Besten dem Standard entspricht.

eben genau wegen dem Standard habe ich dir das geraten ;-)
Die Funktion wie ich sie erstellt habe würde schon funktionieren, auch wenn die Bestellung komplett fakturiert wurde, da das Feld "Quantity Received" immer gefüllt bleibt, sobald Lieferungen zugebucht wurden. Außerdem werden bei uns keine Bestellungen periodisch gelöscht, diese Regelung wurde mal so festgelegt, das war aber vor meiner Zeit :wink:

Wenn bei euch komplett fakturierte Bestellungen nicht gelöscht werden, dann hast du Glück, normalerweise werden die nämlich automatisch gelöscht. Das Feld Quantity Received in der Rahmenbestellung meintest du? ja das behält seinen Inhalt bis zur nächsten Lieferung, denn es ist ein normales Tabellenfeld. wenn es ein Flowfield wäre, musstest du den Drilldown nicht mehr programmieren, dann wäre es sofort da. Aber hier wird der Wert bei der Buchung der Lieferung explizit neu berechnet und in dieses Feld geschrieben. Das passiert in der Buchungscodeunit, wenn in den Felder Rahmenauftragsnummer und -Zeile was drin steht, liest Navision den Wert aus, addiert die aktuelle Lieferung hinzu und speichert den Wert zurück.
Btw. was ist eigentlich der Unterschied zwischen LookUp und DrillDown? Muss man hier was beachten, z.B. dass LookUp nur verwendet werden soll, wenn das Feld gefüllt wird und DrillDown zur Übersicht?
Genau richtig erkannt!
Lookup: Nachsehen und auswählen (OK-Taste sichtbar)
Drilldown: Reingucken, wie der sichtbare Wert sich zusammensetzt (keine OK-Taste)

27. Februar 2007 14:11

Danke für die Hilfe, ich hatte leider ein langes (Arbeits-)wochenende, deswegen kann ich erst jetzt antworten...

Ich habe es jetzt über das DrillDown-Feld der Form gemacht, dazu musste ich den Code glücklicherweise nur geringfügig anpassen. Zwar wollen die Mitarbeiter das jetzt doch ein bißchen anders gelöst haben, aber prinzipiell funktioniert das so.

Danke noch mal.

Gruß
Alez