Dynamics AX Blog - Dynamics AX 2012 - Microsoft Dynamics AX (Axapta) - Seite 33

Momentan angezeigt werden nur Beiträge der Kategorie »Microsoft Dynamics AX (Axapta)« Filter entfernen

In den letzten Jahren, in denen ich mich fast hauptsächlich mit der Entwicklung im Umfeld von Microsoft Dynamics AX (vormals Axapta) beschäftigt habe, ist das eine oder andere Code-Fragment entstanden, von dem ich mir vorstellen könnte, daß es auch für andere AX-Entwickler ganz nützlich sein könnte. Aber auch Tips und Tricks zu dem mächtigen ERP-System werde ich in dieser Kategorie präsentieren.

RSS-Feed dieser Kategorie
Momentan angezeigt werden nur Beiträge, welche für die Dynamics AX-Version »Dynamics AX 2012« relevant sind. Filter entfernen

RSS-Feed dieser Version

Abfragen der aktiven Lagerungsdimensionen

Um für einen Artikel über X++ zu ermitteln, ob eine bestimmte Lagerungsdimension verwendet wird, gibt es abhängig von der verwendeten AX-Version verschiedene Ansätze. In den beiden Beispielen wird ermittelt, ob die Dimension Palettennummer aktiv ist:

Dynamics AX 2009

inventDimSetup::find(inventTable::find(_itemId).DimGroupId,
    fieldnum(InventDim, wmsPalletId)).Active

Dynamics AX 2012

EcoResDimensionGroupSetup::isInventoryDimensionActiveForItem(
    _itemId, fieldNum(InventDim, wmsPalletId))

 
 

Funktion num2expstr

Vor kurzem lief mir eine Fehlermeldung in Dynamics AX über den Weg die vermuten lies, daß in einer Tabelle Werte mit mehr Nachkommastellen/Dezimalstellen gespeichert waren, als Dynamics AX dort erwartet hätte. Leider sieht man über den Table-Browser solche Nachkommastellen oft nicht, deshalb musste ich mir mit einem Job und der Funktion num2expstr helfen, letztere zeigt die Werte detailierter als z.B. der Table-Browser an.

static void num2expstrTest(Args _args)
{
    ledgerTrans ledgerTrans;
   
    while select ledgerTrans 
    {
        info(strFmt("%1  %2", num2expstr(ledgerTrans.AmountMST),
                              ledgerTrans.AmountMST));
    }
}

 


 
 

AX 2012: Relations, Surrogate Foreign Keys

Mit dem Release von Dynamics AX 2012 konfrontiert Microsoft den erfahrenen AX-Entwickler mit zahlreichen Neuerungen. Einige davon betreffen das Herstellen von Beziehungen (Relations) zwischen Tabellen.

Hatte man in AX 2009 noch die Möglichkeit, die Relations auf einem Extended Datatyp (EDT) festzulegen, so muss dies nun direkt auf den Tabellen erfolgen. Ausserdem sind die Tabellen nun meist so aufgebaut, daß Relations über die sogenannten Surrogate Foreign Keys erfolgen.
 
Als Surrogate Foreign Key bezeichnet man ein einzelnes Feld, über das sich ein Datensatz eindeutig identifizieren lässt. In vielen Datenbanksystemen ist dies eine vom System generierte Nummer die in der jeweiligen Benutzeroberfläche oft gar nicht angezeigt wird, in AX wäre dies beispielsweise die RecId. Schon in früheren Versionen von Dynamics AX wurde dieses Feld dazu verwendet, Beziehungen zwischen Tabellen herzustellen, mit Dynamics AX 2012 sollen sämtliche Relations über die RecId abgebildet werden.


 
 

AX 2012: Eigene Lookups mit Hilfe der Klasse SysLookupMultiSelectCtrl erstellen

In AX 2012 gibt es über die Klasse SysLookupMultiSelectCtrl eine neue Möglichkeit, um bei einem Formularfeld, welches weder an eine DataSource noch an einen Extended Datatyp gebunden ist, dem Benutzer ein Lookup-Formular anzubieten.

Diese Klasse hat gegenüber der Klasse SysTableLookup, die es schon in Dynamics AX 2009 gegeben hat, sowohl einige Vorteile aber auch ein paar Nachteile:

Vorteile

  • Aufruf aus der init-Methode eines Formulares aus möglich (d.h. es muss die lookup-Methode des jeweiligen Feldes nicht überschrieben werden)
  • Mehrfachauswahl von Werten ist möglich

