If someone of you know C# or other object oriented languages in general, you know also that those languages have access modifiers. Access modifiers are keywords used to specify the declared accessibility of a member or a type.
With Dynamics 365 Business Central Wave 2 release, this feature will appear also on the AL language.
A table object can have an Access level with the following values:
The access modifier can be specified by setting the Access property to one of the above values.
Regarding fields, you can now declare that a field in a table or a tableextension object has an Access level with the following values:
As an example, here I’ve defined a table with a field with Access = Internal (visible only from the code inside my extension):
If you try to access this field from another extension, Visual Studio Code gives you an error immediately.
The same occours if you change the field access for example to Local (visible only inside the object that defines this field):
Now, if inside your extension you have a code that references this field, you’ll receive an error:
As said before, Access property can be set also in a tableextension’s field:
Nice thing, useful for example to avoid third parties that uses your extension to use reserved fields or tables (that you can now set as Access = Internal).
What about codeunits?
You can specify the Access property to a codeunit too (same values as for the table object):
UPDATE: also for procedures there is the Access modifier property as follows (this is a function declared as Internal):