Run a test to check the source data, create a new analysis view for an account the customer said is reporting wrong, have the compression set as None, this will create a one-to-one entry, you should find that the all data is correct if you have an unmodifed system.
However the only way there would be a difference is if the data is not correct, and the G/L Entry Table has values in GD1 and GD2 but the Dimension Ledger Entry table does not support the line data, or visa versa.
As you say that there is a Difference when comparing Global Dimensions in the Analysis View and the Dimension Filters on the G/L Accounts, you will need to check the data has not been corrupted by a custom modifications, imported or take-on data not being validated correctly to create the dimension data, check this by writing a report on the G/L Entry table, add some code to do the following, for each entry check the lines data matches the Ledger Entry Dimension data.
C/AL Globals:
GLSetup - Record - General Ledger Setup
GD1 - Record - Ledger Entry Dimension
GD2 - Record - Ledger Entry Dimension
EntryOK - Boolean
G/L Entry - OnPreDataItem()[code]
GLSetup.GET;
GLSetup.TESTFIELD(“Global Dimension 1 Code”);
GLSetup.TESTFIELD(“Global Dimension 2 Code”);
GD1.RESET;
GD1.SETRANGE(“Table ID”,DATABASE::“G/L Entry”);
GD2.RESET;
GD2.SETRANGE(“Table ID”,DATABASE::“G/L Entry”);[/code]
G/L Entry - OnAfterGetRecord()[code]
GD1.SETRANGE(“Entry No.”,“Entry No.”);
GD1.SETRANGE(“Dimension Code”,GLSetup.“Global Dimension 1 Code”);
GD2.SETRANGE(“Entry No.”,“Entry No.”);
GD2.SETRANGE(“Dimension Code”,GLSetup.“Global Dimension 2 Code”);
IF GD1.FINDFIRST THEN
EntryOK := (“Global Dimension 1 Code” = GD1.“Dimension Value Code”)
ELSE
EntryOK := (“Global Dimension 1 Code” = ‘’);
IF EntryOK THEN BEGIN
GD2.SETRANGE(“Entry No.”,“Entry No.”);
GD2.SETRANGE(“Dimension Code”,GLSetup.“Global Dimension 2 Code”);
IF GD2.FINDFIRST THEN
EntryOK := (“Global Dimension 2 Code” = GD2.“Dimension Value Code”)
ELSE
EntryOK := (“Global Dimension 2 Code” = ‘’);
end;
IF EntryOK THEN
CurrReport.SKIP;[/code]
The code is untested but you should only have entries on the report with dimension errors.
David