Dynamics AX Blog - Dynamics AX 2009 - Beiträge vom September 2009

RSS-Feed dieser Version
Fehlerhafte str2con Funktion unter AX 2009
17.09.2009Microsoft Dynamics AX (Axapta)
Vor fast zwei Jahren habe ich schon einmal über die Funktion/Methode str2con und deren Unzulänglichkeiten in älteren Versionen von Dynamixs AX geschrieben. Leider musste ich vor kurzem feststellen, daß diese Funktion in AX 2009 auch nicht so zuverlässig ist, wie ich sie mir wünschen würde. Sind nämlich im zu zerteilenden String rein numerische Werte enthalten, die größer oder gleich 2^31 (=2147483648) sind, kann AX diese Werte nicht mehr korrekt verarbeiten. Nachstehend ein Job, der dieses Fehlverhalten demonstriert: static void str2conBug(Args _args)
{ container con; str myStr; int i; ; myStr += "Dynamics" + ";"; myStr += "Ax 2009" + ";"; myStr += "str2con" + ";"; myStr += "does" + ";"; myStr += "not work with" + ";"; myStr += "numeric values greater" + ";"; myStr += "than" + ";"; myStr += "2 ^ 31." + ";"; myStr += "Example:" + ";"; myStr += "2147483648" + ";"; // does not work myStr += "(=2^31)" + ";"; myStr += " " + ";"; myStr += "Example:" + ";"; myStr += "5432167890" + ";"; // does not work myStr += "(>2^31)"; con = str2con(myStr, ";"); for(i=1;i<=conLen(con);i++) { info(conPeek(con, i)); } } Mir blieb also nichts anderes übrig, als mir einen Ersatz für die Funktion str2con zu schreiben: |
SELECT-Statements in Verbindung mit Maps
09.09.2009Microsoft Dynamics AX (Axapta)
Wie man Maps verwenden kann, ist u.a. in der MSDN beschrieben, wie man allerdings Maps in Verbindung mit SELECT-Statements verwendet, steht auch dort nicht beschrieben. Deshalb im folgenden ein kurzes Beispiel unter Verwendung der Map bankAccountMap. static void selectFromMap(Args _args) { bankAccountMap bankAccountMap; custBankAccount custBankAccount; vendBankAccount vendBankAccount; ; while select bankAccountMap { info(bankAccountMap.AccountNum); // Does never occur } // select records from custBankAccount bankAccountMap = custBankAccount.data(); while select bankAccountMap { info(bankAccountMap.AccountNum); } // select records from vendBankAccount bankAccountMap = vendBankAccount.data(); while select bankAccountMap { info(bankAccountMap.AccountNum); } } |
|
|
|
|
|
|
Nachstehend ein Codebeispiel, wie man in Dynamics AX 2009 per X++ ein Umlagerungsjournal erstellen und buchen kann.
Mit der einen oder anderen Anpassung sollte es auch möglich sein, Journale anderer Typen auf ähnliche Art & Weise zu erstellen.