Find below the complete call stack
(S)\Classes\LedgerPostingMessageLog\logCheckFailed,24,
(S)\Classes\LedgerPostingMessageLog\logCheckFailedTableIdRecId,24,
(S)\Classes\LedgerVoucherTransObject\check,76,
(S)\Classes\LedgerVoucherTransObject\checkData,37,
(S)\Classes\LedgerVoucherObject\checkTransactions,21,
(S)\Classes\LedgerVoucherObject\check,137,
(S)\Classes\LedgerVoucher\check,18,
(S)\Classes\LedgerVoucher\post,29,
(S)\Classes\LedgerVoucherPost\end,10,
(S)\Classes\ProdUpdHistoricalCost\run,90,
(S)\Classes\ProdTableType\runHistoricalCost,8,
(S)\Classes\ProdStatusType\runHistoricalCost,38,
(S)\Classes\ProdMultiHistoricalCost\run,23,
(S)\Classes\RunBaseMultiParm\runOnServerInternal,31,
(C)\Classes\RunBaseMultiParm\runOnServer,8,
(C)\Classes\ProdMultiHistoricalCost\main,12,
(C)\Classes\FormFunctionButtonControl\Clicked,0
If you want to know exact lines of code, responsible to throw error, it’s here as below
\Classes\LedgerVoucherTransObject\check >> Line Number 79 (Almost, based on version, we are on 6.3.1000.309 which is AX 2012 R3 CU8)
X++ code for error
if (generalJournalAccountEntry.LedgerDimension == 0)
{
ok = ledgerPostingMessageCollection.logCheckFailedTableIdRecId(
sourceTableId,
sourceRecId,
strFmt("@SYS24816", generalJournalAccountEntry.PostingType));
}