[X++] Get all sizes for a product by code

When dealing with product dimensions by code, a developer can have a hard time finding the right combinations of dimensions and understanding the hardly normalized table structure behind the products in AX 2012.

I was searching for an elegant way to get all available combinations of the product dimension Size for a specific product.

The most elegant way I found was the following peace of code:

static void GetAvailableSizesForProduct(Args _args)
{
    ItemId              itemId              = "MyItem";
    EcoResProductRecId  ecoResProductRecId  = InventTable::itemProduct(itemId);
    List                listSizes;
    ListEnumerator      le;
    
    listSizes = EcoResProductVariantDimValue::newProductVariantDim_InventSizeId().getDimValues(ecoResProductRecId);
    
    le = listSizes.getEnumerator();
    while (le.moveNext())
    {
        info(le.current());
    }
}

This method has the InventTable as starting point. The method static itemProduct on InventTable returns the RecId of the product, which we need to retrieve all available sizes related to the product.
The method EcoResProductVariantDimValue::newProductVariantDim_InventSizeId() initialzes a new instance of class EcoResProductVariantDimValue telling the instance we want to work with the dimension Size and initializing all the relevant parameters and dependencies for us. Then we simply have to call getDimValues to retrieve a list with the available dimensions of type Size.