Eine einzelne Finanzdimension als bearbeitbares Feld einbinden

Wie man in Dynamics AX 2012 einen Datensatz um die Finanzdimensionen erweitert, ist im Internet an mehreren Stellen hinlänglich beschrieben. Was aber, wenn man bei einem solchen Datzensatz eine einzelne Dimension nicht über den über das Framework eingebundene Register bearbeiten möchte, sondern diese an einer anderen Stelle im Formular - beispielsweise im Grid - einbinden möchte?

In einem solchen Fall kann evtl. die folgende edit()-Methode helfen. In meinem Beispiel wird die Dimension Kostenstelle mit Hilfe einer solchen Methode eingebunden.

public edit DimensionValue editDimensionCostCenter(boolean _set, DimensionValue _costCenter)
{
    DimensionValue costCenter;
    DimensionValue oldCostCenter;
    DefaultDimensionView DefaultDimensionView;
    DimensionAttribute DimensionAttribute;
    dimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;
    DimensionDefault dimensionDefault;
    #define.CostCenter("CostCenter")
 
    if(_set)
    {
        // Get old value
        select firstOnly DisplayValue
        from DefaultDimensionView
        where DefaultDimensionView.Name == #CostCenter
            && DefaultDimensionView.DefaultDimension == this.DefaultDimension;
 
        oldCostCenter = DefaultDimensionView.DisplayValue;
 
        dimensionAttributeValueSetStorage = DimensionAttributeValueSetStorage::find(this.DefaultDimension);
 
        // Remove old value
        DimensionAttribute = DimensionAttribute::findByName(#CostCenter);
        dimensionAttributeValueSetStorage.removeDimensionAttributeValue(DimensionAttributeValue::findByDimensionAttributeAndValue(DimensionAttribute, oldCostCenter).RecId);
 
        // Add new value
        if(_costCenter != "")
        {
            DimensionAttribute = DimensionAttribute::findByName(#CostCenter);
            if( !DimensionAttributeValue::findByDimensionAttributeAndValue(DimensionAttribute, _costCenter))
            {
                checkFailed("Invalid value for dimension");
                return "";   
            }
            dimensionAttributeValueSetStorage.addItem(DimensionAttributeValue::findByDimensionAttributeAndValue(DimensionAttribute, _costCenter));
        }
 
        dimensionDefault = dimensionAttributeValueSetStorage.save();
        this.DefaultDimension = dimensionDefault;
    }
 
    select firstOnly DisplayValue
    from DefaultDimensionView
    where DefaultDimensionView.Name == #CostCenter
        && DefaultDimensionView.DefaultDimension == this.DefaultDimension;
 
    costCenter = DefaultDimensionView.displayValue;
 
    return costCenter;

}

Nun muss man in seinem Formular nur noch ein StringEdit-Control einfügen und diesem die obige edit()-Methode zuweisen.

Screenshot

Wie man bei einem solchen Control sich nun noch um den Lookup und die "Details anzeigen"-Funktion kümmert, beschreiben die folgenden Beiträge:

 

 

Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
Februar 2020
MoDiMiDoFrSaSo
 12
3456789
10111213141516
17181920212223
242526272829 
 
© 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