Today I found two problems in the function”Change Global Dimensions” (available on “General Ledger Setup” Page) who let an general update of all table containing field about those global dimensions.
Roberto Steffaneti wrote a how to use here. Very simple.
Though there is two major problem with this function in NAV 2018 Microsoft code describe under (second have been corrected since in Business Central). The problem resulting in table status staying on “incomplete” even after a rerun.
- 1- The Microsoft code first search on all tables metadata for fields containing dimension informations.
After what the update execution get the field reference on each table for each of global dimension modified and make the change. However, you can have make some specific table with only one field relation to dimension. In this case the update don’t work and you got “Incomplete” table update with no errors informations or incomprehensible message if manually executed.
Go to table 483, in function “GetFieldRefValues” add the following conditions to avoid the “GlobalDimFieldRef.VALUE” if there is no field reference.
Then in codeunit 483, in function “ChangeDimsOnRecord” add the following conditions to avoid the field update if there is no reference
- 2- Microsoft developpers made a check on every record modification to verify if there is no global dimension change process running in order to avoid user modification conflict with this process.
Problem is that a dimension update can trigger a modify event on table, in wich another table is updated. Again, you got “Incomplete” table update with no errors informations or incomprehensible message if manually executed (there is no more this problem on business central)
Go to Codeunit 484 “Block Table Ops Subscriber”, in the function “BlockOperationIfChangeInProgress”
Simply add this line to the condition
IF (ChangeGlobalDimLogEntry.Status = ChangeGlobalDimLogEntry.Status::”In Progress”)