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
April 2024
MoDiMiDoFrSaSo
1234567
891011121314
15161718192021
22232425262728
2930 
 
© 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