[GELÖST] Aufruf einer Funktion aus CodeUnit funktioniert

19. November 2015 17:33

Hallo,

ich habe eine CodeUnit (Report Toolbox) und möchte dort aus einer Funktion (getChecklistDescription() ) den vorhandenen Text in einem Report einer Variablen (TRD_Detailbeschreibung) zuordnen. Ich habe es mit folgender Codezeile versucht:

TRD_Detailbeschreibung := Report Toolbox.getChecklistDescription();

Die Variable TRD_Detailbeschreibung liegt als Datentyp "Text" mit 200 Zeichen vor.

Dennoch bekomme ich folgende Fehlermeldung:

"Die Variable Text muss zu 0 gehören und nicht zu 26121."

Wo finde ich einen hilfreichen Ansatz?

Vielen Dank! Gruß Daniel
Zuletzt geändert von NavBeginner am 26. November 2015 14:43, insgesamt 1-mal geändert.

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

19. November 2015 18:14

Liefert die "getChecklistDescription" denn einen Text 200 zurück? Per EXIT oder als Return Value in den Locals der function?

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 13:33

Ja soweit ich das beurteilen kann schon.

Siehe folgendes Pic:

getChecklist_01.png


In dem Report habe ich der Variable die diesen Wert zugeordnet bekommen soll denselben Typ "Text" mit 250 Zeichen vergeben.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 13:49

Du hast einen Rückgabewert "ret" deklariert, möchtest aber per Exit die Variable "Description" zurückgeben. Liegt es vielleicht daran?

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 14:06

Hallo,

zunächst würde ich mal versuchen keine Variablennamen zu verwenden, die auch als reservierte Wörter Verwendung finden.

Denn in deiner Fehlermeldung wird von einer Variable "Text" gesprochen.

Gruß, Fiddi

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 14:14

Eine Variable namens Text gibt es nicht.

Ok wenn der Wert "ret" deklariert wurde, dann sollte ich den also in der EXIT-Funktion nutzen?

Dementsprechend sähe die EXIT so aus oder?

Code:
ret := description;
EXIT(ret);


Im Report habe ich dies dann wie folgt eingebunden:

Code:
TRD_Detailbeschreibung := Report Toolbox.getChecklistDescription();


oder sollte ich hier auch den Wert "ret" in der Klammer mitgeben?

Sorry aber diese CodeUnit wurde von jemand anderem erstellt und ich kann dort nicht nachhaken.

Danke vielmals

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 14:22

Ich würde den Namen des Rückgabewertes "ret" einfach leeren und den Rest so lassen wie gehabt. Versuch doch mal, ob es hilft. Ich kann es leider nicht testen.

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 14:59

Hallo,

wenn du die Zeile :
Code:
TRD_Detailbeschreibung := Report Toolbox.getChecklistDescription();

genauso geschrieben hast, dann ist genau dort ein Problem. :mrgreen:
kleiner Tipp: entweder setzt du zwei mal ein " oder löschst ein Leerzeichen.

Zu der Funktion:
ich würde die Return- Variable "ret" in "description" umbenennen, und die Variable "description" selbst und den "EXIT(ret)" löschen.

Gruß Fiddi

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 15:36

Ja die Zeile habe ich genauso geschrieben ;-)

Die CodeUnit wird mit Leerzeichen geschrieben. Das heißt ich habe mal die Zeile auf:

Code:
TRD_Detailbeschreibung := "Report Toolbox".getChecklistDescription();


geändert. Dann sagt er mir aber das Report Toolbox keine deklarierte Variable ist. Oder muss ich alles in "" setzen?

Also:
Code:
TRD_Detailbeschreibung := "Report Toolbox.getChecklistDescription()";

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 15:59

Der erste Versuch war schon gut. :-D

Aber du musst tatsächlich eine Variable für die Codeunit "Report Toolbox" definieren, den Namen solltest du dann besser "ReportToolbox" nennen. Dann musst du das Leerzeichen in deine Programmzeile auch weglassen.

Gruß Fiddi

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 16:26

Mit dem Versuch klappt es soweit ohne Fehlermeldung.

Ich habe zur Sicherheit eine Abfrage eingebaut ob die CodeUnit überhaupt etwas zurückgibt:


Code:
IF (ReportToolbox.getChecklistDescription()) = '' THEN
   TRD_Detailbeschreibung := 'Hier könnte was stehen!'
ELSE
   TRD_Detailbeschreibung := ReportToolbox.getChecklistDescription();


Leider wird nur der erste Teil der IF-Anweisung wiedergegeben so das die CodeUnit wohl nichts ausgibt.
Mmhh aber das ist wohl ein anderes Problem.

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 16:33

wo kommt den "checklistno" in der Funktion her?

Gruß Fiddi

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 16:55

Diese wird weiteroben in einer anderen Funktion zugewiesen:
getChecklist_02.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

20. November 2015 16:58

Und diese Funktion rufst du auch auf, und in dem übergebenen Record steht auch was drin in der Variable?

Gruß Fiddi

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

24. November 2015 16:19

Also ich hab nochmal durch die CodeUnit geschaut und so wie es aussieht beziehen sich einige Werte auf die anderen Funktionen. Diese habe ich bisher noch nicht aufgerufen. Könnte es daran liegen?

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

24. November 2015 18:36

wahrscheinlich!?

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

26. November 2015 14:42

Danke fiddi...Problem wurde gelöst!
Habe folgenden Code verwendet:
getChecklist_03.png


Nur die Picture-Funktion mit dem Blob funktioniert nicht wirklich...habe zum Test das Bild statisch eingebunden mit direkter Pfadangabe.
Weiß da leider nicht weiter...obwohl ich schon einiges hier im Forum darüber gelesen habe. Die Umsetzung ist immer was anderes.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Aufruf einer Funktion aus CodeUnit funktioniert nicht

27. November 2015 10:45

NavBeginner hat geschrieben:...Nur die Picture-Funktion mit dem Blob funktioniert nicht wirklich...habe zum Test das Bild statisch eingebunden mit direkter Pfadangabe.
Weiß da leider nicht weiter...obwohl ich schon einiges hier im Forum darüber gelesen habe. Die Umsetzung ist immer was anderes.

Es kann sein, dass Blob.Import auf dem NAV-Server ausgeführt wird. Und da sollte es das Laufwerk Y auch geben...