Hi Phuoc Dinh,
You can try following code:
//Header Creation
InventJournalTable inventJournalHeader;
inventJournalHeader.JournalNameId = '';//Default Ownership change journal name
inventJournalHeader.initFromInventJournalName(InventJournalName::find(inventJournalHeader.JournalNameId));
inventJournalHeader.JournalId = NumberSeq::newGetNum(InventParameters::numRefInventJournalId()).num();
inventJournalHeader.Description = 'Inventory ownership change';
inventJournalHeader.insert();
//Line Creation
InventJournalTrans inventJournalLine;
InventDim inventDimIssue;
InventDim inventDimReceipt;
inventJournalLine.initValue();
inventJournalLine.initFromInventJournalTable(inventJournalHeader);
inventJournalLine.LineNum = 1;//Set your logic for line number
inventJournalLine.TransDate = DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone());
inventJournalLine.ItemId = ''; Set your item id
inventJournalLine.modifiedField(fieldNum(InventJournalTrans, ItemId));
inventJournalLine.Qty = 1;//Set your Qty;
inventJournalLine.modifiedField(fieldNum(InventJournalTrans, Qty));
inventJournalLine.DefaultDimension = ;//Logic for Financial dimensions
inventDimIssue.InventSite = '';
inventDimIssue.InventLocationId = '';
inventDimIssue.InventOwnweId_RU = '';
inventDimIssue = InventDim::findOrCreate(inventDimIssue);
inventDimReceipt.data(inventDimIssue);
inventDimReceipt.InventOwnweId_RU = '';
inventDimReceipt = InventDim::findOrCreate(inventDimReceipt);
inventJournalLine.InventDimId = inventDimIssue.InventDimId;
inventJournalLine.ToInventDimId = inventDimReceipt.InventDimId;
inventJournalLine.insert();
//Post record
InventJournalCheckPost journalCheckPost = InventJournalCheckPost::newPostJournal(inventJournalHeader);
journalCheckPost.runOperation();