AX 2012: Erstellen einer DefaultDimension mit mehreren Dimensionen
10.11.2013Microsoft Dynamics AX (Axapta)
|
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012
Dynamics AX 2012
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
|
|
|
|
|
|
Nachstehend ein Code-Beispiel, wie man eine RecId vom Typ DefaultDimension für mehrere Dimensionen generieren kann.
Im Beispiel werden die Dimension Kostenstelle mit dem Wert "10", die Dimension Abteilung mit dem Wert "IT" und die Dimension Kategorie mit dem Wert "02" zu einer DefaultDimension kombiniert.
Durch den letzten Parameter von findByDimensionAttributeAndValue() wird sichergestellt, daß fehlende Dimensionen angelegt werden (soferne möglich).
{
dimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;
dimensionAttribute dimensionAttribute;
dimensionAttributeValue dimensionAttributeValue;
dimensionDefault dimensionDefault;
dimensionAttributeValueSetStorage = new DimensionAttributeValueSetStorage();
// Kostenstelle
dimensionAttribute = dimensionAttribute::findByName('Kostenstelle');
if(dimensionAttribute)
{
dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, '10', false, true);
dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue);
}
// Abteilung
dimensionAttribute = dimensionAttribute::findByName('Abteilung');
if(dimensionAttribute)
{
dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, 'IT', false, true);
dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue);
}
// Kategorie
dimensionAttribute = dimensionAttribute::findByName('Kategorie');
if(dimensionAttribute)
{
dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, '02', false, true);
dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue);
}
dimensionDefault = dimensionAttributeValueSetStorage.save();
info(strFmt("Default dimension recId: %1", dimensionDefault));
}