Following code can be used to import data using x++ through DMF data project.
Prerequisites:
- Data entity
- Setup an import project using the entity
How it works…..
When you run the code, it prompts user to upload a file. Then it uses the pre-configured DMF import data project to import data from the file to the target entity.
class XYZCustGroupImport
{
private static DMFDefinitionGroup findDMFDefinitionGroup()
{
DMFDefinitionGroup definitionGroup;
select firstonly definitionGroup
where definitionGroup.DefinitionGroupName == 'CustGroupImport'; //DMF import data project
return definitionGroup;
}
private static DMFDefinitionGroupEntity findDMFDefinitionGroupEntity(DMFDefinitionGroup _definitionGroup)
{
DMFDefinitionGroupEntity definitionGroupEntity;
DMFEntity dmfEntity;
select firstonly RecId, Entity from definitionGroupEntity exists join dmfEntity
where definitionGroupEntity.DefinitionGroup == _definitionGroup.DefinitionGroupName
&& dmfEntity.EntityName == definitionGroupEntity.Entity
&& dmfEntity.TargetEntity == dataentityviewstr(CustCustomerGroupEntity);
if (!definitionGroupEntity)
{
throw error(strFmt("@DMF:DMFNoEntityExists", _definitionGroup.DefinitionGroupName));
}
return definitionGroupEntity;
}
private static DMFLocalFilePath applyTransforms(SharedServiceUnitFileID _uploadedStatement, DMFDefinitionGroup definitionGroup)
{
DMFDefinitionGroupEntity definitionGroupEntity = XYZCustGroupImport::findDMFDefinitionGroupEntity(definitionGroup);
DMFExecutionId executionId = DMFUtil::setupNewExecution(definitionGroup.DefinitionGroupName);
DMFDefinitionGroupExecution execution = DMFDefinitionGroupExecution::find(
definitionGroup.DefinitionGroupName,
definitionGroupEntity.Entity,
executionId,
true);
execution.IsTransformed = NoYes::No;
DMFLocalFilePath filePath = execution.applyTransforms(_uploadedStatement);
DMFExecution e = DMFExecution::find(executionId, true);
e.delete();
return filePath;
}
public static void main(Args _args)
{
SharedServiceUnitFileID fileId;
//Get the file from user
FileUploadTemporaryStorageResult result = File::GetFileFromUser() as FileUploadTemporaryStorageResult;
if (result && result.getUploadStatus())
{
fileId = result.getFileId();
DMFDefinitionGroup definitionGroup = XYZCustGroupImport::findDMFDefinitionGroup();
XYZCustGroupImport::applyTransforms(fileId, definitionGroup);
DMFDefinitionGroupEntity definitionGroupEntity = XYZCustGroupImport::findDMFDefinitionGroupEntity(definitionGroup);
DMFExecutionId executionId = DMFUtil::setupNewExecution(definitionGroup.DefinitionGroupName);
// Find execution
DMFDefinitionGroupExecution execution = DMFDefinitionGroupExecution::find(definitionGroup.DefinitionGroupName, definitionGroupEntity.Entity,
executionId, true);
execution.FilePath = fileId;
execution.IsTransformed = NoYes::Yes;
execution.update();
// Import the file via quick import DMF
DMFQuickImportExport::doPGImport(definitionGroup.DefinitionGroupName, executionId, true);
//deletes file
result.deleteResult();
}
}
}
Download source code pdf XYZCustGroupImport

Like
Report
*This post is locked for comments