Creating default dimensions for vendor or customer through X++:
Created a class called “FindOrCreateDefaultDimension” and then utilizing its method “findDefaultDimension” whenever default dimension is required.
Suppose I’ve 6 dimension out of which 3 are custom dimension and rest are standard ones. For custom dimension am including ‘FinancialDimensionTag’ Table in to the while loop. As shown below
Static DimensionDefault findDefaultDimension(str_Department, Str _BusinessType,str _AnchorTenant, Str _Category,str_SiteId, str _costcenter, str _purpose)
{
Struct struct = new Struct();
container defDimensionCon;
DimensionDefault dimensionDefault;
DimensionAttributeSetItem dimAttrSetItem;
DimensionAttribute dimAttribute;
int i;
//Loop for required dimensions
while selectName, BackingEntityType fromdimAttribute
where dimAttribute.BackingEntityType == tableNum(DimAttributeOMBusinessUnit) ||
dimAttribute.BackingEntityType == tableNum(DimAttributeOMDepartment) ||
dimAttribute.BackingEntityType == tableNum(DimAttributeOMCostCenter) ||
dimAttribute.BackingEntityType == tableNum(DimensionFinancialTag) &&
dimAttribute.Type != DimensionAttributeType::DynamicAccount
join dimAttrSetItem
wheredimAttrSetItem.DimensionAttribute == dimAttribute.RecId &&
dimAttrSetItem.DimensionAttributeSet == DimensionCache::getDimensionAttributeSetForLedger()
{
//Add the Dimension name and display value to struct
if (dimAttribute.BackingEntityType == tableNum(DimAttributeOMDepartment))
{
struct.add(dimAttribute.Name, _Department);
}
if (dimAttribute.BackingEntityType == tableNum(DimensionFinancialTag) && dimAttribute.Name == 'BusinessType')
{
struct.add(dimAttribute.Name, _BusinessType);
}
if (dimAttribute.BackingEntityType == tableNum(DimensionFinancialTag) && dimAttribute.Name == 'AnchorTenant')
{
struct.add(dimAttribute.Name, _AnchorTenant);
}
if (dimAttribute.BackingEntityType == tableNum(DimensionFinancialTag) && dimAttribute.Name == 'Category')
{
struct.add(dimAttribute.Name, _Category);
}
if (dimAttribute.BackingEntityType == tableNum(DimensionFinancialTag) && dimAttribute.Name == 'SiteId')
{
struct.add(dimAttribute.Name, _SiteId);
}
if (dimAttribute.BackingEntityType == tableNum(DimAttributeOMCostCenter))
{
struct.add(dimAttribute.Name, _costcenter);
}
}
defDimensionCon += struct.fields();
for (i = 1; i <= struct.fields(); i++)
{
defDimensionCon += struct.fieldName(i);
defDimensionCon += struct.valueIndex(i);
}
if(struct.fields())
{
//Get the DimensionAttributeValueSet table’s Record ID
dimensionDefault = AxdDimensionUtil::getDimensionAttributeValueSetId(defDimensionCon);
}
return dimensionDefault;
}
And now am going to use the above created class to update the vendor financial dimensions.
static voidUpdating_VendorDefaultDimension(Args _args)
{
VendTable vt;
;
vt = VendTable::find("VT-1003", true);
vt.DefaultDimension = FindOrCreateDefaultDimension::findDefaultDimension("00000063", "", "", "", "", "OU_4612", "");
vt.update();
}
Running the above job will results in to:
Happy Daxing J Stay tuned for more…

Like
Report
*This post is locked for comments