Nachteile

  • Es können keine (Display-)Methoden in den Lookup eingebunden werden
  • Man muss den Lookup verwenden um einen Wert auszuwählen, eine "freie" Eingabe ist nicht möglich

 
 

Eigenes Lookup-Formular mit Hilfe der Klasse SysTableLookup gestalten

Ab und an kommt man als Entwickler in die Verlegenheit, ein Formularfeld, welches weder an eine Datenquelle (DataSource) oder einen Extended Datatyp gebunden ist, um ein Lookup-Formular zu erweitern. Dafür stellt Dynamics AX die Klasse SysTableLookup zur Seite, die man in die lookup-Methode des jeweiligen Feldes einbinden kann.

Hier ein einfaches Beispiel unter Verwendung eines Queries, bei dem prinzipiell ein Lookup auf die Kundengruppen möglich sein soll, aber nur bestimmte angezeigt werden sollen. Diese Einschränkung kann über sysQuery::findOrCreateRange abgebildet werden.

Das Beispiel funktioniert übrigens sowohl in Dynamics AX 2009 als auch AX 2012.

public void lookup()
{
    sysTableLookup sysTableLookup;
    query query;
   
    super();

    query = new query();
    query.addDataSource(tableNum(custGroup));
   
    sysQuery::findOrCreateRange(query.dataSourceTable(tableNum(custGroup)), fieldNum(custGroup, name)).value("*inter*");
   
    sysTableLookup = sysTableLookup::newParameters(tableNum(custGroup), this);
    sysTableLookup.parmQuery(query);
    sysTableLookup.addLookupfield(fieldNum(custGroup, custGroup));
    sysTableLookup.addLookupfield(fieldNum(custGroup, name));
    sysTableLookup.performFormLookup();
}

 
 

Windows 7: Als anderer Benutzer ausführen

Als Entwickler muss ich Dynamics AX immer wieder mal mit einem anderen Windows-Login starten, als dem eigenen. Deshalb habe ich in Windows 7 die Option Als anderer Benutzer ausführen im Kontext-Menü schmerzlich vermisst und statt dessen  immer Batch-Dateien dafür verwendet.

Über einen Blog-Eintrag bin ich aber auf einen wertvollen Tip gestossen: Wenn man die [SHIFT]-Taste hält, während man über die rechte Maustaste das Kontext-Menü einer Applikation aufruft, steht die Option Als anderer Benutzer ausführen wieder zur Verfügung.

Als anderer Benutzer ausführen


 
 

AX 2012: Einen Bericht mit den SQL Reporting Services erstellen

Mit der Version Dynamics AX 2012 halten die SQL Reporting Services (SSRS) nun endgültig Einzug im Leben eines jeden AX-Entwicklers. Zeit also, sich mit diesem Thema etwas intensiver zu beschäftigen. Die Ergebnisse meiner ersten Gehversuche mit den SSRS präsentiere ich Euch nun in diesem Beitrag.

Szenario: Es soll ein Bericht erstellt werden, bei welchem der Umsatz pro Verkaufsgruppe ausgewertet werden kann.

 

Schritt 1: Erstellen eines Queries in Dynamics AX

Ich gehe davon aus, daß der geneigte Leser schon einmal einen Query erstellt hat, deshalb werde ich darauf nur sehr oberflächlich eingehen.

Basis-Tabellen meines Queries sind die Tabellen
  • CustInvoiceTrans
  • CustInvoiceJour
  • CommissionSalesGroup

Die Tabelle CustInvoiceTrans wird per InnerJoin mit der CustInvoiceJour über die im Screenshot gezeigten Felder verknüpft, die Tabelle CommissionSalesGroup wird per OuterJoin über das Feld SalesGroup verknüpft.

  Query

Seit AX 2012 muss die Eigenschaft Dynamic der Fields-Gruppe aller beteiligten Tabellen entsprechend gesetzt werden, im einfachsten Fall wird diese auf Yes gesetzt, um im Visual Studio später alle Felder der Tabellen verwenden zu können.


 
 
Seiten « 1 ... 30 31 32 33 34 35 36 ... 38 » 

 

 
 
 
Beiträge des aktuellen Monats
Mai 2024
MoDiMiDoFrSaSo
 12345
6789101112
13141516171819
20212223242526
2728293031 
 
© 2006-2024 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