Dynamics AX Blog - Beiträge vom April 2019

Momentan angezeigt werden nur Beiträge vom »April 2019«. Filter entfernen
Schau auf dich, bleib zu Hause
 

Entnahme einer reservierten Auftragsposition per Code

Um die bereits reservierten Mengen einer Auftragspositionen per Code zu entnehmen, kann man Code wie den folgenden verwenden:

static void JobPick(Args _args)
{
    Query inventTransQuery;
    QueryRun qr;
    QueryBuildDataSource qbds;
    InventTrans inventTrans;
    InventDim inventDim;
    InventTransOrigin inventTransOrigin;
    TmpInventTransWMS tmpInventTransWMS;
    InventTransWMS_Pick inventTransWMS_Pick;
    SalesLine salesLine = SalesLine::findInventTransId('014417');
    
    inventTransQuery = new Query();
    qbds = inventTransQuery.addDataSource(tableNum(InventTrans));
    qbds.addRange(fieldNum(InventTrans, StatusIssue)).value(queryValue(StatusIssue::ReservPhysical));
    qbds = qbds.addDataSource(tableNum(InventTransOrigin));
    qbds.relations(true);
    qbds.joinMode(JoinMode::InnerJoin);
    qbds.addRange(fieldNum(InventTransOrigin, InventTransId)).value(salesLine.InventTransId);
    
    qr = new QueryRun(inventTransQuery);
    while (qr.next())
    {
        inventTrans = qr.get(tableNum(InventTrans));
        inventTransOrigin = qr.get(tableNum(InventTransOrigin));
        
        // Set inventory dimensions for picking
        inventDim = inventDim::find(inventTrans.InventDimId);
        inventDim.wmslocationId = "06A01R3S1B";   
        inventDim.LicensePlateId = "LP_61_A0001";
        inventDim = inventDim::findOrCreate(inventDim);
        
        tmpInventTransWMS.clear();
        
        inventTransWMS_Pick = InventTransWMS_Pick::newStandard(tmpInventTransWMS, inventTransQuery);
        
        tmpInventTransWMS.initFromInventTrans(InventTrans);
        tmpInventTransWMS.initFromInventTransOrigin(inventTransOrigin);
        tmpInventTransWMS.initFromInventDim(inventDim);
        
        tmpInventTransWMS.InventQty = -inventTrans.Qty;
        
        inventTransWMS_Pick.writeTmpInventTransWMS(tmpInventTransWMS);
        inventTransWMS_Pick.updateInvent();    
    }
}

 
 
 

Impact Analysis Tool scheitert beim Löschen der Baseline-Datenbank

Kürzlich hatte ich beim Ausführen des Impact Analysis Tools das Problem, daß der Installer scheinbar beim Löschen der Baseline-Datenbank ein Problem hatte und an dieser Stelle stoppte/hängen blieb. Eintrag im Eventlog war übrigens keiner vorhanden.

Screenshot Impact Analysis Tool

Interessanterweise konnte ich auch die Eigenschaften der Baseline-Datenbank über das SQL Server Management Studio nicht einsehen, dabei trat folgender Fehler auf:

Property Size is not available for Database '[AX2012R3_Baseline]'. This property may not exist for this object, or may not be retrievable due to insufficient access rights.  (Microsoft.SqlServer.Smo)

Ich habe also vermutet, daß die Datenbank in irgendeiner Art & Weise defekt ist. Deshalb habe ich einfach versucht, über AXUTIL die Baseline-Datenbank zu re-initalisieren, was meinen Fehler schließlich auch behoben hat:

axutil schema /DB:AX2012R3_Baseline /S:MyServerName

Nach dem Initialisieren der Datenbank konnte ich das Impact Analysis Tool problemlos starten.


 
 
 

SysOperation-Framework: Eigene Nutzungsdaten pro MenuItem

Stellt euch vor, ihr habt eine über das SysOperation-Framework abgebildete Funktion die an unterschiedlichen Stellen über im System aufgerufen werden kann, und ihr wollt sicherstellen, daß sich diese Aufrufe nicht die gleichen Nutzungsdaten teilen.

In einem solchen Fall könnte man zwei (oder mehrere) MenuItems erstellen und die Methode lastValueDesignName() des Controllers wie folgt übersteuern. Dadurch werden je MenuItem eigene Nutzungdaten abgelegt.

protected IdentifierName lastValueDesignName()
{
    IdentifierName ret;

    ret = super();

    if (this.parmArgs() && this.parmArgs().menuItemName())
    {
        ret = this.parmArgs().menuItemName();   
    }

    return ret;
}

 
 
 

 

 
 
 
Beiträge des aktuellen Monats
April 2019
MoDiMiDoFrSaSo
1234567
891011121314
15161718192021
22232425262728
2930 
 
© 2006-2020 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