kleine Übung zum Verständniss

14. März 2009 21:47

Feldübergabe von Auftrag in Lieferschein (neues Feld)

Legen Sie in der Auftragszeile (Tabelle Verkaufszeile) ein neues Feld an (siehe unten) und übergeben Sie den Inhalt des Feldes in die Lieferzeile (Tabelle Verkaufslieferzeile)

Feldnr. Name Datentyp Länge
50000 Aufgabe1 Code 10


Musterlösung:
Man erstelle also einfach eine Spalte namens "Aufgabe1" in der Tabelle Verkaufszeile und der Tabelle Verkaufslieferzeile und dank Code Unit 80 wird alles automatisch kopiert ABER - kann jmd erläutern wo man den Zusammenhang zw. Codeunits und den Tabellen am schnellsten ausfindig machen kann?

Re: kleine Übung zum Verständniss

14. März 2009 22:00

Hallo dayscott,

mit dem ausfindig machen, ist nicht so einfach.

Also das mit dem Feld anlegen in "Sales Line" "Sales Shipment Line" funktioniert nur, wenn die Felder die gleiche ID und den gleichen Typ haben. Das würde übrigens auch mit jeder anderen Tabelle funktionieren, wenn die Bedingungen zutreffen.
Damit das ganze funktioniert, kennt NAV den Befehl TRANSFERFIELDS, damit können Daten zwischen Records unterschiedlichen Typs kopiert werden. Es werden dann nur die Felder kopiert, die in beiden Records gleiche IDs haben.


Gruß, Fiddi

Re: kleine Übung zum Verständniss

14. März 2009 22:11

dayscott hat geschrieben:kann jmd erläutern wo man den Zusammenhang zw. Codeunits und den Tabellen am schnellsten ausfindig machen kann?

Ganz einfach: Damit aus einem "Verkaufsauftrag" (Tabellen 36/37, Art::Auftrag) eine "Gebuchte Verkaufslieferung" (Tabellen 110/111) wird, muss der Auftrag gebucht werden.
Dies geschieht durch die Codeunit 80, in welcher (unter anderem) der von fiddi genannte Befehl TRANSFERFIELDS ausgeführt wird.

Re: kleine Übung zum Verständniss

14. März 2009 22:20

fiddi hat geschrieben:Also das mit dem Feld anlegen in "Sales Line" "Sales Shipment Line" funktioniert nur, wenn die Felder die gleiche ID und den gleichen Typ haben. Das würde übrigens auch mit jeder anderen Tabelle funktionieren, wenn die Bedingungen zutreffen.
Damit das ganze funktioniert, kennt NAV den Befehl TRANSFERFIELDS, damit können Daten zwischen Records unterschiedlichen Typs kopiert werden. Es werden dann nur die Felder kopiert, die in beiden Records gleiche IDs haben.


was meinst du hier mit unterschiedlichem Typ? in NAV gibt es keine wirkliche Verwendung von sowas wie Polymorphie oder Ähnlichem?

Lässt sich irgendwo eine brauchbare Einführung in C/AL finden?

und: Records = Datensätze = Zeilen einer Tabelle richtig?

@ timo

mit dem ausfindig machen, ist nicht so einfach.


fiddi hat hier verstanden worauf meine Frage abzielt: WO finde ich den Zusammenhang zw. Codeunit 80, diesen beiden Tabellen wenn ich EUCH nicht hätte? ^^

Re: kleine Übung zum Verständniss

14. März 2009 22:54

Hallo dayscott,

also mit der Objektorientierung von NAV ist das nicht so weit her.
Mit Record meinte ich die Tabellendefinitionen (ID) von NAV. Man Kann in NAV Recordvariablen gleichen Typs (mit der gleichen ID) direkt zuweisen. Mit Records unterschiedlichen Typs "Sales Line" und "Sales Shipment line" geht das nicht. Hier hilft TRANSFERFIELDS.

Gruß, Fiddi

Re: kleine Übung zum Verständniss

14. März 2009 23:07

fiddi hat geschrieben:Man Kann in NAV Recordvariablen gleichen Typs (mit der gleichen ID) direkt zuweisen.

Records = Datensätze ...

... Recordvariablen = ... Spaltenvariablen? (das Wort Spalte will ich mir irgendwie nicht abgewöhnen ... )

zb Employee Tabelle ( ID 5200) - das wäre tatsächlich ein DatenTYP , d.h. wenn ich ne tabelle " verflossene MA" hätte , dann müsst ich , wenn ich ein MA im System rüberziehen will, dies per Transferfields machen.

( kannst du ein Bsp für das Direktzuweisen nennen?)

Re: kleine Übung zum Verständniss

14. März 2009 23:59

Hallo,

also wenn du zwei Record- Variablen vom Typ "Sales Line" hast, sagen wir mal SL1 und SL2 kannst du diese mit
Code:
SL2 := SL1
direkt zuweisen.

Wenn du alle möglichen Daten von einer Record- Variablen "Sales Line" SL Daten in eine Record- Variable "Sales Shipment Line" SSL kopieren willst, kannst du das nicht auf diese Art machen. Es gibt da nur die Möglichkeit jedes Feld des Records einzeln zuzuweisen
Code:
SSL."No." := SL."No.".....
oder du machst das mit:
Code:
SSL.TRANSFERFIELDS(SL)

Das kopiert dann alle passenden Felder aus der "Sales Line" in die "Sales Shipment Line".

Gruß, Fiddi

Re: kleine Übung zum Verständniss

15. März 2009 11:06

dayscott hat geschrieben:Lässt sich irgendwo eine brauchbare Einführung in C/AL finden?

Hallo dayscott,

nach deinen Fragen sieht man, dass du ganz frisch in der NAV Welt bist, mindestens auf der C/AL Ebene. Hohl dir einfach die Schulungsunterlagen und arbeite diese durch bzw. besuche eine entsprechende Schulung. Anbieter kannst du im Internet finden. Ich empfehle die Schulungen von http://www.impuls-academy.de/ in Hamburg.

Dann wird dir alles klarer. Und das passiert deutlich schneller und, was sehr wichtig ist, effektiver, als im Forum nach den aus dem Kontext ausgerissenen Know-how zu suchen. Es ist einfach nicht möglich, in ein paar Sätzen die Philosophie einer Entwicklungsumgebung darzustellen.

Gruß, Michael.

Re: kleine Übung zum Verständniss

15. März 2009 12:44

mein Arbeitgeber schickt mich auf ein Essentials Seminar von impuls :))

in 2 Wochen bin ich also schon schlauer ! :)