Hi,
I'm adding custom field Worker in Cash Advance form. When updating this Worker field, I want the same value reflecting on Worker financial dimension value:

Following code works when selected Worker is not empty:
[ExtensionOf(TableStr(TrvCashAdvance))]
final class TrvCashAdvance_Extension
{
public void modifiedField(fieldId _fieldId)
{
next modifiedField(_fieldId);
switch (_fieldId)
{
case(fieldnum(TrvCashAdvance, Worker)):
this.updateDefaultDimension();
break;
}
}
private void updateDefaultDimension()
{
HcmPersonnelNumberId hcmPersonnelNumberId;
DimensionAttributeValueSetStorage dimStorage = new DimensionAttributeValueSetStorage();
DimensionAttribute dimAttribute;
DimensionAttributeValue dimAttributeValue;
DimensionDefault defaultDimension;
#define.Worker('Worker')
hcmPersonnelNumberId = this.Worker;
defaultDimension = this.DefaultDimension;
ttsBegin;
dimStorage = DimensionAttributeValueSetStorage::find(defaultDimension);
dimAttribute = DimensionAttribute::findByName(#Worker);
dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttribute, hcmPersonnelNumberId, true, true);
dimStorage.addItem(dimAttributeValue);
// Dimension modified or updated including Worker as well.
defaultDimension = dimStorage.save();
this.DefaultDimension = defaultDimension;
ttsCommit;
}
}
Because financial dimensions are allowed to be set empty when keyed in manually, I want Worker financial dimension set to empty when Worker field is set to empty.
However, with current codes, I got following error "Unable to return DimensionAttributeValue record for Dimension Worker with value <blank> as no record exists in table HcmWorker through view DimAttributeHcmWorker.".
It's understandable that the error came from DimensionAttributeValue::findByDimensionAttributeAndValue() method, but is there any workaround to set the Worker financial dimension value empty?
Thank you.