Data Types and Methods in AL

The following data types are available as part of the AL Language. Each data type has various methods that support it. For more information about a data type and its methods, select a link in the table.

Type Description
Any This data type can be substituted by any other data type.
BigInteger Stores very large whole numbers that range from -9,223,372,036,854,775,807 to 9,223,372,036,854,775,807.
BigText Handles large text documents.
Blob Is a complex data type. Variables of this data type differ from normal numeric and string variables in that BLOBs have a variable length. The maximum size of a BLOB(binary large object) is 2 GB.
Boolean Indicates true or false.
Byte Stores a single, 8-bit character as a value in the range 0 to 255. You can easily convert this data type from a number to a character and vice versa. This means you can use mathematical operators on Byte variables.
Char Stores a single, 16-bit character as a value in the range 0 to 65535. You can convert this data type from a number to a character and vice versa. This means you can use mathematical operators on Char variables.
Code Denotes a special type of string that is converted to uppercase and removes any trailing or leading spaces.
Codeunit Is a container for AL code that you can use from other application objects.
CompanyProperty Provides language support for company properties.
Database Provides access to common database functionality.
DataTransfer A structure building bulk transfer of data between tables.
Date Denotes a date ranging from January 1, 1753 to December 31, 9999.
DateFormula Represents a date formula that has the same capabilities as an ordinary input string for the CALCDATE Method (Date). The DateFormula data type is used to provide multilanguage capabilities to the CALCDATE Method (Date).
DateTime Denotes a date and time ranging from January 1, 1753, 00:00:00.000 to December 31, 9999, 23:59:59.999. An undefined or blank DateTime is specified by 0DT.
Debugger Enables communication with a debugger.
Decimal Denotes decimal numbers ranging from -999,999,999,999,999.99 to +999,999,999,999,999.99.
Dialog Represents a dialog window.
Dictionary Represents an unordered collection of keys and values. The Dictionary data type is optimized for fast lookup of values.
DotNet Represents an unspecified .NET type.
Duration Represents the difference between two DateTimes. This value can be negative. It is stored as a 64-bit integer. The integer value is the number of milliseconds during the duration.
Enum Represents the text content of an element or attribute.
ErrorInfo Provides a structure for grouping information about an error.
FieldRef Identifies a field in a table and gives you access to this field.
File Represents a file.
FilterPageBuilder Stores filter configurations for a filter page. A filter page is a dynamic page type that contains one or more filter controls that enables users to set filters on fields of the underlying tables.
Guid Represents a 16 byte binary data type. This data type is used for the global identification of objects, programs, records, and so on. The important property of a GUID is that each value is globally unique. The value is generated by an algorithm, developed by Microsoft, which assures this uniqueness.
HttpClient Provides a data type for sending HTTP requests and receiving HTTP responses from a resource identified by a URI.
HttpContent Represents an HTTP entity body and content headers.
HttpHeaders Is a collection of headers and their values.
HttpRequestMessage Represents an HTTP request message.
HttpResponseMessage Represents an HTTP response message including the status code and data.
InStream Is a generic stream object that you can use to read from or write to files and BLOBs. You can define the internal structure of a stream as a flat stream of bytes. You can assign one stream to another. Reading from and writing to a stream occurs sequentially.
Integer Stores whole numbers with values that range from -2,147,483,647 to 2,147,483,647.
IsolatedStorage Provides data isolation for extensions.
JsonArray Is a container for any well-formed JSON array. A default JsonArray contains an empty JSON array.
JsonObject Is a container for any well-formed JSON object. A default JsonObject contains an empty JSON object.
JsonToken Is a container for any well-formed JSON data. A default JsonToken object contains the JSON value of NULL.
JsonValue Is a container for any well-formed fundamental JSON value. A default JsonValue is set to the JSON value of NULL.
KeyRef Identifies a key in a table and the fields in this key.
Label Denotes a string constant that can be optionally translated into multiple languages.
List Represents a strongly typed list of ordered objects that can be accessed by index. Contrary to the Array data type, a List is unbounded, such that its dimension does not need to be specified upon declaration.
Media Encapsulates media files, such as image .jpg and .png files, in application database tables. The Media data type can be used as a table field data type, but cannot be used as a variable or parameter. The Media data type enables you to import a media file to the application database and reference the file from records, making it possible to display the media file in the client user interface. You can also export media from the database to files and streams.
MediaSet Encapsulates media, such as images, in application database tables.
ModuleDependencyInfo Provides information about a dependent module.
ModuleInfo Represents information about an application consumable from AL.
NavApp Provides information about a NavApp.
None Is used implicitly when a method does not return a value.
Notification Provides a programmatic way to send non-intrusive information to the user interface (UI) in the Business Central Web client.
NumberSequence Is a complex data type for creating and managing number sequences in the database.
Option Denotes an option value. In the code snippet below, you can see how the Option data type is declared.
OutStream Is a generic stream object that you can use to write to files and BLOBs.
Page Contains a number of simpler elements called controls. Controls are used to display information to the user or receive information from the user.
ProductName An application can have a full name, marketing name, and short name. The PRODUCTNAME functions enable you to retrieve these name variations.
Query Enables you to retrieve data from multiple tables and combine the data in single dataset.
Record Is a complex data type.
RecordId Contains the table number and the primary key of a table.
RecordRef References a record in a table.
Report Is used to display, print, or process information from a database.
RequestPage Is a page that is run before the report starts to execute. Request pages enable end-users to specify options and filters for a report.
SecretText Denotes a secret text string, which is non-debuggable.
Session Represents a Microsoft Dynamics Business Central session.
SessionInformation Is a complex data type for exposing Session information into AL.
SessionSettings Is a complex data type for passing user personalization settings for a client session as an object. The object contains properties that correspond to the fields in the system table 2000000073 User Personalization, including: App ID, Company, Language ID, Locale ID, Profile ID, Scope, and Time Zone. You can use the AL methods of the SessionSettings data type to get, set, and send the user personalization settings for the current client session.
System Is a complex data type.
TaskScheduler Is a complex data type for creating and managing tasks in the task scheduler, which runs codeunits at scheduled times.
TestAction Represents a test action on a page.
TestField Represents a testable field on a page.
TestFilter Represents a test filter on a page.
TestFilterField Represents the type of a field filter in a test filter on a page or on a request page.
TestPage Represents a variable type that can be used to test Page Application Objects.
TestPart Represents a variable type that can be used to test Page Application Objects of type Part.
TestRequestPage Stores test request pages. A test request page part is a logical representation of a request page on a report. A test request page does not display a user interface (UI). The subtype of a test request page is the report whose request page you want to test.
Text Denotes a text string.
TextBuilder Represents a lighweight wrapper for the .Net implementation of StringBuilder.
TextConst Denotes a multi-language string constant.
Time Denotes a time ranging from 00:00:00.000 to 23:59:59.999. An undefined or blank time is specified by 0T.
Variant Represents an AL variable object. The AL variant data type can contain many AL data types.
Version Represents a version matching the format: Major.Minor.Build.Revision .
WebServiceActionContext Represents an AL WebServiceActionContext.
XmlAttribute Represents an XML attribute.
XmlAttributeCollection Represents a collection of XML attributes.
XmlCData Represents a CData section.
XmlComment Represents an XML comment.
XmlDeclaration Represents an XML declaration.
XmlDocument Represents an XML document.
XmlDocumentType Represents an XML document type.
XmlElement Represents an XML element.
XmlNamespaceManager Represents a namespace manager that can be used to resolve, add and remove namespaces to a collection. It also provides scope management for these namespaces.
XmlNameTable Represents a table of atomized string objects.
XmlNode Represents a XML node which can either be for instance an XML attribute, an XML element or a XML document.
XmlNodeList Represents a collection of XML nodes.
Xmlport XmlPorts are used to export or import data between an external source and a Microsoft Dynamics Business Central database.
XmlProcessingInstruction Represents a processing instruction, which XML defines to keep processor-specific information in the text of the document.
XmlReadOptions Represents the options configuring how XML is loaded from a data source.
XmlText Represents the text content of an element or attribute.
XmlWriteOptions Represents the options configuring how XML is saved.
Action Represents the action that the user took on the page.
AuditCategory Represents an audit category for IfX audit telemetry.
ClientType Represents the type of the client executing the operation.
CommitBehavior Specifies whether commit is allowed within the scope of the method.
DataClassification Sets the classification of the data in the table or field.
DataScope Identifies the scope of stored data in the isolated storage.
DefaultLayout The default layout to be used by a report.
ErrorBehavior Specifies whether errors will be collected within the scope of the method.
ErrorType Represents the type of error.
ExecutionContext Represents the context in which a session is running. In certain scenarios, for example during upgrade, the system will run a session in a special context for a limited time.
ExecutionMode The execution mode of the current session.
FieldClass Represents the type of a field class.
FieldType Represents the type of a table field.
InherentPermissionsScope The different types of scope that the InherentPermissions attribute can apply to.
IsolationLevel The isolation level applied for this record.
NotificationScope Specifies the context in which the notification appears in the client.
ObjectType The different types of objects.
PageBackgroundTaskErrorLevel Specifies how an error in the page background task appears in the client.
PermissionObjectType The different types of objects that can have different permissions assigned.
PromptMode Specifies the current mode of a PromptDialog page.
ReportFormat Specifies the format of the report.
ReportLayoutType Represents the type of a report layout.
SecurityFilter Specifies how security filters are applied to the record.
SecurityOperationResult Represents security audit operation result.
TableConnectionType Use variables of this data type to specify the type of connection to an external database.
TelemetryScope Represents the emission scope of the telemetry signal.
TestPermissions Specifies a value that can be used to determine which permission sets are used on tests that are run by test codunits or test functions.
TextEncoding Represents a file encoding.
TransactionModel Represents a test transaction model.
TransactionType Represents a transaction type.
Verbosity Represents the security level of events.
WebServiceActionResultCode Represents a web service action status code.

See Also

Get Started with AL
Developing Extensions