Invent Movement Journal Creation and Posting

static void MovementJournalImportExcel(Args _args)
{
 InventJournalTrans inventJournalTrans;
 InventDim inventDim;
 InventJournalTable inventJournalTable;
 InventJournalCheckPost journalCheckPost;
 InventJournalId journalId;
 journalTableData journalTabledata;
 InventBatch inventBatch;
 InventBatch localInventBatch;
 NumberSeq numberSeq;
 NumberSequenceReference numberSequenceReference;
 InventSerial inventSerial;
 InventSerial localinventSerial;
 int j,countno=0,i,k;
 real Scarp;
 FilenameOpen filename;

 Sysexcelapplication excelapp=sysexcelapplication::construct();
 sysexcelworksheet excelworksheet;
 sysexcelrange excelrange;
 sysexcelcells excelcells;
 // comvariant cellvalue=new comvariant();
 ;

 // Creating Journal Header
 inventJournaltable.initValue();
 inventJournalTable.JournalNameId = 'ERecover';
 numberSeq = new NumberSeq();
 numberSequenceReference = InventParameters::numRefInventJournalId();
 numberseq = NumberSeq::newGetNum(numberSequenceReference);

 inventJournalTable.JournalId = numberseq.num();
 inventJournalTable.Description = InventJournalName::find(inventJournalTable.JournalNameId).Description;
 inventJournalTable.insert();

 excelapp.workbooks().open('C:\xx.xls');
 excelworksheet=excelapp.worksheets().itemFromNum(1);
 excelcells=excelworksheet.cells();

 // Creating Unit Numbers
 for(i=301;i<=5600;i++)
 {
 inventBatch.clear();
 inventBatch.initValue();
 inventBatch.itemId = excelcells.item(i,11).value().bStr();
 inventBatch.inventBatchId = excelcells.item(i,1).value().bStr();
 localinventBatch = InventBatch::find(inventBatch.inventBatchId,inventBatch.itemId);

 if(!localinventBatch)
 {
 inventBatch.OakSerialUnit = excelcells.item(i,2).value().bStr();
 inventBatch.insert();
 }
 }

 //Creating Appartment Numbers
 for(k=1;k<=648;k++)
 {
 inventSerial.clear();
 inventSerial.initValue();
 inventSerial.InventSerialId = excelcells.item(k,8).value().bStr();
 inventSerial.ItemId = excelcells.item(k,11).value().bStr();
 localinventSerial = InventSerial::find(inventSerial.InventSerialId,inventSerial.ItemId);

 if(!localInventSerial)
 {
 inventSerial.ProdDate = systemDateGet();
 inventSerial.insert();
 }
 }

 // Creating Journal Lines
 for(j=301;j<=5600;j++)
 {
 inventJournalTrans.clear();
 inventJournalTrans.initValue();
 inventJournalTrans.TransDate = systemDateGet();
 inventJournalTrans.LedgerAccountIdOffset = "99999";
 inventJournalTrans.JournalType = InventJournalType::Movement;
 inventJournalTrans.JournalId = inventJournalTable.JournalId;
 numberSeq = new NumberSeq();
 numberSequenceReference = InventParameters::numRefInventJournalVoucherId();
 numberseq = NumberSeq::newGetNum(numberSequenceReference);

 inventJournalTrans.Voucher = numberseq.num();
 inventJournalTrans.ItemId = excelcells.item(j,11).value().bStr();
 // defaulting branch and item name
 inventJournalTrans.CostAmount = InventTable::find(inventJournalTrans.ItemId).inventTableModuleInvent().Price;
 inventJournalTable = InventJournalTable::find(inventJournalTrans.JournalId);
 inventDim.InventLocationId = excelcells.item(j,10).value().bStr();
 inventDim.inventBatchId = excelcells.item(j,1).value().bStr();
 inventDim.inventSerialId = excelcells.item(j,8).value().bStr();
 inventJournalTrans.InventDimId = inventDim::findOrCreate(inventDim).inventDimId;
 inventJournalTrans.Qty = 1;
 inventJournalTrans.AdjustmentNotes = "Initial Data Load";
 inventJournalTrans.LineNum = j;

 inventJournalTrans.insert();
 }

 excelapp.workbooks().item(1).saved(true);
 excelapp.workbooks().close();

 // Posting Journal
 journalTableData = JournalTableData::newTable(inventJournalTable);
 journalTableData.updateBlock(JournalBlockLevel::InUse,JournalBlockLevel::None);
 if (!infolog.num(Exception::Error))
 {
 infolog.clear(0);
 journalCheckPost =
 InventjournalCheckPost::newJournalCheckPost(JournalCheckPostType::Post,InventJournalTable);
 journalCheckPost.parmAutoBlock(true);
 journalCheckPost.run();
 }
 }