04.04.2009, 22:05 | #1 |
Участник
|
jinx: Anzeige von Lagerdimensionen auf Berichten
In dem Artikel "Anzeigevon Lagerdimensionen auf Masken" wurde bereits gezeigt, was zu tun ist, umdie Anzeige von Lagerdimensionen auf Masken dynamisch anpassen zu können bzw. dasStandardverhalten für die Anzeige von Lagerdimensionen zu implementieren.
Manchmal soll eine ähnliche Funktionalität auch für Berichte bereit gestellt werden,um zum Beispiel vor der Berichtserstellung auswählen zu können, welche Lagerdimensionenauf dem Bericht(Report) angedruckt werden. Auch hierfür sind im Dynamics AX Standard die entsprechenden Funktionalitäten (oderbesser Klassen) bereits vorhanden, sodass diese nur verwendet werden müssen. Als Ausgangsbasis für den Bericht dient ebenfalls die Tabelle „AKU_DemoTable“. Der Bericht soll nun, die in dieser Tabelle gespeicherten Datensätze andrucken/ausgeben. Wie bei Masken, muss auch für einen Bericht, die Query entsprechend um die TabelleInventDim ergänzt werden. Hierbei ist zu beachten, dass die Eigenschaften (Properties) „FetchMode“ auf „1:1“und „Relations“ auf „Yes“ gesetzt werden. Als nächstes muss nun, ebenfalls analog zu dem Vorgehen bei Masken, die Feldgruppe„InventoryDimensions“ in den Designzweig des Reports aufgenommen werden. Beispielhaft wird diese in einem Body-Element erstellt. Nun müssen noch einige Anpassungen an den Methoden des Berichts durchgeführt werden,damit das gewünschte Ergebnis erreicht werden kann. Bezogen auf die Möglichkeit, die zu druckenden Lagerdimensionen bestimmen zu können,müssen die Methoden „classDeclaration“, „run“, „dialog“ und „getFromDialog“ wie folgtüberschrieben werden. Auch das Überschreiben der Methoden „pack“ und „unpack“ ist hilfreich (für die Lagerdimensionsanzeigenicht zwingend erforderlich), da über diese die Speicherung der „Nutzungsdaten“ realisiertwird. public class ReportRunextends ObjectRun { InventDimParm inventDimParm; DialogRunbase dialog; DialogGroup dialogInventoryDimensions; #define.CurrentVersion(1) #localmacro.CurrentList inventDimParm #endmacro } void updateDesign() { ; InventDimCtrl::updateReportVisible(element, inventDimParm); } public void run() { ; this.updateDesign(); super(); } public Objectdialog(Object _dialog) { ; dialog = _dialog; dialogInventoryDimensions = inventDimParm.addFieldsToDialog(dialog,"@SYS53654",true, false, "@SYS102592"); return dialog; } public booleangetFromDialog() { ; inventDimParm.getFromDialog(dialog, dialogInventoryDimensions); return true; } public containerpack() { return [#CurrentVersion,#CurrentList]; } public booleanunpack(container packedClass) { Version version = RunBase::getVersion(packedClass); ; switch(version) { case #CurrentVersion: [version,#CurrentList] = packedClass; break; default: return false; } return true; } Wird nun der Bericht geöffnet, zum Beispiel über ein MenuItem, kann in einem Dialogausgewählt werden, welche Lagerdimensionen auf dem Report angedruckt werden sollen. Der ausgegebene Bericht(Report) sieht, unter Berücksichtigung der im Dialog gewähltenEinstellungen, wie folgt aus. Das vorgestellt Bespiel steht hier alsDownload bereit um die einzelnen Schritte genau ansehen/nachvollziehen zu können. AKU_Demo_InventDimRep.rar(1,99 KB) Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu) More... |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|