Below code will help to create record in JedgerJournalTable and LedgerJournalTrans in D365FO using x++.
// Header creation
ledgerJournalTable.JournalNum = NumberSeq::newGetNum(LedgerParameters::numRefJournalNum()).num();
ledgerJournalTable.initFromLedgerJournalName(ledgerJournalTrans_Buffer.JournalName);
ledgerJournalTable.insert();
ledgerJournalEngine = LedgerJournalEngine::construct(ledgerJournalTable.JournalType);
ledgerJournalEngine.ledgerJournalTable(ledgerJournalTable);
ledgerJournalEngine.newJournalActive(ledgerJournalTable);
//Line creation
ledgerJournalEngine.preCreate(ledgerJournalTrans);
ledgerJournalTrans.clear();
ledgerJournalTrans.initValue();
ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
ledgerJournalTrans.TransDate = stagingTable.TransactionDate;
ledgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans, TransDate));
ledgerJournalTrans.Voucher = stagingTable.Voucher;
ledgerJournalTrans.CurrencyCode = stagingTable.CurrencyCode;
ledgerJournalTrans.Due = stagingTable.DueDate;
ledgerJournalTrans.DocumentDate = stagingTable.DocumentDate;
ledgerJournalTrans.ExchRate = stagingTable.ExchRate;
ledgerJournalTrans.ReportingCurrencyExchRate = stagingTable.ExchRate;
ledgerJournalTrans.Txt = stagingTable.Description;
ledgerJournalTrans.AccountType = str2Enum(ledgerJournalACType,stagingTable.AccountTypeStr);//stagingTable.AccountType;
ledgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans, AccountType));
if(stagingTable.AccountTypeStr == "Ledger")
{
ledgerJournalTrans.LedgerDimension = this.generateLedgerDimension(stagingTable.AccountDisplayValue,stagingTable.BU,'',stagingTable.BranchCode,stagingTable.EmployeeCode);
}
else if(stagingTable.AccountTypeStr == "Vendor")
{
ledgerJournalTrans.LedgerDimension = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber(stagingTable.AccountDisplayValue,LedgerJournalACType::Vend);// stagingTable.Account;
ledgerJournalTrans.PostingProfile = vendParameters.PostingProfile;
}
else if(stagingTable.AccountTypeStr == "Customer")
{
ledgerJournalTrans.LedgerDimension = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber(stagingTable.AccountDisplayValue,LedgerJournalACType::Cust);// stagingTable.Account;
ledgerJournalTrans.PostingProfile = custParameters.PostingProfile;
}
else if(stagingTable.AccountTypeStr == "Bank")
{
ledgerJournalTrans.LedgerDimension = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber(stagingTable.AccountDisplayValue,LedgerJournalACType::Bank);// stagingTable.Account;
}
ledgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans, LedgerDimension));
ledgerJournalTrans.DefaultDimension = this.createDefaultDimension( stagingTable.LobCode,stagingTable.Department,stagingTable.BranchCode);;
if(stagingTable.Credit)
{
ledgerJournalTrans.AmountCurCredit = stagingTable.Credit;
ledgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans, AmountCurCredit));
}
else if(stagingTable.Debit)
{
ledgerJournalTrans.AmountCurDebit = stagingTable.Debit;
ledgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans, AmountCurDebit));
}
ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans, OffsetAccountType));
ledgerJournalTrans.insert();