XMLPort Request Page RTC?

3. Dezember 2015 12:02

Hallo zusammen,

ich möchte mir Sachkonten aufgeschlüsselt nach vorhandenen Dimensionskombinationen und für einen bestimmten Zeitraum, den man frei definieren kann, in eine .csv Datei exportieren.
Es soll in etwa so aussehen:

Sachkonto 1; Saldo im Zeitraum; Dimension1:Ausprägung1; Dimension2:Ausprägung1
Sachkonto 1; Saldo im Zeitraum; Dimension1:Ausprägung2; Dimension2:Ausprägung1
... etc

Meine erste Idee war es dies über einen XMLPort zu lösen. Die Frage, die sich mir hierbei stellt ist, kann man die Request Page auch über den RTC aufrufen, um den XMLPort von dort zu starten? Die offizielle Hilfe gibt das Folgende aus:

"A request page is a dialog box that appears when an XMLport is run from Object Designer."

Als Alternative könnte man auf einen Report zurückgreifen. Komfortabler wäre es jedoch den XMLPort zu verwenden. Danke für eure Antworten :)

Re: XMLPort Request Page RTC?

3. Dezember 2015 13:29

…kann man die Request Page auch über den RTC aufrufen, um den XMLPort von dort zu starten?

Sicher. So wie hier beschrieben einbinden:
http://dynamicsuser.net/blogs/marcos/archive/2011/04/18/the-dataport-is-dead-long-live-the-xmlport.aspx

Ursprünglich konnten XMLports gar nicht direkt aus dem Objektdesigner aufgerufen und mussten per C/AL gestartet werden (Codebeispiel hier) aber da die alten Dataports ja entfernt wurden, wurden die bei der Funktionalität dahingehend ausgebaut.

Re: XMLPort Request Page RTC?

8. Dezember 2015 14:57

Danke für die Hilfe, das funktioniert!

Um nochmal auf meinen ersten Post zurückzukommen:
Ich möchte Sachkonten so aufschlüsseln, dass in meiner .csv Datei mehrere Zeilen pro Sachkonto mit jeweils unterschiedlichen Dimensionswert-Kombinationen auftauchen. Ich muss also das Sachkonto in mehreren Records verpacken und kann nicht einfach die Tabelle "G/L Account" exportieren. Ich habe also eine temporäre Variable deklariert, die als SourceTable "G/L Account" hinterlegt hat. Die Idee ist, diese Tabelle mit meinen berechneten Datensätzen zu füllen. Ein erster Versuch, dies innerhalb des XMLports zu tun ist fehlgeschlagen. Hat jemand hierzu ein praktisches Beispiel? Eventuell würde mir auch eine Codeunit helfen.

*EDIT* Habe nun eine eigene Tabelle erstellt und diese im XMLport als NICHT temporäre Tabelle deklariert. Wenn ich den XMLport über den RTC aufrufe bekomme ich zunächst wie gewollt eine Request Page und anschließend vom Client keine Rückmeldung. Hier ist mein Quellcode:

OnPreXMLport-Trigger
Code:
TempTBExp.DELETEALL;
EntryNo := 0;
IF GLAccount.FINDSET THEN BEGIN
  REPEAT
    DimensionValue1.SETFILTER("Dimension Code", 'KOSTENSTELLE');
    IF DimensionValue1.FINDSET THEN BEGIN
      REPEAT
          IF NOT CalculateValues(GLAccount, DimensionValue1.Code) THEN BEGIN
            EntryNo += 1;
            TempTBExp.INIT;
            TempTBExp."Entry No." := EntryNo;
            TempTBExp."G/L Account No." := GLAccount."No.";
            TempTBExp."G/L Account Name" := GLAccount.Name;
            TempTBExp."Global Dimension 1 Code" := DimensionValue1.Code;
            TempTBExp."Net Change" := NetChangeValue;
            TempTBExp.Balance := BalanceValue;
            TempTBExp.INSERT;
          END;
      UNTIL DimensionValue1.NEXT = 0;
    END;
  UNTIL GLAccount.NEXT = 0;
END;


CalculateValues-Trigger
Code:
GLEntry.SETRANGE("Posting Date",PeriodStartingDate,PeriodEndingDate);
GLEntry.SETFILTER("Global Dimension 1 Code", DimensionValue1.Code);
GLEntry.SETFILTER("G/L Account No.",GLAcc."No.");
SkipEntry := TRUE;
IF GLEntry.FINDSET THEN BEGIN
  REPEAT
    SkipEntry := FALSE;
    NetChangeValue += GLEntry.Amount;
    BalanceValue += GLEntry.Amount;
  UNTIL GLEntry.NEXT = 0;
END;


Hat jemand eine Idee?