The following job will get a DimensionAttributeValueSet record ID base on the a set of dimension values.


static void DEV_CreateDefaultDimension(Args _args)
{
    DimensionAttributeValueSetStorage   valueSetStorage = new DimensionAttributeValueSetStorage();
    DimensionDefault                    result;  
   
    int                     i;
    DimensionAttribute      dimensionAttribute;
    DimensionAttributeValue dimensionAttributeValue;
   
    // Note that "Item" is not one of the default dimension,
    // but DimensionAttributeValueSetStorage will handle it gracefully
    container               conAttr = ["Department", "ExpensePurpose", "Item"];
    container               conValue = ["00000028", "Training", "1000"];  
    str                     dimValue;            
   
    for (i = 1; i <= conLen(conAttr); i++)
    {              
        dimensionAttribute = dimensionAttribute::findByName(conPeek(conAttr,i));
       
        if (dimensionAttribute.RecId == 0)
        {
            continue;
        }
       
        dimValue = conPeek(conValue,i);
       
        if (dimValue != "")
        {
            // The last parameter is "true". A dimensionAttributeValue record will be created if not found.
            dimensionAttributeValue =
                    dimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,dimValue,false,true);
           
            // Add the dimensionAttibuteValue to the default dimension
            valueSetStorage.addItem(dimensionAttributeValue);
        }              
    }      
   
    result = valueSetStorage.save();  
}

** The above is for interest only and comes with no warranties **