[Gelöst] Übergabe TEMPORARY Table an Codeunit

7. Juni 2013 10:35

Hallo zusammen,

ich habe eine kleine Frage zur Übergabe einer TEMPORARY Table an eine Codeunit.

Nach dem Verbuchen eines Journals sollte ich die schon verbuchten Journalzeilen nochmals verarbeiten.
Da sie nach dem Verbuchen nicht mehr in der entsprechenden Journalzeilen-Tabelle vorhanden sind,
schreibe ich die Journalzeilen unmittelbar vor dem Verbuchen in eine TEMPORÄRE Journalzeilen-Tabelle:

Code:
IF Rec.FINDSET THEN
BEGIN
  JnlLineTEMPG.DELETEALL;
  REPEAT
    JnlLineTEMPG.TRANSFERFIELDS(Rec);
    JnlLineTEMPG.INSERT;
  UNTIL Rec.NEXT = 0;
  IF Rec.FINDFIRST THEN;
END;


Anschliessend wird die Verbuchung gestartet:

Code:
CODEUNIT.RUN(CODEUNIT::"Sales-Post (Yes/No)",Rec);


Nach der Verbuchung rufe ich meine eigene Codeunit mit RUN auf:

Code:
IF JnlLineTEMPG.FINDSET THEN
  JnlPostG.RUN(JnlLineTEMPG);


Wenn ich meine eigene Codeunit JnlPostG mit RUN aufrufe und die TEMPORÄRE Tabelle JnlLineTEMPG übergebe,
dann kann ich innerhalb meiner eigenen Codeunit JnlPostG ALLE Datensätze der übergebenen TEMPORARY Table JnlTEMPG nochmals lesen.

Wenn ich aber meine eigene Codeunit JnlPostG anstelle mit RUN mit einer anderen Funktion (z.B. CodeG) aufrufe,
dann habe ich nur einen Datensatz im Zugriff:

Code:
IF JnlLineTEMPG.FINDSET THEN
  JnlPostG.CodeG(JnlLineTEMPG);


Und dies auch wenn ich den Übergabe-Parameter innerhalb dieser Codeunit als TEMPORARY definiere.

Kann ich demzufolge den gesamten Inhalt einer Tabelle (ob nun temporär oder nicht) nur über RUN

Code:
JnlPostG.RUN(JnlLineTEMPG);


übergeben?

Oder gibt es da mir (noch) nicht bekannte Möglichkeiten?

Vielen Dank, Beno
Zuletzt geändert von beno am 7. Juni 2013 10:55, insgesamt 1-mal geändert.

Re: Übergabe TEMPORARY Table an Codeunit

7. Juni 2013 10:42

beno hat geschrieben:Wenn ich aber meine eigene Codeunit JnlPostG anstelle mit RUN mit einer anderen Funktion (z.B. CodeG) aufrufe,
dann habe ich nur einen Datensatz im Zugriff:

Code:
IF JnlLineTEMPG.FINDSET THEN
  JnlPostG.CodeG(JnlLineTEMPG);


Und dies auch wenn ich den Übergabe-Parameter innerhalb dieser Codeunit als TEMPORARY definiere.

Temporary allein reicht nicht, es muss auch noch ein Var-Parameter (innerhalb von Funktion CodeG) sein.

Re: Übergabe TEMPORARY Table an Codeunit

7. Juni 2013 10:55

Wow, eine superschnelle Antwort und es funktioniert!
Du bist die Beste :!:

Vielen Dank, Beno 8-)