Saturday, July 6, 2013

Store Dimension Attribute Value

static void XXXX(Args _args)
{
    DimensionAttribute dimAttr;
    DimensionAttributeValue dimAttrValue;
    Name dimName;
    Name dimValue;
    Common                          common;
    DictTable                       dictTable;
    Map dimSpec;
    dimName = "Department";
    dimValue = "025";
   
     dimSpec =
        DimensionDefaultingEngine::createEmptyDimensionSpecifiers();
   
    dimAttr = DimensionAttribute::findByName(dimName);
   
    dictTable = new DictTable(dimAttr.BackingEntityType);
    common = dictTable.makeRecord();
  
    select firstonly common where common.(dimAttr.ValueAttribute) == dimValue;
    if (common)
    {
        dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndEntityInst(
            dimAttr.RecId, common.(dimAttr.KeyAttribute),
            false, false);
       
        info(strFmt("%1", common.(dimAttr.ValueAttribute)));
    }
   
}

Find or Create Attribute Value
    select firstonly
            dimensionAttributeValue
        where
            dimensionAttributeValue.DimensionAttribute == _dimensionAttribute
            && dimensionAttributeValue.EntityInstance == _entityInstance
            && dimensionAttributeValue.IsDeleted == false;
    // Create value if specified and not currently existing
    if (!dimensionAttributeValue && _createIfNecessary)
    {
        ttsbegin;
        dimensionAttributeValue.DimensionAttribute = _dimensionAttribute;
        dimensionAttributeValue.EntityInstance = _entityInstance;
        dimensionAttributeValue.insert();
        dimensionAttributeValue.selectForUpdate(_forUpdate);
        ttscommit;
    }

1 comment: