✏️ Explanatory Question
To set or override a target table field during a Data Entity import, you must create an extension of the Data Entity and override the mapEntityToDataSource method. This method runs during the “Copy data to target” step and allows you to access both the source entity record and the target table buffer, so you can write custom X++ logic to assign values before the system saves the record. Example:
// Extend the Data Entity PurchPurchaseOrderHeaderV2Entity
[ExtensionOf(tableStr(PurchPurchaseOrderHeaderV2Entity))]
final class Al0PurchPurchaseOrderHeaderV2Entity_Extension
{
// Override the mapEntityToDataSource method
// This method allows you to set/override values on the target table during DMF import
public void mapEntityToDataSource(DataEntityRuntimeContext _entityCtx,
DataEntityDataSourceRuntimeContext _dataSourceCtx)
{
// Check which data source (target table) is being processed
switch (_dataSourceCtx.name())
{
// Run this logic only when the DMF is updating PurchTable
case dataEntityDataSourceStr(PurchPurchaseOrderHeaderV2Entity, PurchTable):
// Get the current Data Entity buffer (source entity record being imported)
PurchPurchaseOrderHeaderV2Entity entityRecord = _entityCtx.getEntityRecord();
// Get the target table buffer (PurchTable) that will be written to
PurchTable purchTable = _dataSourceCtx.getBuffer();
// Set a field on the target table:
// Find agreement by reference from the entity and assign its RecId
purchTable.MatchingAgreement =
PurchAgreementHeader::findAgreementId(entityRecord.Al0PurchAgreementRef).RecId;
break;
}
// Call the base framework logic to continue standard processing
next mapEntityToDataSource(_entityCtx, _dataSourceCtx);
}
}