March 19, 2015

X++ code to get Financial dimension for a purchase order in Ax 2012

static void ShowVendDefaultDimensions(Args _args)
{
    PurchTable  PurchTable;
    PurchLine PurchLine;
    DimensionAttributeValueSet      dimAttrValueSet;
    DimensionAttributeValueSetItem  dimAttrValueSetItem;
    DimensionAttributeValue         dimAttrValue;
    DimensionAttribute              dimAttr;
    Common                          dimensionValueEntity;
    ;

    // Find our supplier
    PurchLine = PurchLine::find('000093');

    // Find the dimension value set that the vendor points to (for specifying the
    // 'default' dimensions). This table is used as a sort of 'header' that the
    // value set items (DimensionAttributeValueSetItem) records belong to.
    dimAttrValueSet = DimensionAttributeValueSet::find(PurchLine.DefaultDimension);

    // Find all of the 'value set items' linked against the 'value set'
    while select dimAttrValueSetItem
        where   dimAttrValueSetItem.DimensionAttributeValueSet   == dimAttrValueSet.RecId
    {
        // Find the dimension 'value' (DimensionAttributeValue) that the set item points to.
        dimAttrValue        =      DimensionAttributeValue::find(dimAttrValueSetItem.DimensionAttributeValue);

        // Find the underlying attribute.
        dimAttr             = DimensionAttribute::find(dimAttrValue.DimensionAttribute);

        // Use the helper class to obtain a reference to the underlying entity (can be anything)
        dimensionValueEntity = DimensionDefaultingControllerBase::findBackingEntityInstance(
            curext(),
            dimAttr,
            dimAttrValue.EntityInstance);

        info(dimAttr.Name + ' ' + dimAttrValue.getValue());
    }
}

No comments:

Post a Comment