Standard Dynamics AX contains numerous temporary tables, which are used by the application and could be used in custom modifications too. Although new temporary tables could also be easily created using AOT, sometimes it is not effective. One of the cases could be when the temporary table is very similar or exactly the same as an existing "real" one. The goal of this recipe is to demonstrate an approach to how standard non-temporary tables could be used as temporary.
As an example, we will use the vendor table to insert and display a couple of temporary records without affecting actual data.
In AOT, create a new class called VendTableTmp with the following code:
class VendTableTmp { } server static void main(Args _args) { VendTable vendTable; ; vendTable.setTmp(); vendTable.AccountNum = '1000'; vendTable.Name = 'Vendor 1'; vendTable.PartyId = '1'; vendTable.doInsert(); vendTable.clear(); vendTable.AccountNum = '1002'; vendTable.Name = 'Vendor 2'; vendTable.PartyId = '2'; vendTable.doInsert(); while select vendTable { info(strfmt( "%1 - %2", vendTable.AccountNum, vendTable.Name)); } }
Run the class to see results:
The principle of this recipe is in the setTmp()
method. It is available on all tables, and it declares the current table instance to behave as a temporary table in the current scope. So in this recipe, we first call setTmp()
on the vendTable
table to make it temporary in the scope of this method. That means any data manipulations will be lost once the execution of this method is over and actual table content will not be affected.
Next, we insert couple of test records. Here, we use doInsert()
to bypass any validation rules that are not required in this recipe.
The last thing to do is to check for newly created records by listing the vendTable
table. We can see that although the table contains many actual records, only the ones which we have inserted here are listed.