AX 2012: Nützliche Funktionen rund um das Thema Finanzdimensionen

Wenn man in AX beispielsweise Finanzdimensionen aus einer externen Quelle verarbeiten soll, dann können die beiden folgenden Methoden möglicherweise hilfreich sein.

Die Erste Methode namens existDimension() prüft ob es die übergebene, benannte Dimension in AX überhaupt gibt und ob der übergebene Dimensionswert ebenfalls gültig ist.

boolean existDimension(str 255 _dimensionName, str 255 _dimensionValue)
{
    boolean isValid = false;
    DimensionAttribute DimensionAttribute;
    DimensionAttributeValue DimensionAttributeValue;
       
    DimensionAttribute = DimensionAttribute::findByName(_dimensionName);           
       
    if(DimensionAttribute)
    {
        DimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(DimensionAttribute, _dimensionValue);
           
        if(DimensionAttributeValue)
        {
            isValid = true;   
        }
        else
        {
            isValid = checkFailed(strFmt("'%1' für Dimension '%2' nicht gefunden.", _dimensionValue, _dimensionName));       
        }
    }           
    else
    {
        isValid = checkFailed(strFmt("Dimension '%1' unbekannt.", _dimensionName));   
    }
    return isValid;
}

Beispielaufruf: existDimension("Costcenter", "3100");

Die Zweite Methode namens existDimensionCombination() prüft, ob die Kombination des übergebenen Hauptkontos und des übergebenen Dimensionswertes gültig ist.

boolean existDimensionCombination(str 255 _mainAccount, str 255 _dimensionName, str 255_dimensionValue)
{
    boolean isValid = false;
    FinancialDimensionValidationService FinancialDimensionValidationService;
    ledgerAccountValidationContract ledgerAccountValidationContract;
    ledgerAccountContract ledgerAccountContract;
    dimensionAttributeValueContract dimensionAttributeValueContract;
      
    FinancialDimensionValidationService = new FinancialDimensionValidationService();

    ledgerAccountValidationContract = new LedgerAccountValidationContract();
    ledgerAccountContract = new LedgerAccountContract();
    dimensionAttributeValueContract = new DimensionAttributeValueContract();
    ledgerAccountContract.parmMainAccount(_mainAccount);
    ledgerAccountContract.parmValues(new List(Types::Class));
    dimensionAttributeValueContract.parmName(_dimensionName);
    dimensionAttributeValueContract.parmValue(_dimensionValue);
    ledgerAccountContract.parmValues().addEnd(dimensionAttributeValueContract);
    ledgerAccountValidationContract.parmLedgerAccount(ledgerAccountContract);
       
    isValid = FinancialDimensionValidationService.validateLedgerAccount(ledgerAccountValidationContract);   
       
    if( !isValid)
    {
        error(strFmt("Ungültige Kombination: %1 - %2: %3", _mainAccount, _dimensionName, _dimensionValue));   
    }
      
    return isValid;
}

Beispielaufruf: existDimensionCombination("60000", "Costcenter", "3100");

In der realen AX-Entwickler-Welt wird eine solche Prüfung vermutlich etwas komplexer werden und wahrscheinlich auch eine Kombination beider Methoden notwendig sein.

Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012

Kommentar hinzufügen
 
 

 

Dies ist ein Beitrag aus der Serie »Dynamics AX 2012 - Finanzdimensionen«

In Dynamics AX 2012 hat sich die Handhabung von Finanzdimensionen stark verändert. Und zwar sowohl auf der Oberfläche als auch das dahinterliegende Datenmodell. Wo früher noch ein Feld - meist mit dem Namen Dimension - vom Typ Array in einer Tabelle zu finden war, so findet man nun stattdessen ein von RecId abgeleitetes Feld namens DefaultDimension (o.ä.).

In dieser Serie möchte ich speziell auf diese Änderungen eingehen und das eine oder andere Stück Code präsentieren.

Alle Beiträge dieser Serie anzeigen

RSS-Feed dieser Blogserie


 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 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