ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 14:34

Hallo,

ich hoffe ihr könnt mir helfen. Habe die Themen bereits durchsucht aber nichts passendes gefunden. Ich hab ein kleines Problem mit einem Aufruf einer Codeunit.
(Manuell und über NAS das Gleiche)

In einer Codeunit habe ich eine Fkt. welche eine andere Codeunit aufrufen soll. Starten tue ich das ganze über ein:

IF NOT Codeunit.RUN THEN ...

Der Debugger bleibt aber an genau dieser Stelle mit einem ERROR hängen. Eine Fehlermeldung wird jedoch nicht ausgegeben.
Entferne ich das IF NOT ... THEN dann funktioniert alles wie am Schnürchen und es gibt auch keine Fehler.

(COMMIT wurde vorher gemacht und ein Lizenzproblem liegt nicht vor)

Wäre nett wenn ihr mir helfen könntet. Wenn ihr mehr Infos dazu braucht dann bitte fragen.

Danke !

Re: ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 15:45

Wenn du die zweite Codeunit also ohne IF laufen lässt, läufts durch - ohne eine Fehlermeldung? Oder welche kommt dann?

Re: ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 15:51

Genau so ist es !

Sage ich einfach nur Codeunit.RUN dann läuft alles ohne Fehler durch.

Hatte auch alle Programmierungen auskommentiert, welche Fehler hervorbringen könnten und trotzdem kam der Fehler bei IF NOT .. THEN

Re: ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 15:53

Und wenn du IF benutzt, steht davor ein COMMIT?
Also so?

Code:
COMMIT;
IF NOT Codeunit.RUN THEN ...


Das MUSS eigentlich funktionieren.

Codeunit ist doch eine entsprechend deklarierte Codeunit-Variable oder?

Re: ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 16:05

Richtig

Codeunit ist eine globale CU Variable und mit COMMIT davor funktioniert es auch nicht.

Bin da absolut hilflos. ;)

Re: ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 16:08

Sorry, muss so blöd weiter fragen, sicher ist sicher:

David M hat geschrieben:Codeunit ist eine globale CU Variable
... die als Subtype auch eine existierende Codeunit hat ...?

David M hat geschrieben:Der Debugger bleibt aber an genau dieser Stelle mit einem ERROR hängen. Eine Fehlermeldung wird jedoch nicht ausgegeben.
Ohne Debugger: Kommt also eine leere Fehlermeldung oder was genau passiert?

Re: ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 16:18

Ja natürlich hat sie ein existierende Codeunit. :-)
Wenn ich das IF NOT ... THEN entferne geht er ja auch brav hinein.

Wenn ich ohne Debugger starte dann kommt gar nichts. Nicht mal eine leere Fehlermeldung.

Natürlich könnte man jetzt sagen: "Ja dann lass doch das IF NOT weg !"

Das geht aber leider nicht, da es natürlich in der Codeunit zu Fehlern kommen könnte und eine Fehlermeldung ausgegeben werden soll wenn tatsächlich ein RUN nicht funktioniert hat. Nur kommt er in diesem Fall halt nicht mal dazu sie überhaupt auszuführen und einen Fehler zu finden.

Re: ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 16:34

David M hat geschrieben:Wenn ich ohne Debugger starte dann kommt gar nichts. Nicht mal eine leere Fehlermeldung.


Äh, und was soll dann überhaupt falsch sein?
Erwartest du, dass die 2. Codeunit irgendetwas "auswirft" und DIES kommt nicht?
Ist überhaupt sicher gestellt, dass die 2. CU richtig funktioniert?

Edit: da fällt mir ein - da du eine CU-Variable verwendest, musst du dich mit einem CLEAR(Codeunit) darum kümmern, dass ihre Variablen zurück gesetzt werden - machst du das?

Re: ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 17:14

Nun was falsch sein soll, dass frage ich mich auch. Ein clear wird vorher gemacht (obwohl es in diesem Fall nicht mal notwendig wäre).

Über den NAS sollen verschiedene Jobs augeführt werden.
Die sind in der ersten Codeunit hinterlegt und arbeiten dies je nach Zeitintervall ab. (Hauptsächlich für den EDI Bereich)

In diesem Fall sollen in der Nacht automatisch Aufträge freigegeben werden. Daher wird in einer Funktion eine Extra Codeunit aufgerufen, welche dann hingeht und alle Aufträge freigibt.

Zusätzlich haben wir eine Art Logging Tabelle, die ausgibt wann und wie ein Job gestartet wird.

Dabei wird dann halt die Codeunit mit "IF NOT Codeunit.RUN THEN ERRORDESCRIPTION = ...." aufgerufen.
Die ERRORDESCRIPTION wird letztendlich als Logging-Eintrag weggeschrieben.

Die aufgerufene Codeunit mit dem Freigeben der Aufträge gibt also nichts aus sondern gibt nur frei.
Natürlich kann die 2. CU auch mal nicht richtig funktionieren aber dafür gibt es ja die ERRORDESCRIPTION.

In meinem Test habe ich in der 2. CU den tatsächlichen Aufruf zum Freigeben entfernt, sodass er nur hier und da mal ein SETRANGE auf den Sales Header macht. (Deswegen läuft die Codeunit auch fehlerlos)
Trotzdem kam der ERROR beim debuggen.

Außerdem habe ich das alles nicht über den NAS gemacht sondern manuell ausgeführt. NAS relevante Fehler fallen also auch weg.

Re: ERROR bei Codeunit.RUN Aufruf

12. Juli 2009 17:50

David M hat geschrieben:Trotzdem kam der ERROR beim debuggen.

Geht es dir also nur um das "Fehlererlebnis" beim Debuggen, NUR beim Debuggen??
Wenn ich mich jetzt nicht völlig irre, ist das normal so. Für den Debugger ist es streng genommen ein Fehler, dass innerhalb der 2. Codeunit etwas nicht ausgeführt werden konnte. Nur führt diese Art von Fehler nicht dazu, dass die Ausführung stoppt, sondern durch den ELSE-Teil fortgeführt wird (wirds doch auch im Debugger, oder nicht?).

Mit anderen Worten: Das kannst du einfach ignorieren.

Und wenn ich mich doch geirrt haben sollte, dann nicht nur den Debugger ignorieren ;-)

Re: ERROR bei Codeunit.RUN Aufruf

13. Juli 2009 15:06

Wenn er die 2. Codeunit auch tatsächlich ausführen würde, dann wäre ja auch alles in Ordnung. ;-)

Wenn er dann darin einen Fehler finden würde übergeht er diesen und macht mit dem nächsten Sales Header weiter.

Wäre ja dann alles wie gewünscht.

Problem ist ja aber, dass er die 2. Codeunit gar nicht versucht auszuführen sondern einfach beim Aufruf mit einem Fehler hängen bleibt. Was er also eigentlich machen soll tut er nicht.

Re: ERROR bei Codeunit.RUN Aufruf

14. Juli 2009 08:22

vll. wäre der Fehler an sich hilfreich?
Wie lautet der Fehler?