Dynamics AX Blog - Beiträge von 2010

Momentan angezeigt werden nur Beiträge von »2010«.

SELECT-Statements mit Datumseinschränkung in AX 2009

Im Zuge eines Upgrades einer Applikation auf Dynamics AX 2009 ist mir ein Stückchen Code über den Weg gelaufen, dessen Code-Upgrade auf den ersten Blick recht einfach sein sollte, sich aber bei genauerer Betrachtung als doch gar nicht so einfach herausgestellt hat.

Und zwar gehts um ein einfaches SELECT-Statement, z.B. wie das folgende:

date myDate = str2date('07.05.2010', 123);

select count(recid)
from salesline
where salesline.createdDate == myDate;

Obiges Statement soll mir einfach eine Zahl der Auftragszeilen liefern, die an einem bestimmten Tag erstellt wurden.

In Dynamics AX 2009 wurde ja das Feld createdDate durch createdDateTime und einen vollständigen neuen Datentyp, der nun auch die Zeit mitspeichert, ersetzt.


 
 
 

Druckeinstellungen und Filterkriterien eines Reports vorbelegen

In einem früheren Beitrag habe ich ja schon demonstriert, wie man einen Report in Dynamics AX per Code aufruft, und diesem dabei einen Query übergibt. Der folgende Code erweitert diesen Aufruf um die Druckeinstellungen (printJobSettings), sodaß es nun möglich ist, einen Report vollautomatisch mit vorgegebenen Filterkriterien und definierten Druckeinstellungen aus X++ heraus aufzurufen.


 
 
 

Stapelverarbeitung für einen Bericht/Report verhindern

Um bei einem Bericht/Report, der direkt über ein MenuItem (d.h. nicht über eine von RunBaseReport abgeleitete Klasse) aufgerufen wird, die Möglichkeit zu unterbinden, diesen im Stapel auszuführen, muss nur die Methode canGoBatch des Reports überschrieben werden.

Diese Methode scheint allerdings nicht in den überschreibbaren Methoden auf, also muss man einfach eine solche wie folgt anlegen:

public boolean canGoBatch()
{
    ;
    return false;
}

Wird der Report über eine Klasse aufgerufen, dann muss in dieser die gleichnamige Methode entsprechend überschrieben werden.

Getestet in Dynamics AX 2009


 
 
 

Tipp: Label eines Extended Datatypes (EDT) ermitteln

Manchmal braucht man einfach nur den Label eines Extended Datatypes (EDT), um diesen zum Beispiel als Bestandteil einer Info-/Fehlermeldung ausgeben zu können:

new SysDictType(extendedtypenum(costingversionid)).label()

 
 
 

Eingeblendete Dimensionen in Reports abfragen

In manchen Berichten ist es möglich, Lagerdimensionen über den Dialog ein- bzw. auszublenden. Um im Bericht selbst abzufragen, ob eine bestimmte Dimension eingeblendet wurde, kann man den unten stehenden Code verwenden, der eine Instanz der Klasse InventReport_OnHand voraussetzt. Dieser fragt zum Beispiel ab, ob die Palettennummer eingeblendet wurde,

if(InventReport_OnHand.parmInventDimParm().WMSPalletIdFlag))
   // ...do something

 


 
 
 

Whitepaper zum Globalen Adressbuch

Das Globale Adressbuch ist wohl eine der grossen Neuerungen in Dynamics AX 2009. Und vor allem Umsteiger von früheren Versionen haben dazu die eine oder andere Frage. So manche dieser Fragen beantwortet Microsoft im Whitepaper zum Globalen Adressbuch, mit Sicherheit aber nicht alle ;-)

Denoch sollte sich jeder Entwickler und Berater dieses Whitepaper einmal zu Gemüte führen, so findet man zum Beispiel zum Thema Importieren von Debitoren/Kreditoren bzw. Geschäftsbeziehungen via Excel eine ausführliche Beschreibung.

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=052e9dda-667b-42bd-bd13-f8c5aa1bc0f0


 
 
 

Shared Projects vergleichen

Vor kurzem stand ich wieder einmal vor der Thematik, den Inhalt zweier Projekte vergleichen zu müssen. Da ich bis dato keine Möglichkeit gefunden habe, dies mit Bordmitteln von Dynamics AX durchzuführen, habe ich mir einen Job geschrieben, der genau dies tut.

Der Job verwendet die temporäre Tabelle TmpAOTImport aus dem Standard, in die zuerst mit Hilfe der Klasse TreeNodeTraverser sämtliche AOT-Objekte der beiden Projekte in jeweils einer Tabelleninstanz geschrieben wird. Danach werden diese beiden Instanzen über einen simplen SELECT miteinander verglichen.

Über den Standard-Enum SysMergeDirection (einen besseren habe ich nicht gefunden) kann man definieren, was ausgegeben werden soll.

Beim Wert NONE werden Objekte beider Projekte ausgegeben, die im jeweils anderen nicht vorkommen.
Beim Wert TEXTA werden alle Objekte aufgelistet, die im Projekt1, nicht aber im Projekt2 vorkommen und vice versa beim Wert TEXTB.

Das Ergebnis des Jobs ist in allen Fällen ein einfaches Infolog.

Beispiel: Die folgenden beiden Projekte gilt es zu vergleichen

Projects


 
 
Seiten 1 2 3 4 5 » 

 

 
 
 
Beiträge des aktuellen Monats
Mai 2010
MoDiMiDoFrSaSo
 12
3456789
10111213141516
17181920212223
24252627282930
31 
 
© 2006-2025 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu