Below is the CSV import format
JournalID,itemId,FromSiteId,FromWarehouse,FromLocation,FromSize,FromColor,FromConfig,FromStyle,ToSiteId,ToWarehouse,ToLocation,ToSize,ToColor,ToConfig,ToStyle,Qty,CostPrice,CostAmount,dimcustomer, dimDepartment, dimEmployee, dimLocation, dimRetailStores, dimVendor
INJ-019996,100185,2001,WH001,Stock,,White,A,KEN,2001,CW0001,Stock,,White,A,KEN,15,20,200,,,,2099-Whole,,
----------------------------------------------------------------------------------------------------------------
Below is the Dynamics AX Code
static void ADImportTransferJournal(Args _args)
{
CommaTextIO csvFile;
container readCon;
Dialog dialog;
DialogField dfFileName;
FileName fileName;
ItemId itemId;
InventJournalTable inventJournalTable;
InventJournalTrans inventJournalTrans;
InventDim frominventDim, ToinventDim;
JournalCheckPost inventJournalCheckPost;
DimensionAttributeValueSetStorage valueSetStorage = new DimensionAttributeValueSetStorage();
DimensionDefault result;
int i;
DimensionAttribute dimensionAttribute;
DimensionAttributeValue dimensionAttributeValue;
container conAttr;
container conValue, conLedgerDimension;
str dimValue;
DimensionDisplayValue dimcustomerFrom, dimDepartmentFrom, dimEmployeeFrom, dimLocationFrom, dimRetailStoresFrom, dimVendorFrom;
DimensionDisplayValue dimcustomerTo, dimDepartmentTo, dimEmployeeTo, dimLocationTo, dimRetailStoresTo, dimVendorTo;
#File
dialog = new Dialog("Pick the file");
dfFileName = dialog.addField(extendedTypeStr("FilenameOpen"));
dialog.filenameLookupFilter(['csv','*.csv']);
if (dialog.run())
{
csvFile = new CommaTextIo(dfFileName.value(), 'r');
csvFile.inFieldDelimiter(',');
readCon = csvFile.read();
while(csvFile.status() == IO_Status::OK)
{
readCon = csvFile.read();
if(readCon)
{
inventJournalTable.JournalId = conPeek(readCon,1);
itemId = conPeek(readCon,2);
inventJournalTrans.clear();
inventJournalTrans.initFromInventJournalTable(inventJournalTable);
inventJournalTrans.ItemId = itemId;
frominventDim.InventSiteId= conPeek(readCon,3);
frominventDim.InventLocationId= conPeek(readCon,4);
frominventDim.wMSLocationId = conPeek(readCon,5);
fromInventDim.InventSizeId = conPeek(readCon,6);
fromInventDim.InventColorId = conPeek(readCon,7);
fromInventDim.configId = conPeek(readCon,8);
fromInventDim.InventStyleId = conPeek(readCon,9);
ToinventDim.InventSiteId= conPeek(readCon,10);
ToinventDim.InventLocationId= conPeek(readCon,11);
ToinventDim.wMSLocationId = conPeek(readCon,12);
ToinventDim.InventSizeId = conPeek(readCon,13);
ToinventDim.InventColorId = conPeek(readCon,14);
ToinventDim.configId = conPeek(readCon,15);
ToinventDim.InventStyleId = conPeek(readCon,16);
//ToinventDim.InventLocationId = "SD";
//ToInventDim.wMSLocationId = '11_A2';
//ToInventDim.InventSizeId = '1000';
//ToInventDim.inventBatchId = 'T20/0001/1';
ToinventDim = InventDim::findOrCreate(ToinventDim);
frominventDim = InventDim::findOrCreate(frominventDim);
inventJournalTrans.InventDimId = frominventDim.inventDimId;
inventJournalTrans.initFromInventTable(InventTable::find(itemId));
inventJournalTrans.Qty = conPeek(readCon,17);
inventJournalTrans.ToInventDimId = ToinventDim.inventDimId;
//inventJournalTrans.CostAmount = InventJournalTrans.calcCostAmount(-abs(any2real(strReplace((strFmt('%1',inventJournalTrans.Qty))),',','.'))));
//inventJournalTrans.CostAmount = InventJournalTrans.calcCostAmount(inventJournalTrans.Qty);
inventJournalTrans.CostPrice = conPeek(readCon,18);
inventJournalTrans.CostAmount = conPeek(readCon,19);
dimcustomerFrom = conPeek(readCon,20);
dimDepartmentFrom = conPeek(readCon,21);
dimEmployeeFrom = conPeek(readCon,22);
dimLocationFrom = conPeek(readCon,23);
dimRetailStoresFrom = conPeek(readCon,24);
dimVendorFrom = conPeek(readCon,25);
inventJournalTrans.TransDate = str2Date(conpeek(readCon, 26), 213); //conPeek(readCon,26);
//dimcustomerTo = conPeek(readCon,26);
//dimDepartmentTo = conPeek(readCon,27);
//dimEmployeeTo = conPeek(readCon,28);
//dimLocationTo = conPeek(readCon,29);
//dimRetailStoresTo = conPeek(readCon,30);
//dimVendorTo = conPeek(readCon,31);
conAttr = ["Customer", "Department", "Employee", "Location", "RetailStores", "Vendor"];
conValue = [dimcustomerFrom, dimDepartmentFrom, dimEmployeeFrom, dimLocationFrom, dimRetailStoresFrom, dimVendorFrom];
//conLedgerDimension = ["Customer", "Department", "Employee", "Location", "RetailStores", "Vendor"];
inventJournalTrans.LedgerDimension = 0;
for (i = 1; i <= conLen(conAttr); i++)
{
dimensionAttribute = dimensionAttribute::findByName(conPeek(conAttr,i));
if (dimensionAttribute.RecId == 0)
{
continue;
}
dimValue = conPeek(conValue,i);
if (dimValue != "")
{
dimensionAttributeValue = dimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,dimValue,false,true);
valueSetStorage.addItem(dimensionAttributeValue);
}
}
result = valueSetStorage.save();
inventJournalTrans.DefaultDimension = result;
inventJournalTrans.JournalType = InventJournalType::Transfer;
inventJournalTrans.insert();
}
}
}
info("Imported Successfully");
//inventJournalCheckPost = InventJournalCheckPost::newJournalCheckPost(JournalCheckpostType::Post,inventJournalTable);
//inventJournalCheckPost.parmThrowCheckFailed(1);
//inventJournalCheckPost.parmShowInfoResult(1);
//inventJournalCheckPost.run();
}